Flash Tutorijali

ActionScript, Flash i AIR tutorijali na hrvatskom jeziku

Dupliciranje objekta pomoću for loop-a

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

U ovom actionscript tutorijalu bum vam pokazal kako duplicirati objekt pomoću for loop-a i pomoću ENTER_FRAME eventa bumo animirali nasumično kretanje tog objekta. Naravno naš objekt bu bil famozni zeleni krug.

1. Kreirajte novi Flash CS3 dokument(actionscript 3.0)
2. Zaključajte prvi layer i preimenujte ga u actions
3. Kliknite na prvi frame actions layera i otvorite actions panel(F9)
4. Krenite kodirat :)

Prvo moramo definirati broj krugova. S ovim brojem možete ekperimentirati al nemojte pretjerat da vam se komp ne zablokira. Mi bumo napravili 10 krugova.

1
var brojKrugova:Number = 10;

Sad pišemo for loop koji ima tri argumenta
1. početni broj koji je nula
2. provjeravamo dal je početni broj manji od broja krugova i ako nije idemo na treći argument
3. povećanje početnog broja dok nebude isti ko broj krugova
Unutar for loop-a ćemo nacrtati naš krug i to će ga automatski duplicirati i svakom krugu dodat ćemo ENTER_FRAME event

2
3
4
5
6
7
8
9
10
for(var i:uint = 0; i<brojkrugova;i++)
{
	var mojKrug:Sprite = new Sprite();
	mojKrug.graphics.beginFill(0x009966);
	mojKrug.graphics.drawCircle(0,0,20);
	mojKrug.graphics.endFill();
	addChild(mojKrug);
	mojKrug.addEventListener(Event.ENTER_FRAME, pokreniKrugove);
}

Kad pišemo funkcije koje imaju evente onda unutar zagrade moramo napisat ime i tip eventa. Ime određujemo sami(u mom slučaju to je više manje uvijek e), a tip eventa određuje sami event koji osluškujemo. U ovom slučaju to je obični event pa tu pišemo Event nakon dvotočke. Ako se sjećate tutorijala s Timer Class-om koristili smo TimerEvent nakon dvotočke. Da smo koristili evente koje osluškuju radnju miša(klik, prelaz,itd.) napisali bi MouseEvent. Svaki event ima podatke koje šalje u funkciju i mi ih možemo pročitat i iskoristit u našem kodu. Mi koristimo target podatak i pošto je event dodjeljen krugu naši krugovi su taj target. Pošto smo dodjelili event na mojKrug svi krugovi će dobiti povratnu informacju pomoću target podatka i svaki bu imal svoju nasumičnu x i y poziciju. Ako napišemo mojKrug.x ili mojKrug.y samo jedan krug bi se pomical. Najbolje je da probate i promijenite "e.target" u "mojKrug" pa budete vidjeli o čemu pričam.

11
12
13
14
15
function pokreniKrugove(e:Event):void
{
	e.target.x = Math.random() * stage.stageWidth;
	e.target.y = Math.random() * stage.stageWidth;
}

Evo i primjera:
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

  1. vasko Said,

    majstore presao sam ovo,daj jos…il daj linkove

  2. hamferus Said,

    Bilo bu samo strpljenja :)

  3. hrvojeb Said,

    imam pitanje vezano uz for loop petlju
    radim sajt i pokušavam spremit preloader u foor loop.
    ovo je kod:

    var ukupno:Number = _root.getBytesTotal();
    var ucitano:Number = _root.getBytesLoaded();
    var postotak:Number = Math.round((ucitano/ukupno)*100);

    if(_root.ukupno==_root.ucitano){
    _root.gotoAndStop(2);
    } else {
    //var sum:Number = 0;
    for (//————kaj tu dojde?————) {
    _root.percent.text=postotak;
    }
    }

    e, sad… kaj dojde u zagradu nakon što pozovem for?
    hvala unaprijed

  4. hamferus Said,

    Preloader netrebaš stavit u for loop.Unutar for loop-a ti idu tri argumenta:
    1. broj koji je početna vrijednost –> var i:Number = 0
    2. tu provjeravaš dal je broj(1.) manji od nekog drugog broja –> i<100
    3. tu povečavaš broj iz 1. argumenta dok nebude ko broj 100 iz 2. argumenta --> i++

    for(var i:Number=0; i<100;i++)
    {
    //ostatak koda
    }

    Evo ti primjer preloader-a stranice u flashu za actionscript 2.0

    U prvom frameu stavi ovaj kod:
    var ukupno:Number = _root.getBytesTotal();
    var ucitano:Number = _root.getBytesLoaded();
    var postotak:Number = Math.round((ucitano/ukupno)*100);
    _root.percent.text=postotak;

    U drugi frame stavi ovaj kod:
    if(_root.ukupno==_root.ucitano){
    _root.gotoAndStop(5);
    } else {
    _root.gotoAndPlay(1);
    }

    A u 5-ti frame stavi stranicu(ovo kaj je tebi na drugom frameu)

    Ako imaš još pitanja dođi na http://www.tutorijali.net/forum/, pa postavi u podforumu flash pitanje i ja ću ti rado pomoć

  5. hrvojeb Said,

    ma na taj način znam i ja
    htio sam napraviti preloader u jednom frameu u samo jednom action script bloku
    probao sam to s for loop petljom, ali sam se zapetljao. hehe
    enivej, već sam se ulogirao na tutoriali.net
    hvala za preporuku

Add A Comment