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




 
 
SEGÉDLETEK Effektus-trükk

Szöveg effektusok készítése Swish nélkül
  feltöltve: 2003.01.07 | szerző: ismeretlen | olvasva: 16047 alkalommal

 
 

A Swish már mindenkinek megvan, a használata egyszerű, ám itt is akad egy pár gond. Névszerint az, hogy a Swish legjobb szándéka ellenére is nagy file-okat csinál, és mi sajnos legjobb szándékunk ellenére sem tudunk vele megcsinálni mindent, amit (piszkos) fantáziánk kitalál. Emiatt ajánlom az alábbi módszert szöveges effektek létrehozására. A leírás célja ismét kettős. Ugyanis ha megértjük a lent ismertetett módszert, kicsit közelebb kerülhetünk a Flash lelkéhez, az ActionScript-hez. Nem szaporítom tovább a szót, inkább vágjunk bele.

Tetszik a kis animáció? Akkor jobb ha tudod, hogy az egész mindössze 5.6k (Swish-ben lenne vagy 10-15k), és Swish-ben nem is lehetne megcsinálni...

Az egész effekt lelke egy viszonylag rövid kis moziklip symbol, amit szépen "ráhúzunk" az - általunk megadott - szöveg minden egyes betűrjére. Első lépésben készítsük el ezt a moziklipet... "De milyen objektumot mozgassunk?" Merül fel a kérdés mindenkiben, aki egy kicsit is belegondol.

1. LÉPÉS: Készítsünk egy moziklipet, amiben van egy dynamic textfield egyetlen betűvel. Legyen a textfield neve "character", a moziklip-é pedig "betu", instance neve szintén "betu".

2. LÉPÉS: Egy újabb movieclip-et hozzunk létre és helyezzük el benne a "betu" moziklipet. Csináljunk valami nagyon klassz kis animációt vele. Alpha csatorna-változással, színváltozással, méretváltozással stb.. Nevezzük el "betu mozgasa"-nak. Több symbol-ra nem is lesz szükségünk. Ha most megnézzük a library-t (és eddig mindent jól csináltunk) akkor összesen két moziklipünk van: a "betu" és a "betu mozgasa" nevűek.


3. LÉPÉS: Vissza a fő timeline-ra. Az első frame-en a következő kódra lesz szükségünk:

text = "flash";
startx = 120;
starty = 20;
betuszel = 0;
max = length(text);
i = 0;


text: a kiírandó szöveg
startx, startty: kezdő koordináták
betuszel: egy betű szélessége. FIGYELEM! Fontos paraméter, ezzel fogjuk a "eltolni" a "startx" pozícióhoz képest az egymás után következő betűket. Alap állapotban (=ebben a keyframe-ben) 0, a későbbiek során folyamatosan változik.
max: a szöveg (text) hossza (megadhatjuk numerikusan is, de a Lenght(text) kifejezéssel is.
i: dinamikusan változó változónk legyen kezdetben 0

Ugyanebbe a keyframe-be tegyük be a "betu mozgasa" nevű moziklip-et és nevezzük el "betumozgas0" instance névre.

4. LÉPÉS: Csináljuk meg a következő keyframe-t:

setProperty("betumozgas0", _visible, "0");
i = i+1;
betuszel = betuszel+20;
duplicateMovieClip("/betumozgas" add (i-1), "betumozgas" add i, i);
set("/betumozgas" add i add "/betu:character", substring(text, i, 1));
set("/betumozgas" add i add "/betu1:character", substring(text, i, 1));
setProperty("/betumozgas" add i, _x, Number(startx)+Number(betuszel));
setProperty("/betumozgas" add i, _y, starty);


Mindenek előtt toldjuk meg "i"-t 1-gyel:
i = i+1;

Adjuk egy karakter szélességét (jelen esetben 20-at) a "betuszel"-hez.
betuszel = betuszel+20;

Most jön a duplicateMovieClip!
Látható, hogya már jelenlévő "betumozgas0" instance nevű moziklipet fogjuk lemásolni:
duplicateMovieClip("/betumozgas" add (i-1), "betumozgas" add i, i);

Itt hoztuk létre a "betumozgas1" instance nevű moziklipet, amit majd a következő ciklusban fogunk másolni:
set("/betumozgas" add i add "/betu:character", substring(text, i, 1));

Változtassuk meg a "betumozgas" add i/"betu"-ben lévő "character" változót a szöveg "i"-edik (jelen esetben első) betűjére: /A Substring paramétereit nézzétek meg a flash helpjében...
set("/betumozgas" add i add "/betu1:character", substring(text, i, 1));

Adjuk meg a frissen elkészített "betumozgas" add i x és y koordinátáit, a következőképpen:
setProperty("/betumozgas" add i, _x, Number(startx)+Number(betuszel));
setProperty("/betumozgas" add i, _y, starty);


Vegyük észre, hogy az y koordináta nem változik, ha akarjuk, akár írhatunk ferdén is, csak akkor be kell vezetnünk egy új változót, amivel ciklusonként növeljük az y koordináta értékét.

5. LÉPÉS: Nincs más hátra, mint megcsináli a 4.-ik keyframet, aminek a feladata az, hogy ha ki van írva a szöveg akkor csináljon valamit, ha nincs, akkor menjen vissza az előző frame-re.

if (Number(i) == Number(max)) {
     stop();
} else {
     gotoAndPlay(2);
}

Ennyi! Ja! Élesebb szeműek észrevehették, hogy a fenti animációban, mintha lenne egy enyhe fekete "bevel"-je a betűknek... a .fla-ban benne van a megoldás, de kérek mindenkit, akinek új volt a módszer, hogy mielőtt megnézi, gondolkozzon el azon, hogy magától hogyan csinálná. Hasznos termelést!

 
 
 
 

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