13.12.2011, 23:25
|
Аспирант
|
|
Регистрация: 13.12.2011
Сообщений: 67
|
|
Анимация по очереди
У меня есть десяток объектов, которые надо передвинуть один за другой. Как сделать чтобы они двигались по очереди?
Если просто написано:
$('#x1').animate({top: "+=50"}, 1000);
$('#x2').animate({left: "+=50"}, 1000);
$('#x3').animate({top: "-=50"}, 1000);
то они двигаются вместе.
Пока просто ставлю паузы перед ними (перед #х1 - 1000 милисекунд, перед #х2 - 2000 милисекунд), но объектов больше 20, и если вдруг надо вставить новый объект скажем после #х2, то потом приходится перещитывать паузы для всех последующих.
Можно ли как-то сделать чтобы все шли по очереди?
|
|
13.12.2011, 23:27
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
$('#x1').animate({top: "+=50"}, 1000, function(){
$('#x2').animate({left: "+=50"}, 1000, function(){
$('#x3').animate({top: "-=50"}, 1000);
});
});
|
|
13.12.2011, 23:42
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
list= ["x1", "x2", "x3"];
var i=-1;
a= function(){
if (i == list.length-1)
return;
++i;
$("#"+list[i]).animate({left: "+=50"}, 1000, a);
};
a();
|
|
14.12.2011, 00:47
|
Аспирант
|
|
Регистрация: 13.12.2011
Сообщений: 67
|
|
Спасибо за оба варианта
Правда, как я понял в варианте trikadin каждый раз будет выполняться одно и тоже действие. Правда можно туда поставить switch(i) {case... и для каждого номер испольнять свой код испольнять.
|
|
14.12.2011, 01:14
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Можно просто расширить ф-цию...
list= [
{id: "x1", prop: "left", action: "+=50"},
{id: "x2", prop: "height", action: "-=10"},
{id: "x3", prop: "left", action: "+=10"}
];
var i=-1;
a= function(){
if (i == list.length-1)
return;
++i;
$("#"+list[i].id).animate({list[i].prop: list[i].action}, 1000, a);
};
a();
|
|
14.12.2011, 03:40
|
Аспирант
|
|
Регистрация: 13.12.2011
Сообщений: 67
|
|
Да, такой вариант значительно лучше...
А можно вопрос уже чуть в сторону: После того как я изменю параметр width (например когда маштабировал картинку), могу ли я его сбросить на дефаултный (тот который реально был у картинки) или после смены этого параметра, уже ни что не помнит исходных размеров и надо мне просто предварительно надо запоминать размеры?
|
|
14.12.2011, 08:21
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Да, надо запоминать. Как я понял, animate не предоставляет способов для возвращения к исходным параметрам.
В первой книжке моего списка есть описание ф-ций, которые позволяют сохранить состояние элемента и вернуться к ним.
|
|
|
|