ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.events 

IEventDispatcher  - AS3

Paketflash.events
Schnittstellepublic interface IEventDispatcher
Umsetzer AbstractSearchFilterVO, AbstractService, AbstractStage, Asset, AssetAction, AssetAction, AssetPropertyDescriptor, AssetPropertyDescriptor, AssetTypeDescriptor, AssetTypeDescriptor, AssetVO, AttachmentCommand, AttachmentLoader, AuditLevel, BaseEntityVO, BaseUser, BasicService, BindingElement, CDMAssignment, CollectionToken, CollectionToken, ContainerLayout, ContextData, CustomAttribute, DataDictionaryElement, DataDictionaryReference, DataDictionarySearchFilter, DataDownload, DataManager, DataStoreEventDispatcher, Document, DocumentAssignment, EventDispatcher, FavoritesManager, FileData, FileModel, FlexConfiguration, Folder, FormatterUtil, InitiateFromStartTaskCommand, LDMAssignment, LinkElement, ManagedRemoteService, Message, ModuleAssignment, OLAPCube, ObjectToken, ObjectToken, OnDemandEventDispatcher, OperationInfo, OperationParameter, PDFResponseType, Participant, Portfolio, PreferencesManager, Query, QueueBase, QueuesManager, RelationshipVO, Reminder, RemotingServiceInfo, ResolvedContent, Review, ReviewContext, ReviewContext, ReviewSearchFilter, ReviewTemplateReference, SearchFilter, SearchFilter, SearchQuery, SearchQuery, SearchTemplateDescriptors, Session, ShaderFilter, SimpleFunctionMapper, Stage, Statement, Style, SupportingDocument, SyncManager, TaskAttachmentInfo, TaskProperty, TeamMember, TemplateSearchFilter, TextFlow, User, User, UserPreference, Variable, WorkItem

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 1.0, Flash Player 9, Flash Lite 4

Die IEventDispatcher-Schnittstelle definiert Methoden zum Hinzufügen bzw. Entfernen von Ereignis-Listenern, prüft, ob bestimmte Typen von Ereignis-Listenern registriert sind und löst Ereignisse aus.

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, wird vom Root der Anzeigeliste aus ein Ereignisobjekt in den Ereignisablauf gesendet. 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.

Beispiele anzeigen



Öffentliche Methoden
 MethodeDefiniert von
  
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.
IEventDispatcher
  
Sendet ein Ereignis in den Ereignisablauf.
IEventDispatcher
  
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat.
IEventDispatcher
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Entfernt einen Listener aus dem EventDispatcher-Objekt.
IEventDispatcher
  
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist.
IEventDispatcher
Methodendetails

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 removeEventListener() 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 Erfassungsphase 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 Erfassungsphase 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 benötigen, entfernen sie ihn, indem Sie EventDispatcher.removeEventListener() aufrufen, andernfalls könnte es zu Speicherproblemen kommen. Objekte mit registrierten Ereignis-Listenern werden nicht automatisch aus dem Speicher entfernt, da der Garbagekollektor (Speichermanagement) keine Objekte entfernt, die noch Verweise enthalten.

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 ist und dieser Knoten ein Ereignis durchgeführt, so wird der Ereignis-Listener nicht während der aktuellen Phase ausgelöst, kann aber in einer späteren Phase im Ereignisablauf gesendet werden, etwa in 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, wie das nachfolgende Beispiel zeigt, ein Ereignisobjekt als einzigen Parameter akzeptieren und keinen Wert zurückgeben:

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. Damit das Ereignis in allen drei Phasen aktiv ist, 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. Prioritäten werden über eine 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 useWeakReference für Mitgliedsfunktionen auf Klassenebene auf true setzen, ohne dass sie vom Garbagekollektor entfernt werden. Wenn Sie useWeakReference für einen Listener, der eine verschachtelte innere Funktion ist, auf true setzen, wird Garbage Collection auf diese Funktion angewendet, die damit nicht mehr permanent gespeichert wird. Indem Sie Verweise auf die innere Funktion erstellen (d. h sie in einer anderen Variable speichern), umgehen Sie die Garbage Collection, sodass die Funktion permanent gespeichert bleibt.

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 gesendet wird.

Rückgabewerte
Boolean — Der Wert true (sofern nicht preventDefault()) wird bei dem Ereignis aufgerufen. In diesem Fall wird false zurückgegeben.

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 IEventDispatcher.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.

Parameter

type:String — Der Ereignistyp.

Rückgabewerte
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 Erfassungs- 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 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.

Parameter

type:String — Der Ereignistyp.

Rückgabewerte
Boolean — Der Wert true, wenn ein Listener des angegebenen Typs ausgelöst wird; andernfalls false.
IEventDispatcherExample.as

Im folgenden Beispiel wird anhand der Klassen IEventDispatcherExample und DecoratedDispatcher erläutert, wie die IEventDispatcher-Klasse implementiert und verwendet werden kann. Im Beispiel wird jede DecoratedDispatcher-Methode auf die gleiche Weise wie bei EventDispatcher implementiert. Innerhalb des Kontruktors für IEventDispatcherExample wird eine neue Instanz (decorDispatcher) der DecoratedDispatcher-Klasse erstellt, und die Variable decorDispatcher wird verwendet, um addEventListener() zusammen mit dem benutzerdefinierten doSomething-Ereignis aufzurufen. Letzteres wird im Anschluss von didSomething() verarbeitet, und es wird eine Textzeile unter Verwendung von trace() gedruckt.
 
package {
        import flash.events.Event;
        import flash.display.Sprite;
       
        public class IEventDispatcherExample extends Sprite {
                public function IEventDispatcherExample() {
                        var decorDispatcher:DecoratedDispatcher = new DecoratedDispatcher();
                        decorDispatcher.addEventListener("doSomething", didSomething);
                        decorDispatcher.dispatchEvent(new Event("doSomething"));
                }
               
                public function didSomething(evt:Event):void {
                        trace(">> didSomething");
                }
        }
}

import flash.events.IEventDispatcher;
import flash.events.EventDispatcher;
import flash.events.Event;
               
class DecoratedDispatcher implements IEventDispatcher {       
    private var dispatcher:EventDispatcher;
               
    public function DecoratedDispatcher() {
        dispatcher = new EventDispatcher(this);
    }
           
    public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{
        dispatcher.addEventListener(type, listener, useCapture, priority);
    }
           
    public function dispatchEvent(evt:Event):Boolean{
        return dispatcher.dispatchEvent(evt);
    }
    
    public function hasEventListener(type:String):Boolean{
        return dispatcher.hasEventListener(type);
    }
    
    public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void{
        dispatcher.removeEventListener(type, listener, useCapture);
    }
                   
    public function willTrigger(type:String):Boolean {
        return dispatcher.willTrigger(type);
    }
}




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.