2011-01-03 3 views
0

Es gibt 2 Funktionen in meinem Code, die ein TweenEvent versenden. Jede Funktion löst dasselbe Tween aus und fügt denselben TweenEvent.MOTION_FINISH-Ereignislistener hinzu. Die Ereignisabhörfunktion muss jedoch entsprechend der Funktion funktionieren, die das Ereignis ausgelöst hat.ActionScript - Get Function Of Ereignis Dispatcher

Ist es möglich, die Funktion des Event-Dispatcher vom Event-Listener zu bekommen? Ich könnte eine Fahne benutzen, um das zu machen, wenn es keine anderen eleganten Lösungen gibt.

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

Antwort

1

Sie können nicht herausfinden, von welcher Methode das Tween initialisiert wurde. Stattdessen machen zwei Tween-Mitgliedsvariablen und überprüfen das Ziel des Ereignisobjekts:

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

oder rufen Sie zwei verschiedene Event-Handler:

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

oh ... sorry, ich schrieb meine Frage falsch. Beide Tweens haben denselben Namen. Ich habe die Frage bearbeitet. – TheDarkIn1978

+0

np, ich habe meine Antwort auch bearbeitet. – weltraumpirat

Verwandte Themen