Sündmused saavad olla kas kasutaja- või süsteemipoolsed. Kasutajad klõpsavad hiirenuppe ja vajutavad klahve, süsteem päästab sündmusi valla juhul, kui jõutakse mingisse olukorda või mingi protsess on läbitud (SWF-fail laeb, ajateljel jõutakse teatud kaadrini jne). ActionScript’is kirjutatud sündmuseohjur (event handler) püüab sündmuse kinni ja tegutseb vastavalt. Sündmuseohjur ja sündmus saavad eksisteerida iseseisvalt, nagu uksekell ja kellanupp. Vajutades nuppu (sündmus) ei juhtu midagi, kuni pole kella (sündmuseohjur), mis saaks nupu vajutamisel heliseda (tegevus).
Flashis saab sündmused jagada kolme kategooriasse: hiire ja klaviatuuri sündmused (kui kasutaja suhtleb Flash-rakendusega), MovieClip'i sündmused, ning kaadri sündmused.
Sündmused jagunevad:
onPress() onRelease() onReleaseOutside() |
Enimkasutatavad sündmusehaldurid. onPress() ja onRelease() meetodeid kasutatakse juhul, kui soovitakse sündmust käivitada, kus kasutaja klõpsab objektil hiirega või vabastab hiireklahvi. Vahel võib mõlemaid meetodeid kasutada koos, näiteks luues lohistatavat MovieClip’pi, kus on vajalik hiirt klõpsates alustada objekti lohistamist ning hiirenupu vabastades see lõpetada. onReleaseOutside() käivitub, kui kasutaja on klõpsanud hiirega instantsi sees, kuid vabastab hiire sellest väljaspool. |
onRollOver() onRollOut() |
Käivitakse, kui kasutaja sõidab instantsist hiirega üle või sellest välja. |
onSetFocus() onKillFocus() |
Kui nupp või MovieClip fokuseeritakse, käivitakse onSetFocus(). Kui instants fookuse kaotab, käivitatakse onKillFocus(). Fokusseeritud objekt saab vastu võtta klaviatuurilt käivituvaid sündmusi (klahvivajutus). |
onDragOver() onDragOut() |
onDragOut() käivitakse, kui kasutaja klõpsab hiirega instantsil, lohistab seejärel hiire instantsist välja ning vabastab hiire, onDragOver() peab kasutaja hiire vabastama tagasi instantsis olles. Nende meetodite puhul tuleb tähele panna, et ei tööta, kui fookus on mõnel teisel instantsil. |
onEnterFrame() | Kutsutakse välja korduvalt, vastavalt SWF-faili kaadrisagedusele (frame rate, fps). Näide: kui SWF-faili kaadrisagedus on 12 kaadrit sekundis, kutsutakse onEnterFrame() välja sekundi jooksul 12 korda. |
onLoad() onUnload() |
Kutsutakse välja vastavalt kui MovieClip käivitatakse laval või kui see sealt eemaldatakse. |
onData() | Käivitub, kui MovieClip saab andmeid MovieClip.loadVariables() või MovieClip.loadMovie() kaudu. |
onMouseDown() onMouseUp() onMouseMove() |
Kutsutakse välja vastavalt hiirenupu vajutuse, vabastamise või hiire liigutamise järel. Liigitatakse Mouse-klassi alla. |
onKeyUp() onKeyDown() |
Kutsutakse välja klahvivajutuse või –vabastuse järel. Liigitatakse Key-klassi alla. |
Sündmuseid ning sündmuseohjureid käsitlesime juba varasemas harjutusülesandes. Alates Macromedia Flash versioonist MX on võimalus lisaks Flashis eeldefineeritud nuppudele ja MovieClip-sümbolitele omistada objektidele ka endaloodud sündmusi. Seda AsBroadcaster-nimelise klassi abiga.
Niipea kui mingi objekt saab kuulari omadused, suudab see tuvastada levitava (broadcasting) objekti poolt väljasaadetava sündmuse.
Ülalmainitud objektidele saab lisada kuulareid, kasutades addListener() meetodit.
Sündmusekuulari töö paremaks selgituseks on järgnev näide:
// Loome uue objekti yksSuurK6rv = new Object(); // Defineerime funktsiooni K6rvakiil = function(){ trace("Ai, ma sain just kõrvakiilu!"); } // Teeme objekti yksSuurK6rv hiire kuulariks... Mouse.addListener(yksSuurK6rv); // ...ning määrame sellele sündmuse onMouseDown. // Kuna yksSuurK6rv on justnimelt hiire objekti kuular, // tunneb see hiire sündmuse ära sarnaselt MovieClip-sümbolile yksSuurK6rv.onMouseDown = K6rvakiil;
Antud näite toimimist saab ise katsetada. Kõikjal laval klõpsates avaneb väljundiaknas teade "Ai, ma sain just kõrvakiilu!".