jquery - 如何使用不同的计时器在同一对象上同时执行两个动画?

标签 jquery animation timer

我正在尝试一些基本动画,如下 a basic tutorial over here .

在本教程中,对象单向移动,然后返回。相当简单。

但是,我想做的是让基本动画继续进行,同时应用另一个动画。

例如,当球以 500 毫秒的速度从左向右移动时,会出现另一个动画,每 3000 毫秒发生一次,也许它会稍微上下移动。我这样做是为了创建一个不规则的图案。

我尝试做这样的事情:

(这是使用 jquery 和计时器插件)

$( "#ball1") .everyTime ( 10, function (){
    $("#ball1") .animate ({top:"60px"}, 6000 ).animate ({top:"57px" }, 6000 );
    $("#ball1") .animate ({left:"5px" }, 9000 ).animate ({left:"0px" }, 9000 );
});

还有:

$( "#ball1") .everyTime ( 10, function (){
    $("#ball1") .animate ({top:"60px"}, 6000 ).animate ({top:"57px" }, 6000 );
});

$( "#ball1") .everyTime ( 10, function (){
    $("#ball1") .animate ({left:"5px" }, 9000 ).animate ({left:"0px" }, 9000 );
}); 

在这两种情况下,似乎第一个动画完成,然后下一个动画开始......然后它循环,而不是同时。

我缺少什么或者我需要研究什么才能做到这一点?

感谢您的宝贵时间!

最佳答案

您是否尝试将queue设置为false?请参阅this answer在相关问题中。

为此,您可能还必须将第二个动画放入第一个动画(对于每个维度)的回调中,因为它们将不再排队:

$( "#ball1") .everyTime ( 10, function (){
    $("#ball1").animate ({top:"60px"}, {duration:6000, queue:false, complete:function() {
        $("#ball1").animate ({top:"57px" }, {duration:6000, queue:false} );
    }} )
    $("#ball1").animate ({left:"5px" }, {duration:9000, queue:false, complete:function() {
        $("#ball1").animate ({left:"0px" }, {duration:9000, queue:false} );
    }} )
});

实时示例 jsFiddle

更新:如果使用 jQuery 1.7,您可以 use a string作为 queue 值,从而消除了回调的需要:

$( "#ball1") .everyTime ( 10, function (){
    $("#ball1")
        .animate ({top:"60px"}, {duration:6000, queue:"top"} )
        .animate ({top:"57px" }, {duration:6000, queue:"top"} )
        .animate ({left:"5px" }, {duration:9000, queue:"left"} )
        .animate ({left:"0px" }, {duration:9000, queue:"left"} );
});

(编辑:我无法使该示例工作;也许我无法使用任意值来排队?)

关于jquery - 如何使用不同的计时器在同一对象上同时执行两个动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542609/

相关文章:

javascript - jQuery Guillotine 插件 - 在哪里设置高度和宽度

Javascript简易计时器不起作用

javascript - livequery按键事件

javascript - 如何向用户显示数千条记录,并且用户必须从 C# 中进行选择

javascript - 如何使弹出窗口仅在单击其外部的任何位置时消失

c# - 计时器增加 C# 应用程序中的内存使用

java - 在我的代码中添加一个计时器

ios - drawRect :? 之后有没有直接调用的方法

CSS 所有样式在页面加载时应用过渡

wpf - 扩展器折叠动画不起作用