ActionScript - получить функцию диспетчера событий - PullRequest
0 голосов
/ 03 января 2011

в моем коде есть 2 функции, которые отправляют TweenEvent. каждая функция отправляет одну и ту же анимацию движения и добавляет одного и того же прослушивателя событий TweenEvent.MOTION_FINISH. однако функция прослушивания события должна действовать в соответствии с тем, какая функция отправила событие.

возможно ли получить функцию диспетчера событий от прослушивателя событий? я мог бы использовать флаг, чтобы сделать эту работу, если нет других элегантных решений.

public function FirstTweenAction():void
     {
     myTween = new Tween(/* tween stuff */);
     myTween.addEventListener(TweenEvent.MOTION_FINISH, myTweenEventMotionFinishHandler);
     }

public function SecondTweenAction():void
     {
     myTween = new Tween(/* tween stuff */);
     myTween.addEventListener(TweenEvent.MOTION_FINISH, myTweenEventMotionFinishHandler);
     }

private function myTweenEventMotionFinishHandler(evt:TweenEvent):void
     {
     evt.currentTarget.removeEventListener(TweenEvent.MOTION_FINISH, myTweenEventMotionFinishHandler);

     if (/* Event was fired from FirstTweenAction() */)
        trace("Dispatcher is FirstTweenAction()");
        else     
        trace("Dispatcher is SecondTweenAction()");
     }

1 Ответ

1 голос
/ 03 января 2011

Вы не можете узнать, каким методом была инициализирована анимация движения.Вместо этого создайте две переменные-члены tween-size и проверьте целевой объект события:

if (evt.target == myFirstTween) doSomething();
else doSomethingElse();

или вызовите два разных обработчика событий:

public function FirstTweenAction():void
     {
     myTween = new Tween(/* tween stuff */);
     myTween.addEventListener(TweenEvent.MOTION_FINISH, myFirstTweenEventMotionFinishHandler);
     }

public function SecondTweenAction():void
     {
     myTween = new Tween(/* tween stuff */);
     myTween.addEventListener(TweenEvent.MOTION_FINISH, mySecondTweenEventMotionFinishHandler);
     }
...