Főoldal » Abode Flash – Moziklipek eseménykezelése

Abode Flash – Moziklipek eseménykezelése

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Moziklipek eseménykezelése: 

Fontos ezt kitárgyalnunk, ezt mindenki beláthatja. Az eseménylehetőség kitárgyalása után azért egy példát is megnézünk, méghozzá egy valós idejű órát csinálunk!

Website-unkra is bőven befér! Díszíti!

 

Nah mehet:


A Flash5 nagyon sok eseménykezelőt tartalmaz. A moziklip események hasonlóak a gombeseményekhez, amelyekkel már foglalkoztunk. A legnagyobb különbség az, hogy egy moziklipnek nincs HIT -sem UP, DOWN és OVER- állapota, tehát az egér, vagy a billentyűzet által kiváltott eseményt a színpadon bárhol érzékelhetjük. Itt is az adott események határozzák meg, hogy mikor fusson le a scriptben definiált akció.

Minden MovieClip-nek saját eseménykezelője van, mely mindig az adott eseményhez tartozó script-et futtatja le. Ilyen esemény pl. egy új frame-be való lépés, egy billentyű lenyomása, vagy akár a moziklip betöltődése.

 

Ezt az eseménykezelőt hívhatjuk meg az onClipEvent utasítással (Actions könyvecske). 
onClipEvent (esemény) {
utasítások}

Moziklipesemények:

Load/Unload (betöltés/törlés): A moziklip betöltésekor illetve tárból való törlése váltja ki ezt az eseményt.

EnterFrame(képkockába lépés): az erre az eseményre írt kód akkor hajtódik végre, ha a mozikip minden képkockája betöltődik.

Mouse down/Mouse up(egérgomb lenyomása/felengedése): az egérgomb lenyomása illetve felengedése váltja ki ezt az eseményt.

Mouse move(egérmozgás): A Roll Over/Roll Out eseményekkel rokon moziklipesemény. Az egér mozgatásakor hajtja végre a scriptet.

Key down/Key up(billentyű lenyomása/felengedése): Ha a film olyan képkockája aktív, ami a moziklipet tartalmazza, akkor billentyű lenyomására illetve felengedésere hajtódik végre az erre az eseményre írt kód.

Data(adat): esemény akkor hajtódik végre, amikor egy másik film adatot küld az aktuális filmnek.

Normál módban programozunk, akkor a Flash alapértelmezésben a load (betöltés) eseményhez társítja a parancsokat. Ezt megváltoztathatjuk az ablak alján, ha kijelöljük az eseményt.

 

Figyelni kell, mert ha egy olyan gombeseményt  és egy azzal egyenértékű moziklip-eseményt  ugyanazon a szinten és képkockában használunk problémák léphetnek fel. Az egyik esemény a másik előtt hajtódik végre és elnyomja a másodikat. A moziklip-események mindig elsőbbséget élveznek a gombesemények előtt.

 

A key objektum!

 

Az előző fejezetben egy moziklip helyzetét vezéreltük a billentyűzet segítségével. Ehhez kellett négy gombot kellett felrakni a színpadra. A Key (billentyű) objektum segítségével is tudjuk kezelni a billentyűzet eseményeit. Ennek az objektumnak is vannak metódusai, melyekkel le tudjuk kérni, hogy melyik billentyűt ütötte le a felhasználó. 
Miért jobb a Key Object a gombok Keypress eseménynél? A Key objektum segítségével billentyűzet kombinációkat is le tudunk kezelni. A funkcióbillentyűknek vannak ASCII kódjai, így ezeket is fel tudjuk használni az irányításban. Míg például az ESC billentyűt nem tudjuk gomb segítségével kezelni. 

A Key objektumot megtaláljuk az Object könyvecskében. Itt találhatunk metódusokat, melyekkel a billentyűzet eseményeit tudjuk lekezelni. 

A billentyűk nevei nagybetűsen szedettek. Például a RIGHT a kurzormozgató jobbra billentyű. Erre a Key.RIGHT szintaxissal tudunk hivatkozni. A billentyűzet eseményei közé tartozik például, ha lenyomunk egy gombot. A továbbiakban a Key objektum két függvényére lesz szükségünk:

getAscii() – A leütött billentyű ASCII kódját adja vissza.

isdown(keycode) – Vizsgálja, hogy az adott kódú billentyűt lenyomták-e

Hivatkozni ezekre is a Key.függvénynév szintaxissal kell.

Erre a lehetőségre az előzőkben már néztünk példát, ezért most ezzel nem húzom az időt!

A Date objektum!

 

Ennek segítségével lekérdezhetjük a dátumot és az időt a számítógép órájáról. Ahhoz, hogy a Date objektumot használni tudjuk meg kell hívni a konstruktorfüggvényét (new Date). Ezek után ennek metódusaival tudunk információkat nyerni.

A Date objektum néhány eljárása, melyekre szükségünk lesz:

getDate – A nap sorszámát adja vissza az adott hónapban. 

getDay – A nap sorszámát adja meg egy héten belül. Vasárnap a 0-ik, szombat a 6-ik nap.

getFullYear – Az évszámot adja meg négy számjeggyel.

getMounth – A hónap sorszámát adja vissza. A 0-ik hónap a január, 11-ik hónap a december.

getHours – Az órát adja meg. Ez egy 0 és 23 közti szám

getMinutes – A perceket adja neg. Ez egy 0 és 59 közti szám.

getSeconds – A másodperceket adja neg. Ez egy 0 és 59 közti szám.

 

Akkor most jöhet a feladat : 

 

Készítsük el az óra hátlapját, alakítsuk ezt moziklippé. Majd ennek belsejében adjunk hozzá egy új réteget és erre rajzoljuk meg az óra mutatóit. Alakítsuk ezeket moziklippé, valamint ezeknek instance neveket (ora, perc, mperc)!

 

A mozi intéző segítségével ellenőrizhetjük a struktúrát.

Lépjünk vissza a Scene1-re! A moziklipre a következő kódot írjuk.

onClipEvent (enterFrame) {
ido = new Date();
setProperty (ora, _rotation, ido.getHours()*30+(ido.getMinutes()/2));
setProperty (perc, _rotation, ido.getMinutes()*6+(ido.getSeconds()/10));
setProperty (mperc, _rotation, ido.getSeconds()*6);
delete ido;
}

Így a mutatóknak a szögelfordulását állítjuk az idő függvényében. Relatív hivatkozást használunk, mivel az adott szinttől lejebb lévő objektumokra hivatkozunk.

Az óra lapján 12 részre osztjuk a 360 fokot, Az óramutató egy óra elteltével 30 fokot fordul. Így be tudjuk állítani az idő függvényében az óramutatót. Hatvan perc alatt az óramutató 30 fokot fordul. Ha az óramutató egész óraértékből kiszámolt szögelfordulásához hozzáadjuk a perc értékből kiszámolt értéket, akkor evvel biztosítjuk azt, hogy az óramutató ne túl szakaszosan mozogjon (ne óránként változzon az óramutató szögelfordulása).
Hasonló módon állítjuk a percmutató állását is.
A másodpercmutató (mperc) egy perc alatt fordul körbe, tehát egy másodperc alatt 6 fokot fordul. Ha mérnénk ezredmásodpercet is, akkor természetesen annak értékét is figyelembe vennénk ezen mutató szögelfordulásának beállításakor.

Az óra folyamatos járását az EnterFrame esemény biztosítja.

 

Jár az óránk most már!

 

Köszönöm  a figyelmet!

Még találkozunk!

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.