Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ereignisziele sind ein wichtiger Bestandteil des Ereignismodells in Flash® Player und Adobe® AIR®. Das Ereignisziel dient als zentraler Punkt bei dem Ablauf der Ereignisse durch die Hierarchie der Anzeigeliste. Wenn ein Ereignis wie ein Mausklick oder ein Tastenanschlag eintritt, sendet Flash Player oder die AIR-Anwendung vom Root der Anzeigeliste aus ein Ereignisobjekt in den Ereignisablauf. Das Ereignisobjekt durchläuft die Anzeigeliste, bis es das Ereignisziel erreicht. An diesem Punkt angekommen, beginnt es den Rückweg durch die Anzeigeliste. Dieser Weg zum Ereignisziel und zurück ist im Prinzip in drei Phasen unterteilt: die Aufnahmephase umfasst den Weg vom Root zum letzten Knoten vor dem Ereigniszielknoten, die Zielphase umfasst nur den Ereigniszielknoten, und die Bubbling-Phase umfasst alle weiteren Knoten, auf die das Objekt auf dem Rückweg zum Root der Anzeigeliste trifft.
Im Allgemeinen besteht der einfachste Weg für eine benutzerdefinierte Klasse, die Fähigkeit zum Auslösen eines Ereignisses zu erhalten darin, die EventDispatcher-Klasse zu erweitern. Wenn dies nicht möglich ist (d. h., wenn die Klasse bereits eine andere Klasse erweitert), können Sie stattdessen die IEventDispatcher-Schnittstelle implementieren, ein EventDispatcher-Mitglied erstellen und einfache Hooks schreiben, um alle Aufrufe an einen aggregierten EventDispatcher zu leiten.
Methode | Definiert von | ||
---|---|---|---|
EventDispatcher(target:IEventDispatcher = null)
Aggregiert eine Instanz der EventDispatcher-Klasse. | EventDispatcher | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
Ereignis | Übersicht | Definiert von | ||
---|---|---|---|---|
[broadcast event] Wird ausgelöst, wenn Flash Player oder eine AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird. | EventDispatcher | |||
[broadcast event] Wird ausgelöst, wenn Flash Player- oder die AIR-Anwendung den Fokus verliert und inaktiv wird. | EventDispatcher |
EventDispatcher | () | Konstruktor |
public function EventDispatcher(target:IEventDispatcher = null)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Aggregiert eine Instanz der EventDispatcher-Klasse.
Die EventDispatcher-Klasse wird im Allgemeinen als eine Basisklasse verwendet. Die meisten Entwickler brauchen diese Konstruktorfunktion also nicht zu verwenden. Dennoch wird dieser Konstruktor von erfahrenen Entwicklern benötigt, die die IEventDispatcher-Schnittstelle implementieren. Wenn Sie nicht in der Lage sind, die EventDispatcher-Klasse zu erweitern und stattdessen die IEventDispatcher-Schnittstelle implementieren müssen, verwenden Sie diesen Konstruktor, um eine Instanz der EventDispatcher-Klasse zu aggregieren.
Parametertarget:IEventDispatcher (default = null ) — Das Zielobjekt für Ereignisse, die zum EventDispatcher-Objekt gesendet werden. Dieser Parameter wird verwendet, wenn die EventDispatcher-Instanz von einer Klasse aggregiert wird, die IEventDispatcher implementiert; dies ist notwendig, damit das enthaltene Objekt als Ziel für Ereignisse verwendet werden kann. Verwenden Sie diesen Parameter nicht in einfachen Fällen, in denen eine Klasse die EventDispatcher-Klasse erweitert.
|
addEventListener | () | Methode |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. Sie können Ereignis-Listener bei allen Knoten in der Anzeigeliste für eine bestimmte Art von Ereignis, Phase oder Priorität registrieren.
Nachdem Sie einen Ereignis-Listener erfolgreich registriert haben, können Sie seine Priorität nicht durch weitere Aufrufe von addEventListener()
ändern. Um die Priorität eines Listeners zu ändern, müssen Sie zunächst removeListener()
aufrufen. Anschließend können Sie den Listener mit der neuen Prioritätsstufe erneut aufrufen.
Nach der Registrierung des Listeners haben nachfolgende Aufrufe von addEventListener()
mit einem anderen type
- oder useCapture
-Wert eine separate Listener-Registrierung zur Folge. Wenn Sie beispielsweise zuerst einen Listener registrieren, für den useCapture
auf true
gesetzt ist, wird dieser nur während der Aufnahmephase aktiv sein. Wenn Sie addEventListener()
für dasselbe Listener-Objekt erneut aufrufen, diesmal aber useCapture
auf false
gesetzt ist, werden zwei separate Listener angelegt: einer, der während der Aufnahmephase aktiv ist und ein zweiter, der während der Ziel- und Bubbling-Phase aktiv ist.
Sie können einen Ereignis-Listener nicht nur für die Ziel- oder Bubbling-Phase registrieren. Die beiden Phasen hängen während der Registrierung immer zusammen, da Bubbling nur für übergeordnete Elemente des Zielknotens gilt.
Wenn Sie einen Ereignis-Listener nicht mehr brauchen, entfernen sie ihn, indem Sie removeEventListener()
aufrufen. Andernfalls könnte es zu Speicherproblemen kommen. Ereignis-Listener werden nicht automatisch aus dem Speicher entfernt, da der Garbage Collector den Listener nicht entfernt, solange das auslösende Objekt vorhanden ist (sofern der useWeakReference
-Parameter auf true
gesetzt ist).
Beim Kopieren einer EventDispatcher-Instanz werden zugewiesene Ereignis-Listener nicht kopiert. (Wenn ein neu angelegter Knoten einen Ereignis-Listener benötigt, müssen Sie den Listener nach dem Erstellen des Knotens zuweisen.) Wenn Sie jedoch eine EventDispatcher-Instanz verschieben, werden zugewiesene Ereignis-Listener ebenfalls verschoben.
Wenn der Ereignis-Listener bei einem Knoten registriert wird, während mit diesem Knoten ein Ereignis durchgeführt wird, so wird der Ereignis-Listener während der aktuellen Phase nicht ausgelöst, kann aber während einer späteren Phase im Ereignisablauf ausgelöst werden, etwa während der Bubbling-Phase.
Wird ein Ereignis-Listener von einem Knoten entfernt, während mit dem Knoten ein Ereignis durchgeführt wird, so wird er von den aktuellen Aktionen immer noch ausgelöst. Nachdem er entfernt worden ist, wird der Ereignis-Listener nicht wieder aufgerufen (es sei denn er wird für spätere Verarbeitungsvorgänge erneut aufgerufen).
Parameter
type:String — Der Ereignistyp.
| |
listener:Function — Die Listener-Funktion, die das Ereignis verarbeitet. Diese Funktion muss ein Ereignisobjekt als einzigen Parameter akzeptieren und darf keinen Wert zurückgeben, wie das nachfolgende Beispiel zeigt:
function(evt:Event):void Der Name der Funktion ist beliebig. | |
useCapture:Boolean (default = false ) —
Bestimmt, ob der Listener in der Erfassungsphase oder in der Ziel- und Bubbling-Phase arbeitet. Ist useCapture auf true gesetzt, so verarbeitet der Listener das Ereignis nur während der Erfassungsphase und nicht während der Ziel- oder Bubbling-Phase. Hat useCapture hingegen den Wert false , verarbeitet der Listener das Ereignis nur während der Ziel- oder Bubbling-Phase. Um auf das Ereignis in allen drei Phasen zu warten, rufen Sie addEventListener() zweimal auf; einmal ist useCapture auf true gesetzt, und beim zweiten Mal hat useCapture den Wert false .
| |
priority:int (default = 0 ) — Die Prioritätsstufe des Ereignis-Listeners. Die Priorität wird durch eine vorzeichenbehaftete 32-Bit-Ganzzahl zugewiesen. Je höher die Zahl, desto höher die Priorität. Alle Listener mit der Priorität n werden vor Listenern mit der Priorität n -1 verarbeitet. Wenn zwei oder mehr Listener die gleiche Priorität aufweisen, werden sie in der Reihenfolge verarbeitet, in der sie hinzugefügt wurden. Die Standardpriorität ist 0.
| |
useWeakReference:Boolean (default = false ) — Bestimmt, ob der Verweis auf den Listener stark oder schwach ist. Ein starker Verweis (der Standard) verhindert, dass der Listener von einem Garbage Collector entfernt wird. Ein schwacher Verweis hingegen nicht. Funktionen von Mitgliedern auf Klassenebene werden nicht vom Garbagekollektor entfernt. Daher können Sie |
Auslöser
ArgumentError — Der angegebene listener ist keine Funktion.
|
dispatchEvent | () | Methode |
public function dispatchEvent(event:Event):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sendet ein Ereignis in den Ereignisablauf. Das Ereignisziel ist das EventDispatcher-Objekt, für das die Methode dispatchEvent()
aufgerufen wird.
Parameter
event:Event — Das Ereignisobjekt, das in den Ereignisablauf integriert wird. Wenn das Ereignis erneut gesendet wird, wird automatisch ein Klon des Ereignisses erstellt. Nachdem ein Ereignis ausgelöst wurde, lässt sich seine target -Eigenschaft nicht mehr ändern, daher funktioniert ein Zurücksenden des Ereignisses nur, wenn Sie eine neue Kopie des Ereignisses erstellen.
|
Boolean — Der Wert true , wenn das Ereignis erfolgreich ausgelöst wurde. Der Wert false weist entweder auf einen Fehler hin oder auf die Tatsache, dass preventDefault() für das Ereignis aufgerufen worden ist.
|
Auslöser
Error — Das Rekursionslimit für das Auslösen von Ereignissen wurde erreicht.
|
hasEventListener | () | Methode |
public function hasEventListener(type:String):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. Dadurch können Sie bestimmen, wo ein EventDispatcher-Objekt die Verarbeitung eines Ereignistyps in der Ereignisablaufhierarchie geändert hat. Um festzustellen, ob ein bestimmter Ereignistyp einen Ereignis-Listener auslöst, verwenden Sie willTrigger()
.
Der Unterschied zwischen hasEventListener()
und willTrigger()
besteht darin, dass hasEventListener()
nur das Objekt untersucht, zu dem es gehört, während willTrigger()
den gesamten Ereignisablauf auf das im Parameter type
angegebene Ereignis untersucht.
Wird hasEventListener()
von einem LoaderInfo-Objekt aus aufgerufen, werden nur die Listener berücksichtigt, die dem Aufrufer zugänglich sind.
Parameter
type:String — Der Ereignistyp.
|
Boolean — Der Wert true , wenn ein Listener des angegebenen Typs registriert ist; andernfalls false .
|
Verwandte API-Elemente
removeEventListener | () | Methode |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Entfernt einen Listener aus dem EventDispatcher-Objekt. Wenn kein entsprechender Listener mit dem EventDispatcher-Objekt registriert ist, hat ein Aufruf dieser Methode keine Auswirkungen.
Parameter
type:String — Der Ereignistyp.
| |
listener:Function — Das zu entfernende Listener-Objekt.
| |
useCapture:Boolean (default = false ) —
Gibt an, ob der Listener für die Erfassungsphase oder die Ziel- und Bubbling-Phase registriert wurde. Wenn der Listener sowohl für die Aufnahme- als auch für die Bubbling-Phase registriert wurde, sind auch zwei Aufrufe von removeEventListener() erforderlich, um beide zu entfernen: ein Aufruf, bei dem useCapture auf true gesetzt ist, und einer, bei dem useCapture auf false gesetzt ist.
|
willTrigger | () | Methode |
public function willTrigger(type:String):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. Diese Methode liefert den Wert true
, wenn während irgendeiner Phase des Ereignisablaufs ein Ereignis-Listener aufgerufen wird, wenn ein Ereignis des angegebenen Typs für dieses EventDispatcher-Objekt oder eines seiner nachfolgenden Elemente ausgelöst wird.
Der Unterschied zwischen der hasEventListener()
- und der willTrigger()
-Methode besteht darin, dass die Methode hasEventListener()
nur das Objekt untersucht, zu dem sie gehört, während die willTrigger()
-Methode den gesamten Ereignisablauf auf das im Parameter type
angegebene Ereignis untersucht.
Wird willTrigger()
von einem LoaderInfo-Objekt aus aufgerufen, werden nur die Listener berücksichtigt, die dem Aufrufer zugänglich sind.
Parameter
type:String — Der Ereignistyp.
|
Boolean — Der Wert true , wenn ein Listener des angegebenen Typs ausgelöst wird; andernfalls false .
|
activate | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.ACTIVATE
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[broadcast event] Wird ausgelöst, wenn die Flash Player- oder AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird. Bei diesem Ereignis handelt es sich um ein broadcast-Ereignis. Das bedeutet, dass es von allen EventDispatcher-Objekten ausgelöst wird, die einen Listener für dieses Ereignis registriert haben. Weitere Informationen zu broadcast-Ereignissen finden Sie im Abschnitt zur DisplayObject-Klasse.
DieACTIVATE
-Konstante bestimmt den Wert der type
-Eigenschaft eines activate
-Ereignisobjekts.
Hinweis: Dieses Ereignis verfügt weder über eine Aufnahmephase noch über eine Bubbling-Phase. Das bedeutet, dass Ereignis-Listener potenziellen Zielen direkt hinzugefügt werden müssen, unabhängig davon, ob sich das Ziel in der Anzeigeliste befindet oder nicht.
AIR für TV setzt dieses Ereignis niemals ab. Sie können es jedoch manuell absetzen.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Jede DisplayObject-Instanz, die einen Listener besitzt, der für das activate -Ereignis registriert ist. |
Verwandte API-Elemente
deactivate | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.DEACTIVATE
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[broadcast event] Wird ausgelöst, wenn die Flash Player- oder AIR-Anwendung den Fokus verliert und inaktiv wird. Bei diesem Ereignis handelt es sich um ein broadcast-Ereignis. Das bedeutet, dass es von allen EventDispatcher-Objekten ausgelöst wird, die einen Listener für dieses Ereignis registriert haben. Weitere Informationen zu broadcast-Ereignissen finden Sie im Abschnitt zur DisplayObject-Klasse.
DieEvent.DEACTIVATE
-Konstante definiert den Wert der type
-Eigenschaft eines deactivate
-Ereignisobjekts.
Hinweis: Dieses Ereignis verfügt weder über eine Aufnahmephase noch über eine Bubbling-Phase. Das bedeutet, dass Ereignis-Listener potenziellen Zielen direkt hinzugefügt werden müssen, unabhängig davon, ob sich das Ziel in der Anzeigeliste befindet oder nicht.
AIR für TV setzt dieses Ereignis niemals ab. Sie können es jedoch manuell absetzen.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Jede DisplayObject-Instanz, die einen Listener besitzt, der für das deactivate -Ereignis registriert ist. |
Verwandte API-Elemente
EventDispatcherExample
und CustomDispatcher
(einer Unterklasse von EventDispatcher
) erläutert, wie ein benutzerdefiniertes Ereignis erstellt und ausgelöst wird. In diesem Beispiel werden die folgenden Aufgaben ausgeführt:
- Der Konstruktor von
EventDispatcherExample
erstellt eine lokaledispatcher
-Variable und weist sie einer neuen CustomDispatcher-Instanz zu. - In
CustomDispatcher
wird der Nameaction
für das Ereignis über einen String festgelegt, und die MethodedoAction()
wird deklariert. Bei Aufruf erstellt diese Methode das Ereignisaction
und löst es mit der MethodeEventDispatcher.dispatchEvent()
aus. - Anschließend wird die Eigenschaft
dispatcher
verwendet, um den Ereignis-Listeneraction
und die verknüpfte AbonnentenmethodeactionHandler()
zum Drucken von Informationen über das Ereignis beim Auslösungszeitpunkt hinzuzufügen. - Die
doAction()
-Methode wird aufgerufen, und dasaction
-Ereignis wird ausgelöst.
package { import flash.display.Sprite; import flash.events.Event; public class EventDispatcherExample extends Sprite { public function EventDispatcherExample() { var dispatcher:CustomDispatcher = new CustomDispatcher(); dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler); dispatcher.doAction(); } private function actionHandler(event:Event):void { trace("actionHandler: " + event); } } } import flash.events.EventDispatcher; import flash.events.Event; class CustomDispatcher extends EventDispatcher { public static var ACTION:String = "action"; public function doAction():void { dispatchEvent(new Event(CustomDispatcher.ACTION)); } }
Tue Jun 12 2018, 10:04 AM Z