PDA

Просмотр полной версии : Последовательное выполнение функций


Acrossfy
12.03.2009, 01:35
Здравствуйте. Есть две функции на RollOut`е. Оба события касательно одного клипа. TweenLite плавно перемещает объект на координаты (60, 60), а prod.onEnterFrame начинает крутить объект вокруг этой самой точки (60, 60).
Задача в том, чтобы функция prod.onEnterFrame не запускалась раньше, чем приблизительно закончится анимация TweenLite, ибо в противном случае(ниже код), объект мгновенно "прибивается" к точке (60, 60), и никакого плавного движения от TweenLite нет.
prod.onRollOut = function() {
TweenLite.to(prod, 0.75, {_x:60, _y:60, ease:Back.easeOut});
prod.onEnterFrame = function(){
angle+=5;
var rad=angle*radStep;
prod._x=60 + (Math.cos(rad)*xdist)/2;
prod._y=60 + (Math.sin(rad)*ydist)/2;
};
};
Пробовал через хепл понять, чем могут помочь мне функции setInterval и setTimeOut, однако попытки применить хотя бы каким-нибудь любым результатом не увенчались.
Заранее благодарен за любую помощь и предложения по данному вопросу.

cleptoman
12.03.2009, 01:51
не работал с ТвинЛайт, но, полагаю аналоги событий onMotionFinished должны быть

Acrossfy
12.03.2009, 02:56
Нет, подобного там к сожалению нет.

cleptoman
12.03.2009, 03:13
тогда 2 варианта развития событий:
1) в топку твинлайт
2) сетИнтервал

iflamberg
12.03.2009, 12:13
не знаю, как в AS2, но в AS3 версии TweenLite в параметрах можно передать onComplete:functionName или, там, onStart:functionName.
Уверен в AS2 тоже должно быть такое. Смотрите.

MANN
12.03.2009, 18:15
prod.onRollOut = function() {
TweenLite.to(prod, 0.75, {_x:60, _y:60, ease:Back.easeOut});
prod.onEnterFrame = function(){
angle = 5
if (prod._x = 60 && prod._y = 60) {
prod._rotation+=angle;
}
};
};

?

Acrossfy
12.03.2009, 22:30
MANN, у меня не кручение вокруг оси, а элипсоидоное движение вокруг одной точки, как колесо обозрения, и куча переменных, так что ротэйшн тут не в тему)
iflamberg, спасибо, что подсказал. Да на АS2 есть onComplete. Он и выручил.