2011-10-04 72 views
1

我正在嘗試構建一個腳本,以便動畫的第二部分只會在第一部分完成時纔會開始。我試圖用if語句完成此操作,並在每個循環後遞增一個變量。理論上講,只有在第一條語句通過第二條語句完成計數後纔開始。更改循環播放時Javascript的速度增量?

網址:http://alexanderdiner.com/titletest/

function anim1() { 
    if (i < cnt) { 
     $imgOne.delay(1000).animate({bottom : '-=60px'}, 1000); 
     i += 1; 
     setTimeout(function() {anim1()}, 1000); 
     console.log("The number is " + i); 
    } else { 
     cb(); 
    } 
} 

如果你看控制檯,它通過計算得太快,第二動畫越早開始,那麼它應該。無論如何減慢增量,讓第二個動畫正確執行?

+0

你知道你可以使用完整的回調jQuery動畫? – David

回答

2

animate需要放慢參數

$imgOne.delay(1000).animate({ 
    bottom : '-=60px' 
    }, 1000, function() { 
    anim1(); 
}); 
1

一個完整的回調使用回調:

var _count = 10, 
    _distance = 60; 

(function anim(){ 
    if(_count !== 0){ 
     _count-= 1; 
    } 
    $imgOne.animate({ 
     bottom:'-=' + _distance + 'px' 
    },1000,function(){ 
     anim(); 
    }); 
})(); 

演示:http://jsfiddle.net/AlienWebguy/wkgYv/(動畫改變了方向,所以你可以看到發生了什麼事情在視口中)