Grundläggande om händelsehanteringFlash Player 9 och senare, Adobe AIR 1.0 och senare Händelser är olika typer av förekomster i den SWF-fil som du ska arbeta med som programmerare. De flesta SWF-filer stöder till exempel användarinteraktion av någon typ — vare sig det rör sig om något så enkelt som att svara med en musklickning, eller något mer avancerat som att godta och bearbeta data som har angetts i ett formulär. All sådan användarinteraktion med en SWF-fil anses vara en händelse. Händelser kan även inträffa utan någon användarinteraktion, som när data har lästs in från en server eller när en bifogad kamera har aktiverats. I ActionScript 3.0 representeras varje händelse av ett händelseobjekt, som är en instans av klassen Event eller någon av dess underklasser. I ett händelseobjekt sparas inte bara information om en specifik händelse. Objektet innehåller även metoder som underlättar hanteringen av händelseobjektet. När Flash Player eller AIR identifierar en musklickning, skapas ett händelseobjekt (en instans av klassen MouseEvent) som ska representera den specifika musklickningshändelsen. När ett händelseobjekt har skapats skickar Flash Player eller AIR objektet, vilket innebär att händelseobjektet överförs till objektet som är målet för händelsen. Ett objekt som fungerar som mål för ett skickat händelseobjekt kallas för ett händelsemål. När till exempel en bifogad kamera aktiveras, skickar Flash Player ett händelseobjekt direkt till händelsemålet, som i det här fallet är objektet som representerar kameran. Om händelsemålet däremot finns i visningslistan, överförs händelseobjektet nedåt i visningslistans hierarki tills det når händelsemålet. I vissa fall ”bubblar” sedan händelseobjekt tillbaka uppåt i visningslistans hierarki längs samma väg. Den här förflyttningen eller gången i visningslistans hierarki kallas för händelseflödet. Du kan ”lyssna” efter händelseobjekt i kod med hjälp av händelseavlyssnare. Händelseavlyssnare är funktioner eller metoder som svarar på specifika händelser. För att se till att ditt program svarar på händelser måste du lägga till händelseavlyssnare till antingen händelsemålet eller till ett visningslisteobjekt som ingår i ett händelseobjekts händelseflöde. Varje gång du skriver händelseavlyssnarkod har koden följande grundläggande struktur (element i fet stil är platshållare som du fyller i med information som är lämplig i ditt specifika fall): function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse); Den här koden gör två saker. Först definierar den en funktion, vilket anger åtgärderna som ska utföras som svar på händelsen. Därefter anropar den metoden addEventListener() för källobjektet, vilket kopplar funktionen till den angivna händelsen. Därmed utförs funktionens åtgärder varje gång händelsen inträffar. När händelsen verkligen inträffar, kontrollerar händelsemålet dess lista över alla funktioner och metoder som är registrerade som händelseavlyssnare. Därefter anropas var och en i tur och ordning och händelseobjektet skickas som en parameter. Du måste ändra fyra saker i den här koden för att skapa din egen händelseavlyssnare. Först måste du ändra namnet på funktionen till det namn som du vill använda (namnet måste ändras på två platser, där koden anger eventResponse). Sedan måste du ange lämpligt klassnamn för händelseobjektet som skickas av händelsen som du vill lyssna efter (EventType i koden) och ange lämplig konstant för den specifika händelsen (EVENT_NAME i exemplet). Det tredje steget innebär att du anropar metoden addEventListener() i objektet som ska skicka händelsen (eventTarget i den här koden). Om du vill kan du som ett fjärde steg ändra namnet på variabeln som används som funktionens parameter (eventObject i den här koden). Viktiga termer och begreppFöljande referenslista innehåller viktiga termer som du kommer att stöta på när du skriver händelsehanteringsrutiner:
|
|