. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .




 
 
SEGÉDLETEK ActionScript

Dinamikus mozgások ActionScripttel - 4. rész
  feltöltve: 2004.07.08 | szerző: papp | olvasva: 13990 alkalommal

     
 

Egy fontos és nagyon hasznos művelettel foglalkozunk a dinamikus mozgás sorozat jelen részében. Moziklipeket fogunk duplikálni futásidőben a duplicateMovieClip utasítással. A technika ismerete Flash játékok, részecske rendszerek készítésénél és egyéb feladatoknál is hamar nélkülözhetetlen társnak bizonyul. (Előző részek: első, második, harmadik)

Moziklipek duplikálása

Kezdjük a legegyszerűbb példával. Készítsünk egy új labda moziklipet és helyezzük el bárhol a színpadon. A példány neve (instance name) legyen labda0_mc. Jelüljük ki az első képkockát az idősíkon és gépeljük be a következő utasítást:

duplicateMovieClip ("labda0_mc","labda1_mc",1);

A duplicateMovieClip utasítással másolatot hozhatunk létre egy adott moziklipből. Az utasítás három paramétert használ: a másolni kívánt moziklip példány neve, a másolat moziklip példány neve és végül a mélységi szint (depth level) amire nemsokára visszatérünk. A fenti kóddal tehát egy újabb példányt hozunk létre a labda0_mc moziklipünkből, mely a labda1_mc példány nevet fogja felvenni. Nyomjunk egy Ctr+Enter-t, lássuk mi történik...

Igazából megtörténik a duplikálás, de mivel a meglévő moziklippel azonos pozícióban jön létre a duplikált példány, nem veszünk észre semmit. A duplikált moziklipnek határozzunk meg valami eltérő koordinátát:

duplicateMovieClip ("labda0_mc","labda1_mc",1);
labda1_mc._y = labda0_mc._y + 100;


A duplikált moziklipnek 100 pixellel az eredeti alatt kell megjelennie. Ha teszteljük a moziklipet, meg is győződhetünk róla:

A következő lépésben a moziklipből több másolatot fogunk készíteni. Az ismétlődő feladatot egy egyszerű while ciklussal fogjuk megoldani. Töröljük a meglévő kódot az első képkockáról és gépeljük be az alábbiakat:

i = 1;
klipszam = 9;
while (i < klipszam) {
     duplicateMovieClip ("labda0_mc","labda"+i+"_mc",i);
     _root["labda"+i+"_mc"]._x += i*50;
     i++;
}

Láthatjuk, hogy 8 másolat készült az eredeti moziklipünkből, tehát összesen 9 labda sorakozik a színpadon:

Ciklust még nem használtunk a segédlet sorozatban, szenteljünk egy kis időt a megértésére annál is inkább, mert nagy segítségünkre lehet a dinamikus mozgásoknál. Az első sorban definiáljuk a cilkus változónkat, majd meghatározzuk a moziklip másolatok számát:

i = 1;
klipszam = 9;


Most következik a while ciklus ami addig ismétlődik, míg teljesül a feltétel azaz i változó értéke kisebb, mint a kilpszam valtozó értéke:

while (i < klipszam) {
}

A while cilkusban meghatározott utasítások végrehajtódnak, mindahányszor a ciklus lefut. Itt történik a moziklip duplikálás:

duplicateMovieClip ("labda0_mc","labda"+i+"_mc",i);

Láthatjuk, hogy a ciklus változónknak a továbbiakban is hasznát vesszük, hiszen a duplikált moziklipek nevét és a mélységet is az i változóval oldjuk meg. Az első ciklusban az i értéke 1, tehát az új moziklip neve labda1_mc lesz és az 1-es szinten fog elhelyezkedni. A következő kódsorban ismét alkalmazzuk az i változót, mégpedig a duplikált moziklipek koordinátájának kiszámolásánál:

_root["labda0_mc"]._x += i*50;

Amint duplikáltuk a moziklipet, tüstént meg is határozzuk az _x pozícióját. Pontosan i * 50 pixelnyi távolságra helyezzük el az eredeti moziklip _x koordinátájához képest. Végül növeljük a az i ciklus változó értékét:

i++;

Rendben! Megtanultunk futásidőben másoltatokat készíteni a mozklipjeinkről, most térjünk vissza a dinamikus mozgásokra, persze alkalmazva a frissen tanultakat. Lapozz!

 
     
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .