Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Gebeurtenisdoelen zijn een belangrijk onderdeel van het gebeurtenismodel van Flash ® Player en Adobe AIR. Het gebeurtenisdoel fungeert als brandpunt voor de manier waarop gebeurtenissen door de hiërarchie van het weergaveoverzicht gaan. Wanneer een gebeurtenis als een muisklik of een toetsdruk plaatsvindt, wordt vanuit het hoofdniveau van de weergavelijst een gebeurtenisobject naar de gebeurtenisstroom verzonden. Het gebeurtenisobject wordt omgeleid naar het gebeurtenisdoel, dat in feite in drie fasen is verdeeld: de vastlegfase bestaat uit de route van het hoofdniveau tot aan het laatste knooppunt vóór het knooppunt van het gebeurtenisdoel; de doelfase bestaat alleen uit het knooppunt van het gebeurtenisdoel, en de terugkoppelfase bestaat uit alle knooppunten tijdens de terugweg naar het hoofdniveau van de weergavelijst.
Gewoonlijk is het uitbreiden van de EventDispatcher de eenvoudigste manier voor een, door de gebruiker gedefinieerde, klasse om verzendmogelijkheden te krijgen. Wanneer dit niet mogelijk is (wanneer de klasse al een andere klasse uitbreidt), kunt u in plaats daarvan de interface IEventDispatcher implementeren, een lid van een EventDispatcher maken en eenvoudige hooks schrijven om aanroepen van de samengevoegde EventDispatcher te routeren.
Methode | Gedefinieerd door | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt. | IEventDispatcher | ||
Verzendt een gebeurtenis naar de gebeurtenisstroom. | IEventDispatcher | ||
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis. | IEventDispatcher | ||
Verwijdert een listener uit het object EventDispatcher. | IEventDispatcher | ||
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis. | IEventDispatcher |
addEventListener | () | methode |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt. U kunt gebeurtenislisteners registreren op alle knooppunten in het weergaveoverzicht van een specifiek type gebeurtenis, fase of prioriteit.
Nadat het registreren van een gebeurtenislistener is voltooid, kunt u de prioriteit ervan niet wijzigen door extra aanroepen van addEventListener()
. Wanneer u de prioriteit van een listener wilt wijzigen, moet u eerst removeEventListener()
aanroepen. U kunt de listener opnieuw registreren met het nieuwe prioriteitsniveau.
Nadat de listener is geregistreerd, resulteren volgende aanroepen van addEventListener()
met een andere waarde voor type
of useCapture
in het maken van een afzonderlijke listenerregistratie. Wanneer u bijvoorbeeld eerst een listener registreert bij useCapture
ingesteld op true
, luistert deze alleen tijdens de vastlegfase. Wanneer u addEventListener()
opnieuw aanroept met hetzelfde listenerobject maar met useCapture
ingesteld op false
, hebt u twee afzonderlijke listeners: één die tijdens de vastlegfase luistert en één die tijdens de doel- en terugkoppelfasen luistert.
U kunt geen gebeurtenislistener registeren voor alleen de doel- of terugkoppelfase. Deze fasen worden bij de registratie gekoppeld, omdat terugkoppeling alleen van toepassing is op voorouders van het doelknooppunt.
Wanneer u een gebeurtenislistener niet langer nodig hebt, kunt u deze verwijderen door EventDispatcher.removeEventListener()
aan te roepen; anders kan dit resulteren in geheugenproblemen. Objecten met geregistreerde gebeurtenislisteners worden niet automatisch verwijderd uit het geheugen, omdat de opschoonfunctie geen objecten verwijdert waar nog verwijzingen naar bestaan.
Het kopiëren van een instantie EventDispatcher kopieert de daaraan gekoppelde gebeurtenislisteners. (Wanneer uw nieuwe knooppunt een gebeurtenislistener nodig heeft, moet u de listener eraan koppelen na het maken van het knooppunt.) Wanneer u echter een instantie EventDispatcher verplaatst, worden de daaraan gekoppelde listeners mee verplaatst.
Wanneer de gebeurtenislistener wordt geregistreerd op een knooppunt terwijl een gebeurtenis op dit knooppunt wordt verwerkt, wordt de gebeurtenislistener niet geactiveerd tijdens de huidige fase maar kan wel worden geactiveerd in een latere fase in de gebeurtenisstroom, zoals de terugkoppelfase.
Wanneer een gebeurtenislistener wordt verwijderd uit een knooppunt terwijl een gebeurtenis wordt verwerkt op het knooppunt, wordt deze nog steeds geactiveerd door de huidige handelingen. Nadat deze is verwijderd, wordt de gebeurtenislistener niet meer aangeroepen (tenzij deze opnieuw wordt geregistreerd voor toekomstige verwerking).
Parameters
type:String — Het type gebeurtenis.
| |
listener:Function — De listenerfunctie die de gebeurtenis verwerkt. Deze functie moet een gebeurtenisobject accepteren als de enige parameter en niets retourneren, zoals in dit voorbeeld wordt getoond:
| |
useCapture:Boolean (default = false ) — Bepaalt of de listener werkt in de vastleg-, doel- en terugkoppelfase. Wanneer useCapture wordt ingesteld op true , verwerkt de listener de gebeurtenis alleen tijdens de vastlegfase en niet tijdens de doel- of terugkoppelfase. Wanneer useCapture wordt ingesteld op false , verwerkt de listener de gebeurtenis alleen tijdens de doel- of terugkoppelfase. Wanneer u in alle drie de fasen naar de gebeurtenis wilt luisteren, roept u addEvenListener() tweemaal aan, één keer met useCapture ingesteld op true en één keer met useCapture ingesteld op false .
| |
priority:int (default = 0 ) — Het prioriteitsniveau van de gebeurtenislistener. Prioriteiten worden opgegeven door een 32-bits geheel getal. Hoe hoger het getal, hoe hoger de prioriteit. Alle listeners met een prioriteit n worden verwerkt voor listeners met een prioriteit n -1. Wanneer twee of meer listeners dezelfde prioriteit hebben, worden ze verwerkt in de volgorde waarin ze werden toegevoegd. De standaardprioriteit is 0.
| |
useWeakReference:Boolean (default = false ) — Bepaalt of de verwijzing van de listener sterk of zwak is. Een sterke verwijzing (standaard) voorkomt dat uw listener wordt opgeschoond. Een zwakke verwijzing doet dat niet. Lidfuncties op klasseniveau worden niet opgeschoond. U kunt dus |
dispatchEvent | () | methode |
public function dispatchEvent(event:Event):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verzendt een gebeurtenis naar de gebeurtenisstroom. Het doel van de gebeurtenis is het object EventDispatcher waar dispatchEvent()
op wordt aangeroepen.
Parameters
event:Event — Het gebeurtenisobject dat naar de gebeurtenisflow is verzonden.
|
Boolean — Een waarde true tenzij preventDefault() wordt aangeroepen voor de gebeurtenis; in dat geval wordt false geretourneerd.
|
hasEventListener | () | methode |
public function hasEventListener(type:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis. Op die manier kunt u bepalen waar een object EventDispatcher het afhandelen van een gebeurtenis in de hiërarchie van de gebeurtenisstroom heeft gewijzigd. Wanneer u wilt bepalen of een specifiek gebeurtenistype daadwerkelijk een gebeurtenislistener activeert, kunt u IEventDispatcher.willTrigger()
gebruiken.
Het verschil tussen hasEventListener()
en willTrigger()
is dat hasEventListener()
alleen het object controleert waar het toe behoort, terwijl willTrigger()
de gehele gebeurtenisstroom controleert voor de gebeurtenis die is opgegeven door de parameter type
.
Parameters
type:String — Het type gebeurtenis.
|
Boolean — De waarde true wanneer de listener van een specifiek type is geregistreerd; anders false .
|
Verwante API-elementen
removeEventListener | () | methode |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verwijdert een listener uit het object EventDispatcher. Wanneer geen overeenkomende listener is geregistreerd bij het object EventDispatcher, heeft een aanroep van deze methode geen invloed.
Parameters
type:String — Het type gebeurtenis.
| |
listener:Function — Het listenerobject dat wordt verwijderd.
| |
useCapture:Boolean (default = false ) — Geeft aan of de listener is geregistreerd voor de vastleg-, doel- en terugkoppelfase. Wanneer de listener is geregistreerd voor zowel de vastlegfase als de doel- en terugkoppelfase, zijn twee aanroepen van removeEventListener() nodig om ze allebei te verwijderen: één aanroep met useCapture ingesteld op true en een andere met useCapture ingesteld op false .
|
willTrigger | () | methode |
public function willTrigger(type:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis. Deze methode retourneert true
wanneer een gebeurtenislistener wordt geactiveerd tijdens een willekeurige fase van de gebeurtenisstroom wanneer een gebeurtenis van het opgegeven type wordt verzonden naar dit object EventDispatcher of een van de afstammingen.
Het verschil tussen hasEventListener()
en willTrigger()
is dat hasEventListener()
alleen het object controleert waar het toe behoort, terwijl willTrigger()
de gehele gebeurtenisstroom controleert voor de gebeurtenis die is opgegeven door de parameter type
.
Parameters
type:String — Het type gebeurtenis.
|
Boolean — De waarde true wanneer de listener van een specifiek type wordt geactiveerd; anders false .
|
decorDispatcher
) van de klasse DecoratedDispatcher geconstrueerd en de wordt de variabeledecorDispatcher
gebruikt om addEventListener()
aan te roepen met de aangepaste gebeurtenis doSomething
, die vervolgens wordt afgehandeld door didSomething()
, die een regel tekst afdrukt met behulp van trace()
.
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); } }
Wed Jun 13 2018, 11:42 AM Z