Klassen Event definierar en antal skrivskyddade egenskaper och konstanter som erbjuder viktig information om ett händelseobjekt. Följande är särskilt viktigt:
-
Händelseobjekttyper representeras av konstanter och lagras i egenskapen
Event.type
.
-
Huruvida en händelses standardbeteende kan förhindras representeras av ett booleskt värde och lagras i egenskapen
Event.cancelable
.
-
Händelseflödesinformation lagras i de övriga egenskaperna.
Typer av händelseobjekt
Alla händelseobjekt har en tillhörande händelsetyp. Händelsetyper lagras i egenskapen
Event.type
som strängvärden. Den är användbar för att ta reda på ett händelseobjekts typ så att din kod kan särskilja objekt av olika typer. Följande kod anger till exempel att avlyssnarfunktionen
clickHandler()
bör svara på händelseobjekt av typen musklickning som skickas till
myDisplayObject
:
myDisplayObject.addEventListener(MouseEvent.CLICK, clickHandler);
Ett par dussin händelsetyper är kopplade till själva klassen Event och representeras av konstanter för klassen. Några av de konstanterna visas i följande utdrag från definitionen av klassen Event:
package flash.events
{
public class Event
{
// class constants
public static const ACTIVATE:String = "activate";
public static const ADDED:String= "added";
// remaining constants omitted for brevity
}
}
Dessa konstanter underlättar när du vill referera till specifika händelsetyper. Du bör använda dessa konstanter i stället för strängarna som de representerar. Om du stavar ett konstantnamn fel i din kod kommer kompilatorn att fånga felet. Om du däremot använder strängar kan skrivfel inte framkomma vid kompileringen och kan därför leda till fel som kan vara svåra att hitta. Använd till exempel följande kod när du lägger till en händelseavlyssnare:
myDisplayObject.addEventListener(MouseEvent.CLICK, clickHandler);
i stället för:
myDisplayObject.addEventListener("click", clickHandler);
Information om standardbeteende
Koden kan kontrollera om standardbeteendet för ett givet händelseobjekt kan förhindras genom att använda egenskapen
cancelable
. Egenskapen
cancelable
innehåller ett booleskt värde som anger om ett standardbeteende kan förhindras eller inte. Du kan förhindra eller avbryta standardbeteendet som är kopplat till ett litet antal händelser genom att använda metoden
preventDefault()
. Mer information finns i Avbryta standardbeteende för händelse under
Metoder för klassen Event
.
Information om händelseflöde
De återstående egenskaperna för klassen Event innehåller viktig information om ett händelseobjekt och dess relation till händelseflödet enligt beskrivningen i följande lista:
-
Egenskapen
bubbles
innehåller information om de delar av händelseflödet som händelseobjektet deltar i.
-
Egenskapen
eventPhase
indikerar aktuell fas i händelseflödet.
-
Egenskapen
target
lagrar en referens till händelsemålet.
-
Egenskapen
currentTarget
lagrar en referens till visningslisteobjektet som för närvarande bearbetar händelseobjektet.
Egenskapen bubbles
En händelse sägs bubbla om dess händelseobjekt deltar i bubblingsfasen i händelseflödet, vilket innebär att händelseobjektet överförs från målnoden tillbaka genom dess indirekta överordnade tills det når scenen. Egenskapen
Event.bubbles
lagrar ett booleskt värde som indikerar om händelseobjektet deltar i bubblingsfasen. Eftersom alla händelser som bubblar även deltar i hämtnings- och målfaserna, deltar alla händelser som bubblar i alla tre av händelseflödets faser. Om värdet är
true
deltar händelseobjektet i alla tre faser. Om värdet är
false
deltar händelseobjektet inte i bubblingsfasen.
Egenskapen eventPhase
Du kan bestämma händelsefasen för ett händelseobjekt genom att undersöka dess
eventPhase
-egenskap. Egenskapen
eventPhase
innehåller ett heltalsvärde utan tecken som representerar en av de tre faserna i händelseflödet. Flash Player API innehåller en separat EventPhase-klass med tre konstanter som motsvarar de tre heltalsvärdena utan tecken som i följande kodutdrag:
package flash.events
{
public final class EventPhase
{
public static const CAPTURING_PHASE:uint = 1;
public static const AT_TARGET:uint = 2;
public static const BUBBLING_PHASE:uint= 3;
}
}
Dessa konstanter motsvarar de tre giltiga värdena för egenskapen
eventPhase
. Du kan använda dessa konstanter för att göra din kod enklare att läsa. Om du till exempel vill se till att en funktion med namnet
myFunc()
bara anropas om händelsemålet är i målfasen, kan du använda följande kod för att testa detta:
if (event.eventPhase == EventPhase.AT_TARGET)
{
myFunc();
}
Egenskapen target
Egenskapen
target
innehåller en referens till objektet som är målet för händelsen. I vissa fall är detta relativt okomplicerat, såsom när en mikrofon blir aktiv då Microphone-objektet blir målet för händelseobjektet. Om målet däremot finns i visningslistan måste visningslistans hierarki tas med i beräkningen. Om en användare till exempel klickar med musen på en punkt som inkluderar överlappande visningslisteobjekt, väljer Flash Player och AIR alltid objektet som är längst bort från scenen som händelsemål.
För invecklade SWF-filer, särskilt sådana i vilka knappar vanligtvis förses med mindre underordnade objekt, används egenskapen
target
normalt inte så mycket eftersom den ofta kommer att peka på en knapps underordnade objekt i stället för på knappen. I så fall är det brukligt att lägga till händelseavlyssnare till knappen och att sedan använda egenskapen
currentTarget
eftersom den pekar på knappen. Egenskapen
target
kan däremot peka på ett av knappens underordnade objekt.
Egenskapen currentTarget
Egenskapen
currentTarget
innehåller en referens till det objekt som för närvarande bearbetar händelseobjektet. Även om det kan förefalla märkligt att inte känna till vilken nod som för närvarande bearbetar händelseobjektet som du undersöker, bör du komma ihåg att du kan lägga en avlyssnarfunktion till valfritt visningsobjekt i det händelseobjektets händelseflöde, och att avlyssnarfunktionen kan placeras på valfri plats. Det går dessutom att lägga till samma avlyssnarfunktion till olika visningsobjekt. Allteftersom projektet blir större och mer invecklat, blir egenskapen
currentTarget
mer och mer användbar.