Grundlagen der Ereignisverarbeitung

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Sie können sich Ereignisse (Englisch „events“) als beliebige Phänomene in SWF-Dateien vorstellen, die für Sie als Programmierer von Interesse sind. Beispielsweise unterstützen die meisten SWF-Dateien eine gewisse Interaktion mit den Benutzern. Dabei kann es sich um etwas so Einfaches wie die Reaktion auf Mausklicks oder um etwas Komplexeres wie die Eingabe und Verarbeitung von Formulardaten handeln. Jede dieser Interaktionen mit einer SWF-Datei stellt ein Ereignis dar. Ereignisse können auch ohne direkte Benutzerinteraktion auftreten, beispielsweise wenn Daten vollständig von einem Server heruntergeladen wurden oder eine angeschlossene Kamera aktiviert wurde.

In ActionScript 3.0 werden alle Ereignisse durch ein Ereignisobjekt dargestellt, das eine Instanz der Event-Klasse oder eine ihrer Unterklassen ist. In einem Ereignisobjekt werden nicht nur Informationen zu einem bestimmten Ereignis gespeichert, sondern es enthält auch Methoden, die die Bearbeitung des Ereignisobjekts vereinfachen. Wenn in Flash Player oder AIR beispielsweise ein Mausklick erkannt wird, wird ein Ereignisobjekt (eine Instanz der MouseEvent-Klasse) angelegt, um genau dieses Mausklickereignis abzubilden.

Nach dem Erstellen eines Ereignisobjekts wird dieses in Flash Player oder AIR ausgelöst . Das heißt, das Ereignisobjekt wird an das Zielobjekt für das Ereignis übergeben. Ein Objekt, das als Ziel für ein ausgelöstes Ereignisobjekt dient, wird als Ereignisziel bezeichnet. Wenn beispielsweise eine angeschlossene Kamera aktiviert wird, löst Flash Player ein Ereignisobjekt aus, das direkt an das Ereignisziel übergeben wird – in diesem Fall an das Objekt, das die Kamera repräsentiert. Wenn sich das Ereignisziel jedoch in der Anzeigeliste befindet, wird das Ereignisobjekt durch die Hierarchie der Anzeigeliste nach unten weitergeleitet, bis das Ereignisziel erreicht ist. In einigen Fällen bewegt sich das Ereignisobjekt anschließend auf demselben Weg in der Hierarchie der Anzeigeliste wieder nach oben. Dieses Durchlaufen der Hierarchie in der Anzeigeliste wird als Ereignisablauf bezeichnet.

Sie können mit dem Code auf Ereignisse „warten“, indem Sie Ereignis-Listener verwenden. Ereignis-Listener (Englisch „event listener“) sind programmierte Funktionen oder Methoden, mit denen auf bestimmte Ereignisse reagiert werden kann. Um sicherzustellen, dass ein Programm auf Ereignisse reagiert, müssen Sie dem Ereignisziel oder einem Anzeigelistenobjekt, das Bestandteil des Ereignisablaufs eines Ereignisobjekts ist, Ereignis-Listener hinzufügen.

Jeder als Ereignis-Listener erstellte Code hat die folgende Grundstruktur (Elemente in Fettdruck sind Platzhalter, die Sie je nach Zweck des Programms ersetzen):

function eventResponse(eventObject:EventType):void 
{ 
    // Actions performed in response to the event go here. 
} 
 
eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);

Dieser Code bewirkt zweierlei. Zunächst wird eine Funktion definiert. Auf diese Weise werden die Aktionen festgelegt, die als Reaktion auf das Ereignis ausgeführt werden. Dann wird die addEventListener() -Methode des Quellobjekts aufgerufen. Dabei wird die Funktion für das Quellobjekt „registriert“, damit die Aktionen der Funktion beim Eintreten des Ereignisses ausgeführt werden. Beim Eintreten des Ereignisses wird dann für das Ereignisziel die Liste aller als Ereignis-Listener registrierten Funktionen und Methoden überprüft. Danach werden alle Funktionen und Methoden aufgerufen, wobei das Ereignisobjekt als Parameter übergeben wird.

