2013-10-29 52 views
0

是否可以使用不同速度動畫同一個對象並同時開始?同一時間在相同對象上的jQuery循環動畫

function loop_horiz(direction){ 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({ left: d + '200' }, 
    4000, function() { loop_horiz(direction * (-1)) }); 
} 

function loop_vert(direction){ 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({ bottom: d + '200' }, 
    2000, function() { loop_vert(direction * (-1)) }); 
} 

loop_horiz(1); 
loop_vert(1) 
+0

你試試?你有什麼錯誤(如果有的話)? – David

+0

@GlauberRocha,它不需要'px',@David,它可以工作,但動畫是排隊的。如果我設置'queue:false',動畫將不會循環 – flaviu

回答

1

通常動畫與jQuery對象時,該動畫被添加到隊列該對象。當以前的動畫結束時,動畫開始運行。上面的代碼就是這樣做的,它是水平的,然後是垂直的。

此行爲可以被使用動畫的隊列選項(將其設置爲false)覆蓋。

function loop_horiz(direction) { 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({ 
     left: d + '200' 
    }, { 
     queue: false, 
     duration: 4000, 
     done: function() { 
      loop_horiz(direction * (-1)) 
     } 
    }); 
} 

function loop_vert(direction) { 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({  
     bottom: d + '200' 
    }, { 
     queue: false, 
     duration: 2000, 
     done: function() { 
      loop_vert(direction * (-1)) 
     } 
    }); 

} 

loop_horiz(1); 
loop_vert(1) 

另一個(醜陋的)可能性是合併的動畫,但它需要你一分爲二的水平動畫一半的長跑超過2秒。

更妙的是,隨着隊列中的字符串您可以將動畫添加到不同的隊列。 相同的代碼上面,但使用不同的隊列垂直和水平位置動畫:

function loop_horiz(direction) { 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({ 
     left: d + '200' 
    }, { 
     queue: 'horizontal', 
     duration: 4000, 
     done: function() { 
      loop_horiz(direction * (-1)) 
     } 
    }).dequeue('horizontal'); 
} 

function loop_vert(direction) { 
    var d = (direction == 1) ? '+' : '-'; 
    $('.op').animate({ 
     bottom: d + '200' 
    }, { 
     queue: 'vertical', 
     duration: 2000, 
     done: function() { 
      loop_vert(direction * (-1)) 
     } 
    }).dequeue('vertical'); 

} 

loop_horiz(1); 
loop_vert(1) 

DEMO:http://jsfiddle.net/Uewzc/1/

+0

正如我在先前的評論中迴應的,將隊列設置爲false,停止循環。 Il會嘗試分割水平動畫 – flaviu

+0

在我的小提琴中工作正常:)。試試上面的代碼。 – Tibos

+0

在我的工作太... http://jsfiddle.net/jaq316/ZL3HB/ –

相關問題