要消除由于setTimeout
(或setInterval
)在标签(窗口)不活动(焦点松散)期间导致的动画累积,我不得不使用递归回调喜欢:
function auto() {
interval = setTimeout(function() {
$('#slider').animate({left: '-=500'}, 800, function(){
auto(); // THE RECURSIVE CALLBACK
});
}, 2000);
}
auto();
现在我希望不重用#slider
的动画本身,因为我已经在之前的function animate()
中定义了它(不改变function animate
因为我必须在其他地方使用它,比如它是:
function animate(){
$('#slider').animate({left: '-=500'}, 800);
}
如何开展类似工作:
function auto() {
interval = setTimeout(function() {
animation();auto(); // THIS IS WRONG AS NOT a RECURSIVE CALLBACK - and creates animation buildup
}, 2000);
}
auto();
提前多多感谢!
答案 0 :(得分:2)
让animate
接受回调:
function animate(cb){
$('#slider').animate({left: '-=500'}, 800, cb);
}
//...
interval = setTimeout(function() {
animation(function(){
auto();
});
}, 2000);