2013-12-09 3 views
0

Codeобратный вызов после того, как все сделано оживляет

Мне нужна помощь сделать обратный вызов после того, как все animate методы внутри do_animations сделаны. За один animate я мог позвонить promise и done функции. Я пробовал использовать $.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

Например, анимация будет касаться объектов #rec и #ring. Может быть, я смогу сделать какой-то массив и назвать обещание? – yield

Смежные вопросы