ActionScript - 获取事件调度程序的功能

时间:2011-01-03 17:21:35

标签: actionscript-3 events event-handling get dispatcher

我的代码中有两个函数可以调度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 个答案:

答案 0 :(得分:1)

您无法找到补间初始化的方法。而是创建两个补间成员变量并检查事件的目标对象:

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);
     }