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:














majstore presao sam ovo,daj jos…il daj linkove
Bilo bu samo strpljenja
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
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ć
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