Home > ActionScript 3.0, Osnove, Tutorijal > Dupliciranje objekta pomoću for loop-a

Dupliciranje objekta pomoću for loop-a

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. January 9th, 2008 at 23:56 | #1

    majstore presao sam ovo,daj jos…il daj linkove

  2. January 10th, 2008 at 11:30 | #2

    Bilo bu samo strpljenja :)

  3. hrvojeb
    January 21st, 2008 at 23:12 | #3

    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. January 22nd, 2008 at 01:14 | #4

    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
    January 24th, 2008 at 15:36 | #5

    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

  6. December 8th, 2008 at 12:01 | #6

    ehehehehe ja cu da stojim ovde i da placemmmmmmm :( pa sta da radimo mi totalni pocetnici kad ja ne znam gde se pise sve ono,nadjem nekako to Actions i prekopiram te tvoje- sta treba i dobijem = nista = nemam pojma….. uffffff kako cu nauciti sve iz pocetka,sta je za sta,korak po korak? prvi put vidim ovakav program,juce sam ga skinula,inace znam samo da radim u Corel Paint Shop X2 programu i Jasic Animacion shopu kad mi treba neka jednostavnija animacija za uradjenu sliku… a Adobe Flash CS3 sam uzela misleci da cu tu moci napraviti bolje,malo slozenije animacije na odredjenu sliku koju uradim u Corelu…. i sta sad ja da radim? gde da nadjem sam pocetak rada u ovom flashu i da ukapiram sta i kako i gde da upisujem? ovako mogu samo da gledam sve ovo i da placem,eto

  1. No trackbacks yet.