Random Motion (II dio) - Nasumično kretanje pomoću Timer Class-a
U ovom tutorijalu koristit ćemo Timer Class kako bi pomicali naš krug po stagu. Timer Class je novost u actionscriptu 3.0 jer s njim možemo napraviti nešto u vremenskom razmaku, npr. ako hoćemo da se objekt pomiče svakih "x" sekundi ili hoćemo da se nekaj obavi "x" broj puta u vremenskom razmaku od "x" sekundi. U actionscriptu 2.0 koristila se funkcija setInterval() ali ona se nakon nekog vremena znala zblesirat i prestat radit.
Ajmo na posao:
- Otvorite novi Flash CS3 dokument(actionscript 3.0)
- Zakljujčajte prvi layer i preimenujte ga u actions
- Kliknite na prvi frame actions layera i otvorite actions panel(F9)
- Počmite kodirat
Prvo moramo napravit naš zeleni krug
1 2 3 4 5 | var mojKrug:Sprite = new Sprite(); mojKrug.graphics.beginFill(0x009966); mojKrug.graphics.drawCircle(20,20,20); mojKrug.graphics.endFill(); addChild(mojKrug); |
Sad moramo deklerirati Timer variablu koja ima dva argumenta:
1. broj u milisekundama nakon kojeg će tajmer pokrenuti zadanu funkciju
2. broj koliko će se puta tajmer ponoviti(ako ga se ne napiše on se pali beskonačan broj puta)
U našem slučaju tajmer bu se upalil 5 puta svaku jednu sekundu(1000ms = 1 sekunda)
6 | var mojTajmer:Timer = new Timer(1000,5); |
Sad ćemo startat tajmer
7 | mojTajmer.start(); |
Nakon što smo startali tajmer dodajemo mu "eventListener" koji će osluškivati dal se tajmer upalio i kad se upali pozvat ćemo funkciju koja bu pomicala naš krug
8 | mojTajmer.addEventListener(TimerEvent.TIMER, pomiciKrug); |
I konačno napišemo funkciju koju zovemo kad se tajmer upali
9 10 11 12 13 14 15 | function pomiciKrug(e:TimerEvent):void { //za poziciju x nasumično biramo broj između 0 i širine stage-a mojKrug.x = Math.random() * stage.stageWidth; //za poziciju y nasumično biramo broj između 0 i visine stage-a mojKrug.y = Math.random() * stage.stageHeight; } |
Testirajte animaciju (Ctrl+Enter)
Primjer:
Ali to nije sve. Tajmeru se može dodati još jedan eventListener koji osluškuje kad je tajmer gotov( u našem slučaju 5. put kad se aktivira tajmer je gotov), pa ćemo dodati i taj eventListener i vratit krug u početni položaj(gornji ljevi ugao). Kodu iz prošlog primjera dodat ćemo par linija:
Prvo dodajemo eventListener
16 | mojTajmer.addEventListener(TimerEvent.TIMER_COMPLETE, vratiKrugUPocetniPolozaj); |
I još moramo napisati funkciju
17 18 19 20 21 | function vratiKrugUPocetniPolozaj(e:TimerEvent):void { mojKrug.x = 0; mojKrug.y = 0; } |
Testirajte animaciju (Ctrl+Enter)
Primjer:
Pozdrav
Luka














Add A Comment