[jQuery] Animatie vertraagt

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
Tweakers,

Een aantal dagen zit ik nu al met het volgende probleem.
Ik heb met jQuery een animatie gemaakt waarbij objecten van links naar rechts door het beeld bewegen.

Zodra deze aan de rechterkant uit het beeld gaat word deze terug gezet.
Dit werkt allemaal prima, echter zit ik met één probleem.

Het script word pas afgespeelt 20 sec. nadat de website geladen is.
De oorzaak hiervan kan ik niet achterhalen.

Eerst dacht ik dat het aan mijn delay lag, maar volgens mij is dat niet de oorzaak.
Op het eerste object ('.object' + i waar i = 1) zit namelijk geen delay, als ik dit goed heb?!

Ik maak gebruik van de volgende code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function () {
    function links() {
        for(i = 1; i < 7; i++) {        
            $(".object" + i).delay(i*5000).animate({
                left : "+100%"
            }, 30000, 'linear', function() {
                $(this).css({
                    left : "-250px"
                });
                
                links();
            });
        }   
    }
    
    links();
});


Wellicht iemand een idee wat ik fout doe of tips hoe het beter kan?

Acties:
  • 0 Henk 'm!

  • mdietger
  • Registratie: Oktober 2007
  • Laatst online: 09-07 14:12
JavaScript:
1
2
3
4
5
6
7
8
9
$(".object" + i).delay(i*5000).animate({ 
                left : "+100%" 
            }, 30000, 'linear', function() { 
                $(this).css({ 
                    left : "-250px" 
                }); 
                 
                links(); 
            }); 

moet je vervangen door
JavaScript:
1
2
3
4
5
6
7
8
9
$(".object" + i).animate({ 
                left : "+100%" 
            }, 30000, 'linear', function() { 
                $(this).css({ 
                    left : "-250px" 
                }); 
                 
                links(); 
            }).delay(i*5000); 


Gewoon de delay van plaats veranderen dus ;)

Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
Na die aanpassing word de animatie wel sneller afgespeeld, maar zit er geen delay meer tussen de objecten.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 11-07 12:10

TheNephilim

Wtfuzzle

Je functie mag gewoon buiten de document.ready en voeg eens console.log('check'); toe in je functie... ipv check mag je ook wat anders neerzetten, maar dan kun je in je JS console gewoon zien wat er lang duurt.

Acties:
  • 0 Henk 'm!

  • mdietger
  • Registratie: Oktober 2007
  • Laatst online: 09-07 14:12
Probeer het volgende eens.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function () { 
    function links() { 
        for(i = 1; i < 7; i++) {         
            $(".object" + i).delay((i-1)*5000).animate({ 
                left : "+100%" 
            }, 30000, 'linear', function() { 
                $(this).css({ 
                    left : "-250px" 
                }); 
                 
                links(); 
            }); 
        }     
    } 
     
    links(); 
});

Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
TheNephilim schreef op woensdag 23 januari 2013 @ 18:53:
Je functie mag gewoon buiten de document.ready
Dit werkt niet. Als ik die eruit haal kan ik wachten totdat ik een ons weg maar gaat niks zich animeren haha!
De console.log heb ik toegevoegd in mijn functie.

Echter snap ik niet helemaal wat deze doet.
In mijn console bij Chrome komt check te staan en zodra de animate opnieuw begint word er een optelling gemaakt voor
code:
1
check custom_jquery.js:3
Ook dit werkt niet, heb het geprobeerd met verschillende waarde, -1, -2 & -3. Hoe hoger de waarde hoe meer objecten tegelijk animeren (logisch natuurlijk).

Really don't get it.. |:(

edit:
Heb er een jsFiddle van gemaakt
Code.
Groot.
(kleinere volledige snelheid & delay = een kleinere vertraging, apart?!)

[ Voor 10% gewijzigd door Ronnyrr op 23-01-2013 19:22 ]


Acties:
  • 0 Henk 'm!

  • mdietger
  • Registratie: Oktober 2007
  • Laatst online: 09-07 14:12
Snap eigenlijk niet goed wat het probleem is.
Kijk eens naar het volgende. Wanneer je nu start verschijnt het eerste blokje direct en ze komen allemaal aan de beurt.

http://jsfiddle.net/ThZUk/15/
Pagina: 1