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