Um einen benutzerdefinierten Ereignis-Listener zu erstellen, müssen Sie den Code an vier Stellen ändern. Ändern Sie zunächst den Namen der Funktion wie gewünscht (an zwei Stellen, an denen im Code eventResponse steht). Geben Sie dann den entsprechenden Klassennamen des Ereignisobjekts an, das von dem Ereignis ausgelöst wird, für das der Listener bestimmt ist (im Code EventType ). Legen Sie die entsprechende Konstante für das jeweilige Ereignis fest (im Listing EVENT_NAME ). Zum Schluss müssen Sie die addEventListener() -Methode für das Objekt aufrufen, das das Ereignis auslöst (in diesem Code eventTarget ). Optional können Sie den Namen der als Funktionsparameter verwendeten Variablen ändern (im Code eventObject ).

Wichtige Konzepte und Begriffe

In der folgenden Referenzliste sind wichtige Begriffe aufgeführt, die Ihnen beim Schreiben von Routinen zur Ereignisverarbeitung häufig begegnen:

Bubbling
Bubbling tritt bei einigen Ereignissen ein, damit ein übergeordnetes Anzeigeobjekt auf Ereignisse reagieren kann, die von seinen untergeordneten Objekten ausgelöst wurden.

Bubbling-Phase (Aufstiegsphase)
Der Teil eines Ereignisablaufs, in dem ein Ereignis zum übergeordneten Anzeigeobjekt „aufsteigt“. Die Bubbling-Phase erfolgt nach den Erfassungs- und Zielphasen.

Erfassungsphase
Der Teil des Ereignisablaufs, in dem ein Ereignis vom allgemeinsten Ziel zum spezifischsten Zielobjekt „absteigt“. Die Erfassungsphase erfolgt vor den Ziel- und Bubbling-Phasen.

Standardverhalten
Einige Ereignisse verfügen über ein Verhalten, das normalerweise zusammen mit dem Ereignis auftritt. Dies wird als Standardverhalten bezeichnet. Wenn ein Benutzer beispielsweise Text in einem Textfeld eingibt, wird ein Texteingabeereignis ausgelöst. Das Standardverhalten für dieses Ereignis ist das Anzeigen des im Textfeld eingegebenen Zeichens. Sie können dieses Standardverhalten jedoch außer Kraft setzen (wenn beispielsweise die eingegebenen Zeichen nicht angezeigt werden sollen).

Auslösen
Das Benachrichtigen von Ereignis-Listenern, dass ein Ereignis aufgetreten ist.

Ereignis
Ein Ereignis, das für ein Objekt auftritt und über das dieses Objekt andere Objekte benachrichtigen kann.

Ereignisablauf
Wenn Ereignisse für ein Objekt in der Anzeigeliste (ein auf dem Bildschirm angezeigtes Objekt) auftreten, werden alle Objekte, die dieses Objekt enthalten, über das Ereignis benachrichtigt und benachrichtigen dann jeweils die zugehörigen Ereignis-Listener. Dieser Vorgang beginnt bei der Bühne, setzt sich durch die Anzeigeliste bis zu dem Objekt fort, für das das Ereignis aufgetreten ist, und kehrt dann wieder zur Bühne zurück. Dies wird als Ereignisablauf bezeichnet.

Ereignisobjekt
Ein Objekt, das Informationen über das Auftreten eines bestimmten Ereignisses enthält und beim Auslösen des Ereignisses an alle Listener gesendet wird.

Ereignisziel
Das Objekt, das ein Ereignis auslöst. Wenn der Benutzer beispielsweise auf eine Schaltfläche innerhalb einer Sprite-Instanz innerhalb der Bühne klickt, lösen alle diese Objekte Ereignisse aus. Das Ereignisziel ist jedoch das Objekt, bei dem das Ereignis tatsächlich aufgetreten ist – in diesem Fall die Schaltfläche, auf die geklickt wurde.

Listener
Objekte oder Funktionen, die sich selbst bei einem Objekt registriert haben, um anzuzeigen, dass sie beim Auftreten eines bestimmten Ereignisses benachrichtigt werden sollen.

Zielphase
Der Punkt im Ereignisablauf, an dem das Ereignis das spezifischste Ziel erreicht hat. Die Zielphase erfolgt zwischen der Erfassungs- und der Bubbling-Phase.