V actionscriptu můžeme vytvářet vlastní události a pomocí nich ovládat(spouštět) jiné funkce. Např. až se rozsvítí na semaforu (semafor_mc) zelená, auto (auto_mc) projede. Na konci movieclipu semafor_mc bude generovaná vlastní událost, která spustí auto_mc. Na konci animace auto_mc bude generovaná událost, která spustí semafor_mc
Příklad:
Vytvoření události
Události (Event) se vytváří pomocí příkazu DispatchEvent (dispatch = vyslat)
DispatchEvent(New Event("NováUdálost"));
Tento příkaz vytvoří novou událost, která ponese označení (název) podle textu uvnitř uvozovek. Událost se vygeneruje na tom místě časové osy, kde chceme. (Např, na konci animace Movieclipu – vyšle informace o tom, že ten Movieclip skončil.)
DispatchEvent(New Event("KONEC_SEMAFOR"));
Zachycení a zpracování události
Událost zachytí posluchač – EventListener, který je přiřazený k objektu, který se má poslouchat (tj. objektu uvnitř kterého je událost generována).
Movieclip_mc.addEventListener("NováUdálost",JménoObluhyUdálosti) //Např: semafor_mc.addEventListener("KONEC_SEMAFOR", AutoSpust)
Obsluha události
funkce, která je spuštěna vygenerovanou událostí, má speciální zápis: Místo e:MouseEvent, se zapisuje e:Event
funciton JménoObsluhyUdálosti(e:Event) { tělo funkce - co se má vykonat } // Např: funciton AutoSpust(e:Event) { auto_mc.play(); }
Přidání posluchače události
Posluchače události můžeme přidat movieclipu nebo tlačítku (objektu, který se dá pojmenovat). Umožňuje nám poslouchat např. události myši (kliknutí, najetí myši apod.) a nebo také generované události uvnitř objektu, kterému byl posluchač přiřazen.
addEventListener //přidavač posluchaře události Movieclip_mc.addEventListener("NováUdálost",JménoObluhyUdálosti) //celá formulace //Např. semafor_mc.addEventListener("KONEC_SEMAFOR", AutoSpust)
Odebrání posluchače události
Posluchače události můžeme také objektům ubírat. Např. chceme-li, aby se při kliknutí na tlačítko spustila animace a aby se mohla znovu přehrát až po skončení animace. Bez odebrání posluchače by bylo možné animaci spustit nebo ji začít spouštět znovu od začátku (při příkazu gotoAndPlay(0)) kdykoliv v průběhu přehrávání animace. Tomu se vyhneme tím, že při začátku animace tlačítku posluchače událostí odebereme a při skončení opět vrátíme.
removeEventListener //odebrání posluchače události Movieclip_mc.addEventListener("NováUdálost",JménoObluhyUdálosti) //celá formulace //Např. semafor_mc.removeEventListener("KONEC_SEMAFOR", AutoSpust) //formulace je stejná jako u přidávání, jen se add změní na remove
Vytváření vlastních událostí – příklad
Rybičky v akvárku – propluje jedna, vygeneruje událost, která spustí druhou, atd.
import flash.events.Event; ryba2_mc.stop(); ryba1_mc.addEventListener("KONEC_RYBA1",spustRybu2); ryba2_mc.addEventListener("KONEC_RYBA2",spustRybu1); function spustRybu2(e:Event){ ryba2_mc.play() ryba1_mc.stop() } function spustRybu1(e:Event){ ryba1_mc.play() ryba2_mc.stop() } //na konci animace uvnitř movieclipu ryba1_mc, se generuje tato událost: dispatchEvent(new Event("KONEC_RYBA1")); //na konci animace uvnitř movieclipu ryba2_mc: dispatchEvent(new Event("KONEC_RYBA2"));
Přidávání a ubírání posluchačů – příklad 2
Spustí animaci kliknutím na libovolnou rybu, pak už klikat na ryby nejde a animace se stále opakuje.
import flash.events.Event; ryba1_mc.stop(); ryba2_mc.stop(); ryba1_mc.addEventListener("KONEC_RYBA1",spustRybu2); ryba2_mc.addEventListener("KONEC_RYBA2",spustRybu1); ryba1_mc.addEventListener(MouseEvent.CLICK,zacniStafetu); ryba2_mc.addEventListener(MouseEvent.CLICK,zacniStafetu); function zacniStafetu(e:Event){ e.currentTarget.play(); //spustí ten movieclip, na který se kliklo - e.currentTarget se nahradí jménem označného movieclipu ryba1_mc.removeEventListener(MouseEvent.CLICK,zacniStafetu); ryba2_mc.removeEventListener(MouseEvent.CLICK,zacniStafetu); } function spustRybu2(e:Event){ ryba2_mc.play() ryba1_mc.stop() } function spustRybu1(e:Event){ ryba1_mc.play() ryba2_mc.stop() }