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