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




 
 
SEGÉDLETEK Effektus-trükk

Részecskerendszer (particle-system) segédlet
  feltöltve: 2003.12.10 | szerző: Newone | olvasva: 14429 alkalommal

           
 

Részecskerendszer tutorial Szint: haladó Alkalmazás: Flash MX 2004 ActionScript: AS2

A részecskerendszerek sok kis elemből álló rendszerek, amelyek valami szabályrendszer szerint mozognak, így hozva létre a vizuális effektet, minta például a tűz, a köd, a füst, az eső, egy robbanás, vagy egy őszi faleveleket fújó szellő szimulációja. Ezek közül sokat meg is valósítunk, az itt tálalt részecskerendszerrel. Azt, hogy a részecskerendszerből még mit hoztok ki, nos, az már csak rátok van bízva!

Ebben a nagy ünnepi tobzódásban, szerettem volna készíteni egy Mikulás napi üdvözlőt az SWF.hu portálnak, de idő hiányában lemaradtam a december 6-ról! Így az elgondolásomat kicsit tovább fejlesztve alkottam egy kezdetleges részecskerendszer szimulátort (hogy a nagy szavakat se mellőzzük) és abból egy segédletet. Remélem mindenki kapott egy kis édességet a piros ruhástól (Nem a Mátrix hölgyére gondoltam, bár szebb!).

Segédletről röviden

A segédletben a Flash MX 2004-ben megjelenő AS2 szerint ügyködünk majd. A módszer, amellyel a részecskerendszer dolgozik, a Flash 6-ban átdolgozott esemény modellt, eseményalapú megközelítést használja. Elméletileg minden további nélkül írhattam volna Flash 6-ra is, de a haladást szem előtt tartva, az AS2 terminológiáját választottam. Létezik egy függvénygyűjtemény, amely Flash 5-ben is szimulálja az eseményalapú lehetőségeket, de ide már nem mennék vissza. Röviden, a segédlet újdonsága, az AS2-őt használata és az eseményalapú megközelítés.


(1. ábra: Hóesés és tűz egyben)

Ködoszlatás

Mielőtt a részecskerendszer megalkotásának fázisába lépnénk, egy - két dolgot érdemes jobban szemügyre vennünk.

Eseményalapú megközelítés

A Flash MX-el egy, a Flash esetében, eddig ismeretlen megközelítés vált elérhetővé. (Az igazat megvallva, már a Flash 5 -ben is volt kezdeményezés, ha a MovieClip-ekre gondolunk, de erről később.).

Az új megközelítés, pedig a következő: ahelyett, hogy állandóan vizsgálnánk egy esemény bekövetkeztét, inkább az esemény szóljon nekünk, ha bekövetkezett.

Kicsit furcsának tűnik a fenti mondat, de röviden ez a lényeg. Lássunk egy konkrét példát, márpedig a Mi kis részecskerendszerünket.

A feladat a következőképpen néz ki:

Létre kell hozni sok kis elemet, amelyek a részecskerendszert alkotják, majd ezen elemek tulajdonságait (mozgás, mozgás irány, méret, szín, stb.) folyamatosan változtatni kell, illetve bizonyos tulajdonságok megváltozása (pl.: ha megtett adott hosszúságú útvonalat, vagy bizonyos ideje már jelen van) esetén, a részecskerendszernek reagálnia kell. Pl.: töröljük az adott részecskét, ha az nem látható a moziban (kiment a vászonról).

Jelen esetben a tulajdonságok folyamatos figyelésén, változtatásán van a hangsúly.

Hagyományosan, ezt a folyamatos figyelést, változtatást, az alábbi ábrán láthatóan szokták megvalósítani:


(2. ábra: hagyományos folyamat)

1. ábra leírása:

1.) Meghatározzuk, hogy hány részecskeelemből áll majd a rendszer.

2.) Létrehozzuk a részecskerendszert, amely annyi elemből áll, ahányat az 1.pontban megadtunk.
A létrehozás tipikusan valami ciklus, vagy frame loop segítségével történik, attachMovie, vagy duplicateMovieClip által.

3.) Minden egyes frame lejátszódásakor egy ciklus segítségével végigmegyünk az összes részecske elemen és vizsgáljuk annak bizonyos tulajdonságát, vagy tulajdonságait.

4.) Döntési pont: amennyiben a ciklus futása alatt találunk egy olyan részecske elemet, amelynek bizonyos tulajdonsága, vagy tulajdonságai megfelelnek az általunk várttal, akkor valamit kezdünk vele. Az 1.ábra azt példázza, hogy egy részecske elem bizonyos ideig élhet, utána megszűnik, majd egyből létre is hozunk egy újat. E szerint a 4-es lépésben megnézzük, hogy melyik részecske ért élete végére, amelyik igen, azzal visszaugrunk a 2. lépésre, töröljük, majd létrehozunk egy újat. Persze bármi mást is tehetnénk vele. Ugyanakkor az ellenőrzési ciklust (3-as lépés) folyamatosan futtatjuk.

Ez a módszer meglehetősen erőforrásigényes. De a Flash 6-ig szinte az egyedüli! A Flash 6-tal ez megváltozott! Beszivárgott a köztudatba az eseményalapú vezérlés. Az eseményalapú vezérlésnek két alapvető szereplője van:

•  Üzenő: azaz objektum, amelyben az adott esemény bekövetkezik. Például véget ér a részecske elem élete.

•  Figyelő: azaz objektum, amely az Üzenőben bekövetkezett eseményre reagál.

Az összepárosítás meg úgy történik, hogy az Üzenőnek van egy listája, amelyre fel lehet iratkozni. Akik rajta vannak a listán (ezek a Figyelők), azok mind megkapják az adott esemény bekövetkeztekor, az Üzenő által szétküldött üzenetet. Látható, hogy hatalmas előnye az 1.ábrán szemléltetett folyamattal szemben, hogy nem kell feleslegesen minden részecskét vizsgálni, majd a részecske szól, ha véget ér az élete.

Nézzük az előbbi példát eseményalapú megközelítésben:


(3. ábra: eseményalapú folyamat)

3. ábra leírása:

1.) Meghatározzuk, hogy hány részecske elemből áll majd a rendszer.

2.) Létrehozzuk a részecskerendszert, amely annyi elemből áll, ahányat az 1.pontban megadtunk.
A létrehozás tipikusan valami ciklus, vagy frame loop segítségével történik, attachMovie, vagy duplicateMovieClip által.

3.) Részecskének folyik az élete. Például a részecske maga is egy MC, amely valami animációt tartalmaz. Ez az animáció 30 frame-en keresztül tart. Ha elért az animáció végére, azaz a 30-dik frame-re, akkor vége az életének.

4.) A részecske élete véget ér. Pl.: elért az animáció végére. Az esemény bekövetkezett.

5.) A részecske üzenetet küld a listáján szereplő Figyelőknek, hogy itt a vég. Jelen esetben a Figyelő, azaz Object, amely a rutinja segítségével, létrehozza a részecskéket. Vagyis a részecske üzen a 2-es lépésnek, hogy elérte a vég. A 2-es lépésben töröljük az adott részecskét és létrehozunk egy újat. Ennek az implementálását valósítottam meg ebben a segédletben.

 
           
 
 

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