2013-12-09 106 views
0

Code回調動畫做

我需要幫助做回調裏面do_animations所有animate方法完成之後。對於一個animate我可以撥打電話promisedone功能。我嘗試使用$.Callbacs,但我不知道如何從fire方法承諾對象。

function random_num(a, b) { 
    return Math.floor(Math.random() * (b - a + 1)) + a; 
} 

function do_animations() { 
    var n = random_num(1, 5); 
    for (var i = 0; i < n; i++) { 
     var width = random_num(-50, 50); 
     $('#rec').animate({'left': '+=' + width + 'px'}, 300); 
    } 
} 

$(document).ready(function(){ 
    do_animations(); 
}); 

最好的解決辦法是

do_animations().done(function(){ ... }); 
+1

*「關於與你寫必須說明具體問題的代碼問題的問題 - 並在問題本身中包含有效的代碼以再現它 - **請參閱http://SSCCE.org獲取指導。「* –

回答

0

使用承諾():

DEMO

function do_animations() { 
    var n = random_num(1, 5), 
     $rec = $('#rec'); 
    for (var i = 0; i < n; i++) { 
     var width = random_num(-50, 50); 
     $rec.animate({'left': '+=' + width + 'px'}, 300); 
    } 
    return $rec.promise(); 
} 

$(document).ready(function(){ 
    do_animations().done(function(){ alert("All animations done!") }); 
}); 
+0

這看起來非常棒。你認爲這將是很難改變多個對象動畫? – yield

+0

不,你不應該有任何問題,但取決於什麼是多個目標元素和你如何處理它們 –

+0

例如,animate會涉及#rec和#ring對象。也許我可以做一些數組並且在它上面調用promise? – yield