2011-08-03 208 views
1

我试图在每组动画的开头添加一个延迟。动画工作正常,但是当我添加.delay(5000)之前.animate什么都不起作用。动画之间的延迟

$(document).ready(function(){ 

    -->add .delay here <--- 

    $("#hand").animate({left:'-=300px'},1500); 
    $("#hand").animate({left:'+=300px'},1000); 

    -->add .delay here <--- 

    $("#hand").animate({left:'-=300px'},1500 ); 
    $("#hand").animate({left:'+=300px'},1000); 

    $("#hand").animate({left:'-=300px'},1500 ); 
    $("#hand").animate({left:'+=300px'},1000); 

    }); 

这里是否有一组代码用于相同的功能?我需要它来无限动画。

回答

0

必须 可以使用链接的动画/延迟要求 - 例如:

$("#hand").animate({left:'-=300px'},1500) 
      .delay(5000) 
      .animate({left:'+=300px'},1500); 

注意,animate()调用本身是无阻塞的,所以你已经在delay()调用,以适应该或相反,将代码移至完成处理程序。 看到这个working JSFiddle example

为了使这个运行“永远”你可以把它包装成setInterval()

setInterval(function() { 
    $("#hand").animate({ left: '-=300px'}, 1500) 
       .delay(5000) 
       .animate({left: '+=300px'}, 1000); 
}, 10000); 
+1

它实际上[未经链工作](http://jsfiddle.net/MnFfa/),但当然链接的是更好。 – user113716

+0

-1因为帕特里克是正确的;链接很方便但重复,非链式调用'animate'排队就好了。 –

+0

了解并修复了 – BrokenGlass

1

你可以做一个递归函数调用,使动画无限循环。

function recursive_animation() { 
    $("#hand").delay(3000) 
     .animate({left:'-=300px'},1500) 
     .animate({left:'+=300px'},1000, recursive_animation); 
} 

recursive_animation(); 

实施例:http://jsfiddle.net/j3LLe/

+0

有了这个解决方案,有一天,你会来__溢出_;) – Sebi