Verarbeiten von Ereignissen

Jede Komponente sendet Ereignisse aus, wenn ein Benutzer mit ihr in Interaktion tritt. Wenn ein Benutzer zum Beispiel auf eine Schaltfläche klickt, löst die Button-Komponente das Ereignis MouseEvent.CLICK aus, und wenn ein Benutzer einen Eintrag in einer Liste auswählt, löst die List-Komponente das Ereignis Event.CHANGE aus. Ein Ereignis kann auch eintreten, wenn mit einer Komponente etwas signifikantes passiert, z. B. wenn ein Ladevorgang in einer UILoader-Instanz abgeschlossen ist. In diesem Fall würde ein Event.COMPLETE -Ereignis erzeugt werden. Zum Verarbeiten eines Ereignisses schreiben Sie ActionScript-Code, der ausgeführt wird, wenn das Ereignis eintritt.

Eine Komponente umfasst zunächst einmal die Ereignisse aller Klassen, von denen die Komponente erbt. Das bedeutet, dass alle ActionScript 3.0-UI-Komponenten Ereignisse von der UIComponent-Klasse übernehmen, da diese die Basisklasse für die ActionScript 3.0-UI-Komponenten ist. Eine Liste der Ereignisse, die von einer Komponente gesendet werden, finden Sie im Abschnitt „Ereignisse“ des Klasseneintrags der jeweiligen Komponente im ActionScript 3.0 Referenzhandbuch für Flash Professional .

Eine vollständige Erläuterung zur Verarbeitung von Ereignissen in ActionScript 3.0 finden Sie im Handbuch Programmieren mit ActionScript 3.0 .

Hintergrundinformationen zu Ereignis-Listenern

Die folgenden zentralen Punkte gelten generell für die Verarbeitung von Ereignissen für ActionScript 3.0-Komponenten:

  • Alle Ereignisse werden von einer Instanz einer Komponentenklasse ausgesendet. Die Komponenteninstanz ist dabei der Sender oder Broadcaster .

  • Sie registrieren einen Ereignis- Listener , indem Sie für die Komponenteninstanz die addEventListener() -Methode aufrufen. Die folgende Codezeile etwa fügt einen Listener für das Ereignis MouseEvent.CLICK zur Button-Instanz aButton hinzu:

    aButton.addEventListener(MouseEvent.CLICK, clickHandler);

    Der zweite Parameter der addEventListener() -Methode registriert den Namen der Funktion, clickHandler , die aufgerufen werden soll, wenn das Ereignis eintritt. Diese Funktion wird auch als Rückruffunktion bezeichnet.

  • Sie können mehrere Listener mit einer Komponenteninstanz registrieren.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
  • Sie können einen Listener mit mehreren Komponenteninstanzen registrieren.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
  • Die Ereignisprozedur wird an ein Ereignisobjekt übergeben, das Informationen zum Ereignistyp und zu der Instanz, die das Ereignis überträgt, enthält. Weitere Informationen finden Sie im Abschnitt Hintergrundinformationen zum Ereignisobjekt .

  • Der Listener bleibt aktiv, bis die Anwendung beendet wird oder bis Sie ihn mithilfe der Methode removeEventListener() explizit entfernen. Die folgende Codezeile etwa entfernt den Listener für das MouseEvent.CLICK -Ereignis zu aButton :

    aButton.removeEventListener(MouseEvent.CLICK, clickHandler);

Hintergrundinformationen zum Ereignisobjekt

Das Ereignisobjekt erbt von der Event-Klasse und verfügt über Eigenschaften, die Informationen zum eingetretenen Ereignis enthalten, darunter die Eigenschaften target und type , die wichtige Informationen zum Ereignis zur Verfügung stellen:

Eigenschaft

Beschreibung

type

Ein String, der den Ereignistyp angibt.

target

Ein Verweis auf die Komponenteninstanz, die das Ereignis per Broadcast aussendet.

Wenn ein Ereignis zusätzliche Eigenschaften aufweist, sind diese in der Klassenbeschreibung des Ereignisses im ActionScript 3.0 Referenzhandbuch für Flash Professional aufgeführt.

Das Ereignisobjekt wird automatisch erzeugt und an die Ereignisprozedurfunktion übergeben, wenn das Ereignis eintritt.

Sie können das Ereignisobjekt in der Funktion verwenden, um auf den Namen des übertragenen Ereignisses oder auf den Instanznamen der Komponente, die das Ereignis übertragen hat, zuzugreifen. Vom Instanznamen aus können Sie auf die anderen Komponenteneigenschaften zugreifen. Im folgenden Code wird beispielsweise die Eigenschaft target des Ereignisobjekts evtObj verwendet, um auf die Eigenschaft label der Instanz aButton zuzugreifen und den Wert im Bedienfeld „Ausgabe“ anzuzeigen.

import fl.controls.Button; 
import flash.events.MouseEvent; 
 
var aButton:Button = new Button(); 
aButton.label = "Submit"; 
addChild(aButton); 
aButton.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(evtObj:MouseEvent){ 
trace("The " + evtObj.target.label + " button was clicked"); 
}

Rechtliche Hinweise | Online-Datenschutzrichtlinie