Der Ereignisablauf

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

Beim Auftreten von Ereignissen löst Flash Player bzw. AIR Ereignisobjekte aus. Wenn sich das Ereignisziel nicht in der Anzeigeliste befindet, sendet Flash Player bzw. AIR das Ereignisobjekt direkt an das Ereignisziel. Beispielsweise sendet Flash Player das Fortschrittsereignisobjekt direkt an ein URLStream-Objekt. Wenn sich das Ereignisziel jedoch in der Anzeigeliste befindet, sendet Flash Player das Ereignisobjekt an die Anzeigeliste. Das Ereignisobjekt durchläuft dann die Anzeigeliste, bis das Ereignisziel erreicht ist.

Mit dem Ereignisablauf wird die Bewegung eines Ereignisobjekts innerhalb der Anzeigeliste beschrieben. Die Anzeigeliste ist in einer Hierarchie angeordnet, die als Baumstruktur bezeichnet werden kann. An oberster Stelle der Anzeigelistenhierarchie befindet sich die Bühne, ein spezieller Anzeigeobjektcontainer, der als Ausgangspunkt der Anzeigeliste dient. Die Bühne wird durch die flash.display.Stage-Klasse repräsentiert. Auf sie kann nur über ein Anzeigeobjekt zugegriffen werden. Jedes Anzeigeobjekt verfügt über eine Eigenschaft mit dem Namen stage , die sich auf die Bühne der jeweiligen Anwendung bezieht.

Wenn Flash Player oder AIR ein Ereignisobjekt für ein Ereignis im Zusammenhang mit einer Anzeigeliste auslöst, durchläuft dieses Ereignisobjekt die Hierarchie von der Bühne bis zum Zielknoten und zurück. Nach der DOM-Ereignisspezifikation ist der Zielknoten als der Knoten definiert, der das Ereignisziel repräsentiert. Anders ausgedrückt, ist der Zielknoten das Anzeigelistenobjekt, in dem das Ereignis aufgetreten ist. Wenn ein Benutzer beispielsweise auf ein Anzeigelistenobjekt mit dem Namen Untergeordneter Knoten 1 klickt, löst Flash Player bzw. AIR ein Ereignisobjekt aus und verwendet Untergeordneter Knoten 1 als Zielknoten.

Der Ereignisablauf ist konzeptionell in drei Abschnitte unterteilt. Der erste Abschnitt wird als Empfangsphase bezeichnet. Diese Phase besteht aus allen Knoten von der Bühne bis zum übergeordneten Knoten des Zielknotens. Der zweite Abschnitt ist die sogenannte Zielphase, die nur aus dem Zielknoten besteht. Der dritte Abschnitt wird Aufstiegsphase genannt. Diese besteht aus den Knoten, die vom übergeordneten Knoten des Zielknotens bis zur Bühne zurück durchlaufen werden.

Die Namen der einzelnen Phasen ergeben mehr Sinn, wenn Sie sich die Anzeigeliste als vertikale Hierarchie mit der Bühne an oberster Stelle vorstellen, wie in der folgenden Abbildung dargestellt:

Wenn ein Benutzer auf Untergeordneter Knoten 1 klickt, löst Flash Player bzw. AIR ein Ereignisobjekt aus und übergibt es an den Ereignisablauf. Wie in der folgenden Abbildung dargestellt ist, startet das Objekt bei Bühne , bewegt sich nach unten zu Übergeordneter Knoten , dann zu Untergeordneter Knoten 1 und bewegt sich dann wieder nach oben bis zu Bühne . Dabei wird Übergeordneter Knoten auf dem Weg zu Bühne erneut durchlaufen.

In diesem Beispiel umfasst die Empfangsphase Bühne und Übergeordneter Knoten während der anfänglichen Abwärtsbewegung. Die Zielphase ist der Zeitraum, in dem sich das Objekt in Untergeordneter Knoten 1 befindet. Die Aufstiegsphase umfasst Übergeordneter Knoten und Bühne , die bei der Aufwärtsbewegung zum Stammknoten durchlaufen werden.

Der Ereignisablauf trägt zu einem Ereignisverarbeitungssystem bei, das leistungsfähiger ist als die Ereignisverarbeitung, die ActionScript-Programmierern bisher zur Verfügung stand. In älteren Versionen von ActionScript gibt es keinen Ereignisablauf. Das bedeutet, dass Ereignis-Listener nur zu dem Objekt hinzugefügt werden können, mit dem ein Ereignis erzeugt wird. In ActionScript 3.0 können Sie Ereignis-Listener nicht nur dem Zielknoten, sondern auch jedem beliebigen Knoten entlang des Ereignisablaufs hinzufügen.

Die Möglichkeit, Ereignis-Listener entlang des Ereignisablaufs hinzuzufügen, ist dann hilfreich, wenn eine Benutzerschnittstellenkomponente aus mehr als einem Objekt besteht. Ein Button-Objekt enthält beispielsweise häufig ein Textobjekt mit der Schaltflächenbeschriftung. Ohne die Möglichkeit, dem Ereignisablauf Listener hinzuzufügen, müssten Sie sowohl dem Button-Objekt als auch dem Text-Objekt einen Listener hinzufügen, um sicherzustellen, dass Sie Benachrichtigungen über Mausklickereignisse für die gesamte Schaltfläche erhalten. Der Ereignisablauf ermöglicht jedoch die Definition eines einzigen Ereignis-Listeners für das Button-Objekt, mit dem Mausklickereignisse für das Text-Objekt oder für die Bereiche des Button-Objekts verarbeitet werden, die nicht durch das Text-Objekt verdeckt sind.

Nicht jedes Ereignisobjekt durchläuft jedoch alle drei Phasen des Ereignisablaufs. Einige Ereignistypen, beispielsweise enterFrame und init , werden direkt an den Zielknoten gesendet und durchlaufen weder die Empfangsphase noch die Aufstiegsphase. Die Zielobjekte anderer Ereignisse sind unter Umständen nicht Bestandteil der Anzeigeliste, z. B. Ereignisse, die an eine Instanz der Socket-Klasse gesendet werden. Diese Ereignisobjekte werden ebenfalls direkt an das Zielobjekt geleitet, ohne die Empfangsphase oder die Aufstiegsphase zu durchlaufen.

Wenn Sie das Verhalten eines bestimmten Ereignistyps ermitteln möchten, finden Sie entweder entsprechende Informationen in der API-Dokumentation oder können die Eigenschaften des jeweiligen Ereignisobjekts überprüfen. Die Überprüfung der Eigenschaften eines Ereignisobjekts wird im folgenden Abschnitt beschrieben.