Flash Tutorijali

ActionScript, Flash i AIR tutorijali na hrvatskom jeziku

Random Motion (II dio) - Nasumično kretanje pomoću Timer Class-a

Posted by hamferus on January 6, 2008 under ActionScript 3.0, Osnove, Tutorijal

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:

  1. Otvorite novi Flash CS3 dokument(actionscript 3.0)
  2. Zakljujčajte prvi layer i preimenujte ga u actions
  3. Kliknite na prvi frame actions layera i otvorite actions panel(F9)
  4. 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:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

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:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)
Pozdrav
Luka

Add A Comment