2017-05-03 5 views
2

Also arbeite ich an einem Projekt in Adobe Animate, es ist eine interaktive Karte.ActionScript 3 EventListener und Funktion mit Parameter

Was ich versuche zu tun ist ein Popup-Einblendung, wenn ich Maus-über Schlüsselbereiche. Zum Beispiel ein Popup, das erklärt, was im Recyclingbereich in Recycling gehen kann. Da es mehrere Recyclingorte gibt, habe ich zwei Funktionen erstellt, eine, um das Popup zu verbergen, und eine andere, um sie anzuzeigen. Außerdem verwende ich einen Schalter, um zu ermitteln, an welchem ​​Recyclingort das Mouse-over-Ereignis auftritt.

zum Beispiel wird also die Show Veranstaltung wie diese ein:

function showShred(event: MouseEvent, shredNum: int): void { 
switch (shredNum) { 
    case 1: 
     TransitionManager.start(shreddingInfo_flr3_1, { 
      type: Fade, 
      direction: Transition.IN, 
      duration: 3, 
      easing: Strong.easeOut 
     }); 
     break; 
    case 2: 
     TransitionManager.start(shreddingInfo_flr3_2, { 
      type: Fade, 
      direction: Transition.IN, 
      duration: 3, 
      easing: Strong.easeOut 
     }); 
     break; 
    case 3: 
     TransitionManager.start(shreddingInfo_flr3_3, { 
      type: Fade, 
      direction: Transition.IN, 
      duration: 3, 
      easing: Strong.easeOut 
     }); 
     break; 
} 
} 

So wurde das Hinzufügen mir den Ereignis-Listener und sie sind einfach Fehler verursacht und scheinen nicht zu mögen, dass die Funktion übernimmt ein Parameter

shredBtn_Flr3_1.addEventListener(MouseEvent.MOUSE_OVER, showShred(1)); 

Ich bin ziemlich vertraut mit Actionscript 3.0 so dass jede Hilfe und Tipps sind willkommen!

Antwort

3

Fehler # 1: Event-Handler nimmt den einzigen Parameter: das Event-Objekt.

Fehler # 2: Sie sind ein Verfahren zum Ereignisse abonnieren, showShred (1) ruft die Methode sofort und gibt null, die keinen gültigen Event-Handler ist.

Ereignisobjekt enthält den Verweis auf die Quelle des Ereignisses. In Ihrem Fall können Sie es auf folgende Weise tun:

shredBtn_Flr3_1.addEventListener(MouseEvent.MOUSE_OVER, showShred); 
shredBtn_Flr3_2.addEventListener(MouseEvent.MOUSE_OVER, showShred); 
shredBtn_Flr3_3.addEventListener(MouseEvent.MOUSE_OVER, showShred); 

function showShred(e:MouseEvent): void 
{ 
    switch (e.currentTarget) 
    { 
     case shredBtn_Flr3_1: 
      fadeIn(shreddingInfo_flr3_1); 
      break; 

     case shredBtn_Flr3_2: 
      fadeIn(shreddingInfo_flr3_2); 
      break; 

     case shredBtn_Flr3_3: 
      fadeIn(shreddingInfo_flr3_3); 
      break; 
    } 
} 

function fadeIn(target:DisplayObject):void 
{ 
    TransitionManager.start(target, { 
     type: Fade, 
     direction: Transition.IN, 
     duration: 3, 
     easing: Strong.easeOut 
    }); 
}