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




 
 
SEGÉDLETEK Effektus-trükk

Tűzijáték (Fireworks) effektus a duplicateMovieClip-el
  feltöltve: 2003.11.12 | szerző: ismeretlen | olvasva: 9793 alkalommal

 
 

Gondoltam így az év vége fele adhatnánk egy kicsit a hangulatnak :-) Most egy nagyon egyszerű, de remélem látványos dolgot fogunk összerakni. Ez nem lesz más, mint egy kis tűzijáték, ami valamennyire kapcsolódik a szilveszterhez:

Vágjunk hát bele! Először beállítottam a hátteret feketére (ezen látszik a legjobban a dolog :) és a Frame Rate: 25 fps-re persze ezeket mindenki a maga ízlése szerint változtathatja. Ezek után elkészítettem egy kis csillagot (Graphic), ez képezi majd a nagy durranást.

Ezt a Graphic Symbol-t beletettem egy Movie Clip-be (ennek az átmenet nevet adtam, az Instance name pedig: a), ahol egy Motion Tween-t csináltam vele. 20 Frame-en keresztül eltoltam nagyjából 75 pixellel és elforgattam 90°-al, levettem 0%-ra az Alpha-t, és az utolsó Frame-be tettem egy stoputasítást. Ezzel már majdnem készen is vagyunk, most már csak meg kell szorozni. és most jön a lényeg.

 

Az így elkészült Movie clip-et beletettem egy újabb movie Clip-be, ami mindössze egyetlen frame-ből áll (ennek a neve: bumm, Instance name-re pedig egyenlőre nincsen szükség.). Itt vannak az utasítások:

i = 0;
while (Number(i)<60) {
     duplicateMovieClip("a", "a" add i, i);
     setProperty("a" add i, _rotation, random(360));
     meret = 45+Number(random(56));
     setProperty("a" add i, _xscale, meret);
     setProperty("a" add i, _yscale, meret);
     i = Number(i)+1;
}

Következzen a magyarázat. Létrehoztam az i változót, és kezdőértékként 0-át adtam neki:
i = 0;

Most jön egy ciklus, amíg i értéke kisebb 60-nál. (ezzel a számmal lehet megadni, hogy egy "bumm" hány csillagból álljon)
while (Number(i)<60) {

Itt megduplázom az a nevű Movie Clip-et, aminek az új neve "a" add i, vagyis ha i értéke pl. 14, akkor az új Movie Clip neve a14-lesz. Ezt az i-edik "szintre" teszem.
     duplicateMovieClip("a", "a" add i, i);

Az "a" add i Movie Clipet (ez az éppen létrehozott) véletlenszerűen elforgatom 360°-on belüli értékkel.
     setProperty("a" add i, _rotation, random(360));
     
Létrehozok egy újabb, meret nevű változót, aminek az értékét véletlenszerűen 45 és 100 közöttire állítom be.
     meret = 45+Number(random(56));
     
Az "a" add i Movie Clip X és Y méretét beállítom az előbb generált meret változó értékével megegyezőre.
     setProperty("a" add i, _xscale, meret);
     setProperty("a" add i, _yscale, meret);


Ezek után már csak annyi maradt, hogy az i értékét növeljem 1-el.     
     i = Number(i)+1;
}


1.animáció

2.animáció

3.animáció

Ennyi az egész. Próbáld ki! Kattints a Play gombra (1.anim)!

Persze mindez így még nagyon egyszerű. Érdekesebbé lehet tenni azzal, ha a kis csillagok még villognának is. Ez sem megoldhatatlan dolog persze, mindössze annyi kell hozzá, hogy atmenet nevű Movie Clipet megfelelőképpen kell összerakni.

Persze ez ennyire nem egyszerű, mert így minden csillag egyszerre villanna fel, így egy kicsit ki kell egészíteni azokat az utasításokat, ami a bumm Movie Clip első frame-jén van a következőképpen:

i = 0;
while (Number(i)<60) {
      duplicateMovieClip("a", "a" add i, i);
     setProperty("a" add i, _rotation, random(360));
     meret = 35+Number(random(40));
     setProperty("a" add i, _xscale, meret);
     setProperty("a" add i, _yscale, meret);
     tellTarget ("a" add i) {
          gotoAndPlay(random(8));
     }
     i = Number(i)+1;
}


Vagyis az éppen aktuális Movie Clip-et véletlenszerűen az 1- 8 frame-től indítjuk, így nem egyszerre fognak felvillanni. (2.animáció) Így már azért jobb. De még ezt is lehet fokozni. Mi lenne, ha különböző színűek lennének a csillagok, mondjuk fehér és kék. Nos ez sem megoldhatatlan, sőt egészen egyszerű, csak a csillag Graphic symbol-ból Movie Clipet kell készíteni és az első frame-en fehér, a második frame-en kékcsillagnak kell lennie, és mindkét frame-en egy stop utasításnak.

És a lényeg, hogy az atmenet Movie Clip első frame-jén van az az utasítás, ami véletlenszerűen eldönti, hogy milyen szinű legyen a csillag, azaz melyik Frame-re küldjük:

tellTarget ("csillag") {
     gotoAndStop(Number(random(2))+1);
}


A 3-as animáción nézd meg a módosított effektet. Ha valami nem teljesen világos, ott van fent az FLA. Persze a fenti animáció forrása is elérhető.

És akkor mindezt még lehet fokozni azzal is, hogy hangot adnunk neki, de nekem éppen nem volt megfelelő hangom hozzá, és habár próbáltam rögzíteni egy petárda hangját, de kudarcot vallottam vele, mivel nem tudtam a kocsik riasztójának a hangját leszedni a felvételről :-)

Egy tűzijáték hang: letölthető innen, by rikkerk

2000.11.28 by Cyberjack

 
 
 
 

© 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 >>> : .. .