Grundlagen der EreignisverarbeitungFlash 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 BegriffeIn der folgenden Referenzliste sind wichtige Begriffe aufgeführt, die Ihnen beim Schreiben von Routinen zur Ereignisverarbeitung häufig begegnen:
|
|