![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2009
Сообщений: 31
|
Ребята, подскажите пожалуйста. Такая проблема. Два объекта должны двигаться синхронно при помощи Tween. Но при этом движение должно повторятся. то есть, вот сработал Tween, объекты достигли определенной точки по y, и через некоторое время они должны пройти обратный путь, т.е. вернуться в свою первоначальную точку. Я решил это проделать с помощью таймера. Вот мой код:
import fl.transitions.Tween; import fl.transitions.easing.*; import fl.transitions.TweenEvent; var m:Boolean = true; var motionTimer:Timer = new Timer(7000); motionTimer.start(); motionTimer.addEventListener(TimerEvent.TIMER, motionList); function motionList(e:TimerEvent):void{ if(m==true){ vniz(); m=false; }else{ vverh(); m=true; } trace(container.y); trace(fotka.y); } function vniz(){ var fotoTween:Tween = new Tween(fotka, "y", Strong.easeOut, fotka.y, 350, 3, true); var containerTween:Tween = new Tween(container, "y", Strong.easeOut, container.y, 200, 3, true); } function vverh(){ var fotoTween2:Tween = new Tween(fotka, "y", Strong.easeOut, fotka.y, 150, 3, true); var containerTween2:Tween = new Tween(container, "y", Strong.easeOut, container.y, 0, 3, true); } Подскажите, может быть, как испаравить? Может и зацикливание как-то проще можно сделать? Или как-нибудь обоим объектам назначить один и тот же Твин, чтобы они двигались синхронно? |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
у Tween есть событие об окончании анимации, видимо это
(сам пользуюсь Tweener'ом поэтому точно не скажу)
подпишитесь на него, и при срабатывании добавляйте движение снова
__________________
low + |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 31
|
Jewelz, да, но мне же нужно, чтообы обратное движение начиналось, например, через 5 сек., а при использовании TweenEvent.MOTION_FINISH оно у меня сразу начинается.
Я попробовал и здесь таймер прикрепить, чтоб задержка была, но снова глючит у меня.var timer1:Timer = new Timer(8000); timer1.start() timer1.addEventListener(TimerEvent.TIMER, timerList); function timerList(e:TimerEvent):void{ var tween1:Tween = new Tween(mc, "y", Strong.easeInOut, mc.y, 400, 3, true); tween1.addEventListener(TweenEvent.MOTION_FINISH, tween1Fin); function tween1Fin(e:TweenEvent):void{ var timer2:Timer = new Timer(3000); var n:Number = 0; timer2.start(); timer2.addEventListener(TimerEvent.TIMER, timer2List); function timer2List(e:TimerEvent):void{ var ween2:Tween = new Tween(mc, "y", Strong.easeInOut, mc.y, 0, 3, true); timer2.removeEventListener(TimerEvent.TIMER, timer2List); } } } |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
значит у вас tween'ы съедаются gc, сделайте их не локальными переменными, а глобальными, то есть объявите вне функций
__________________
low + |
|
|||||
|
у твина есть событие типа мотион_чанже
tailTween = new Tween({i:0}, "i", Elastic.easeIn, 120, 0, 2, true); tailTween.stop(); tailTween.looping = true; tailTween.addEventListener(TweenEvent.MOTION_CHANGE, tailTweenMotionChange); } public function playTail():void { tailTween.start(); } public function stopTail():void { tailTween.stop(); } private function tailTweenMotionChange(evt:TweenEvent):void { cat.tail.rotation = tailTween.obj.i; } http://www.murmadillo.tut.su/as3/load-swf-metod.html еще можно пустой объект с одним свойством сделать и менять это свойство твином http://www.murmadillo.tut.su/html/tw...c-os-menu.html Я думаю тут прикол в чем, когда вы изменяете дисплей объекту например 'y' и нечайно сами ставите этому объкту допустим y=10; адобовский твин начинает думать что он уже не нужен и вреден для проекта и кончает жизнь самоубийством, это гарбаж коллектор его съест одним трупяком во флешке будет меньше.
__________________
Гоночка |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 31
|
Да, ребята, спасибо! По совету Jewelz вынес
за пределы функции. Теперь все работает, как надо.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|