Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Händelsemålet är en viktig del av Flash ® Player- och Adobe AIR-händelsemodellen. Händelsemålet fungerar som fokalpunkt för hur händelser flödar genom hierarkin i visningslistan. När en händelse, t.ex. ett musklick eller en tangenttryckning, förekommer, skickas ett händelseobjekt till händelseflödet från roten i visningslistan. Händelseobjektet gör en tur- och returresa till händelsemålet som är indelat i tre faser: hämtningsfasen inkluderar resan från roten till den sista noden innan händelsemålets nod; målfasen, som endast inkluderar händelsemålnoden, och bubblingsfasen som inkluderar efterföljande noder som påträffas på tillbakavägen från visningslistans rot.
I allmänhet är det enklast att utöka EventDispatcher om en användardefinierad klass vill få möjligheter att skicka händelser. Om det inte går (dvs. om klassen redan utökar en annan klass) kan du istället implementera EventDispatcher-gränssnittet, skapa en EventDispatcher-medlem och skriva enkla kopplingar för kopplingssamtal till den sammanställda EventDispatcher.
Metod | Definieras med | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | IEventDispatcher | ||
Skickar en händelse till händelseflödet. | IEventDispatcher | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | IEventDispatcher | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | IEventDispatcher | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | IEventDispatcher |
addEventListener | () | metod |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. Du kan registrera händelseavlyssnare på alla noder i visningslistan efter en särskild typ av händelse, fas och prioritet.
När du har registrerat en händelseavlyssnare går det inte att ändra dess prioritet genom ytterligare anrop till addEventListener()
. För att kunna ändra avlyssnarens prioritet måste du först anropa removeEventListener()
. Sedan går det att registrera avlyssnaren på nytt med den nya prioritetsnivån.
När avlyssnaren har registrerats resulterar efterföljande anrop till addEventListener()
med ett annat värde för antingen type
eller useCapture
i att en separat avlyssnarregistrering skapas. Om du t.ex. först registrerar en avlyssnare med useCapture
inställt på true
avlyssnar den bara under hämtningsfasen. Om du anropar addEventListener()
igen med samma avlyssningsobjekt men med useCapture
inställt på false
får du två separata avlyssnare: en som avlyssnar under hämtningsfasen och en som avlyssnar under både mål- och bubblingsfasen.
Det går inte att registrera en händelseavlyssnare endast för målfasen eller bubblingsfasen. De faserna är sammankopplade vid registreringen eftersom bubblande bara tillämpas på de som är överordnade målnoden.
När du inte längre behöver en händelseavlyssnare tar du bort den genom att anropa EventDispatcher.removeEventListener()
. Annars finns risk för minnesproblem. Objekt med registrerade händelseavlyssnare tas inte automatiskt bort från minnet, eftersom skräpinsamlaren inte tar bort objekt som fortfarande har referenser.
Kopiering av en EventDispatcher-instans innebär inte att de händelseavlyssnare som är kopplade till den kopieras. (Om en nod som du nyss skapat behöver en händelseavlyssnare måste du koppla avlyssnaren efter att du skapat noden.) Om du däremot flyttar en EventDispatcher-instans flyttas den kopplade händelseavlyssnaren med.
Om händelseavlyssnaren är registrerad på en nod samtidigt som en händelse bearbetas på den noden aktiveras inte händelseavlyssnaren under den aktuella fasen, men den kan aktiveras under en senare fas i händelseflödet, t.ex. bubblingsfasen.
Om en händelseavlyssnare tas bort från en nod samtidigt som en händelse bearbetas på den noden, aktiveras den ändå av de aktuella åtgärderna. När händelseavlyssnaren tagits bort anropas den aldrig mer (om den inte registreras på nytt för framtida bearbetning).
Parametrar
type:String — Händelsens typ.
| |
listener:Function — Avlyssnarfunktionen som bearbetar händelsen. Den här funktionen måste acceptera ett händelseobjekt som dess enda parameter och får inte returnera någonting. Se följande exempel:
| |
useCapture:Boolean (default = false ) — Bestämmer om avlyssnaren fungerar i hämtningsfasen eller mål- och bubblingsfaserna. Om useCapture är inställd på true bearbetar avlyssningsprocessen bara händelsen under hämtningsfasen och inte under mål- eller bubblingsfasen. Om useCapture är inställd på false bearbetar avlyssningsprocessen bara händelsen under mål- och bubblingsfasen. Om du vill avlyssna händelsen under alla tre faserna anropar du addEventListener() två gånger, en gång med useCapture inställd på true , och sedan en gång med useCapture inställd på false .
| |
priority:int (default = 0 ) — Händelseavlyssnarens prioritetsnivå. Prioriteter anges av ett 32-bitars heltal med tecken. Ju högre tal, desto högre prioritet. Alla avlyssnare med prioritet n bearbetas före avlyssnare med prioritet n-1. Om två eller fler avlyssnare har samma prioritet bearbetas de i den ordning de lades till. Standardprioritet är 0.
| |
useWeakReference:Boolean (default = false ) — Avgör om referensen till avlyssnaren är stark eller svag. En stark referens (standard) förhindrar att avlyssnaren skräpsamlas. Det gör inte en svag referens. Medlemsfunktioner på klassnivå skräpsamlas inte, så du kan ange |
dispatchEvent | () | metod |
public function dispatchEvent(event:Event):Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickar en händelse till händelseflödet. Händelsemålet är det EventDispatcher-objekt som dispatchEvent()
anropas till.
Parametrar
event:Event — Händelseobjektet som skickas till händelseflödet.
|
Boolean — Värdet true om inte preventDefault() anropades för händelsen, i så fall returneras false .
|
hasEventListener | () | metod |
public function hasEventListener(type:String):Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. Då kan du bestämma var i händelseflödeshierarkin ett EventDispatcher-objekt har förändrat hanteringen av en händelsetyp. Använd IEventDispatcher.willTrigger()
om du vill ta reda på om en viss händelsetyp faktiskt kommer att aktivera en händelseavlyssnare.
Skillnaden mellan hasEventListener()
och willTrigger()
är att hasEventListener()
bara undersöker det objekt som det hör till, medan willTrigger()
undersöker hela händelseflödet för händelsen som angetts av type
-parametern.
Parametrar
type:String — Händelsens typ.
|
Boolean — Värdet true om en avlyssnare för den angivna typen är registrerad, annars false .
|
Relaterade API-element
removeEventListener | () | metod |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tar bort en avlyssnare från EventDispatcher-objektet. Ett anrop till den här metoden har ingen effekt om det inte finns någon matchande avlyssnare registrerad för EventDispatcher-objektet.
Parametrar
type:String — Händelsens typ.
| |
listener:Function — Det avlyssnarobjekt som ska tas bort.
| |
useCapture:Boolean (default = false ) — Anger om avlyssnaren registrerades för hämtningsfasen eller mål- och bubblingsfaserna. Om avlyssnaren registrerades för både hämtningsfasen och mål- och bubblingsfaserna krävs två anrop till removeEventListener() för att båda ska tas bort: ett anrop med useCapture inställt på true och ett annat anrop med useCapture inställt på false .
|
willTrigger | () | metod |
public function willTrigger(type:String):Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. Den här metoden returnerar true
om en händelsavlyssnare aktiveras under någon av faserna i händelseflödet när en händelse av den angivna typen skickas till det här EventDispatcher-objektet eller någon av dess underordnade.
Skillnaden mellan hasEventListener()
och willTrigger()
är att hasEventListener()
bara undersöker det objekt som det hör till, medan willTrigger()
undersöker hela händelseflödet för händelsen som angetts av type
-parametern.
Parametrar
type:String — Händelsens typ.
|
Boolean — Värdet true om en avlyssnare för den angivna typen kommer att aktiveras, annars false .
|
decorDispatcher
) av DecoratedDispatcher-klassen och decorDispatcher
-variabeln används för att anropa addEventListener()
med den anpassade händelsen doSomething
, vilken sedan hanteras av didSomething()
som skriver ut en textrad med hjälp av 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); } }
Tue Jun 12 2018, 01:40 PM Z