Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorach....................................................................................................................................... 7
Sowo wstpne .............................................................................................................................. 11
Wstp.............................................................................................................................................. 15
Rozdzia 1. Efekty wizualne .......................................................................................................... 23
1.
2.
3.
4.
5.
6.
7.
Spis treci
Spis treci
56.
57.
58.
59.
60.
Spis treci
89.
90.
91.
92.
93.
94.
95.
96.
Spis treci
ROZDZIA PIERWSZY
Efekty wizualne
Sposoby 1. 7.
W ksice przyjto zaoenie, e czytelnik zna ju podstawy Flasha w zakresie tworzenia
efektw wizualnych i animacji za pomoc listwy czasowej. Jeli jednak nie posuguje si
on sprawnie programem, przedstawione w tym rozdziale techniki na pewno oka si
interesujce. Po poznaniu podstaw Flasha z internetowego lub ksikowego podrcznika mona wrci do sposobw, ktre wyday si szczeglnie interesujce. Na pocztku
mylaem o tym, eby ksika zaczynaa si od wskazwek dotyczcych optymalizacji,
zabezpiecze itp. Uznaem jednak, e lepiej bdzie z tym poczeka. Miaem te nadziej,
e rozwizania przedstawione w tym rozdziale rozpal ciekawo czytelnikw, poszerz
ich horyzonty chciaem take pozosta wierny hakerskiej zasadzie zaczynania od
najciekawszych rzeczy.
Dlatego te zamieciem tu sposoby, ktre umoliwi osignicie nieznanych wczeniej
efektw lub efektw, ktre gdzie si widziao, ale trudno wykona je samodzielnie. Jak
w przypadku wszystkich sposobw zawartych w tej ksice, mam nadziej, e bd one nie
tylko uczy, ale rwnie inspirowa. Licz, e czytelnikom starczy motywacji, eby wyprbowa przedstawione tu sposoby, i e zaryzykuj opracowanie wasnych sztuczek.
Wszystkie sposoby zaprezentowane w tym rozdziale s w pewnym stopniu zwizane
z efektami wizualnymi. Omwione zostan efekty pikselowe oraz przeksztacenie plikw
wykonanych w programie Photoshop i plikw GIF we flashowe pliki .fla i .swf (pierwszy
format oznacza plik rdowy, drugi dystrybucj tego pliku). Na koniec przedstawi
sposb utworzenia drzewa koyszcego gaziami na wietrze. W nastpnych rozdziaach zajmiemy si dodatkowymi efektami wizualnymi wykorzystujcymi przeksztacenia,
zmiany barw, techniki 3D, maskowanie oraz interfejs programistyczny API Drawing.
Chocia maski s dokadniej omwione w rozdziale 3., to s tak wanym elementem Flasha
[Sposb 1.], e mona si z nimi zetkn take w innych miejscach ksiki. Pocztkujcym
uytkownikom przyda si wic krtkie wprowadzenie.
Animacje we Flashu s tworzone poprzez nakadanie na siebie warstw animacji (s to
takie same warstwy, z jakimi mona zetkn si w Photoshopie i innych programach do
obrbki grafiki). W panelu Timeline znajduje si gwna listwa czasowa, na ktrej uporzdkowane s wszystkie warstwy i na ktrej odtwarzane s poszczeglne klatki. Maski
Efekty wizualne
23
SPOSB
1.
SPOSB
1.
1.
24
Efekty wizualne
Efekty wizualne
25
SPOSB
1.
SPOSB
1.
Jak si za chwil przekonamy, po wprowadzeniu drobnych zmian mona utworzy znacznie bardziej skomplikowane przeksztacenia.
Efekt zostanie wykonany w trzech etapach:
1. Utworzenie pseudopiksela. W tym wiczeniu utworzymy may kwadrat o wymiarach
44 piksele.
2. Znalezienie sposobu na tworzenie wielu pseudopikseli. Mona to atwo zrobi,
wykorzystujc metod MovieClip.attachMovie().
3. Utworzenie przeksztacenia poprzez napisanie skryptu, dziki ktremu kady punkt
(pseudopiksel) bdzie znika po okrelonym czasie. Wykorzystujc wszystkie punkty
jako du mask, utworzymy efekt przejcia z jednego obrazka (lub klipu wideo)
na drugi tak jak na rysunku 1.1.
Pojawia si jednak pewien problem. Bdziemy pracowa z tysicami pseudopikseli, ale
nie jest wskazane wykorzystanie metody tak obciajcej procesor, jak tysice skryptw
onEnterFrame() uruchamianych w kadej klatce podczas trwania efektu. Zamiast tego posuymy si funkcj setInterval(), ktra nie wymaga duej mocy obliczeniowej, poniewa
kod bdzie wykonywany tylko raz na jeden pseudopiksel w czasie efektu.
26
Efekty wizualne
Klip filmowy mona usun ze sceny, poniewa wykorzystamy metod MovieClip.attachMovie() do dynamicznego powizania symbolu w bibliotece z gwn listw czasow. Aby
unikn tworzenia klipu, a nastpnie usuwania go ze sceny, mona klikn polecenie New
Symbol (nowy symbol) w menu Insert (wstaw) lub nacisn klawisze Ctrl+F8 (Windows) bd a+F8 (Mac) aby utworzy nowy symbol od razu w bibliotece.
Efekt wykorzystuje du mask zbudowan z kwadratw o wymiarach 44. Maska jest naoona na pierwszy obrazek, efekt dziaa w taki sposb, e w miar upywu czasu ukrywane s kolejne kwadraciki, w wyniku czego w wolnych miejscach zaczyna pojawia si
drugi obrazek (umieszczony poniej pierwszego).
Efekty wizualne
27
SPOSB
1.
SPOSB
1.
Za pomoc tego kodu utworzony zostaje kwadrat o rozmiarach 200200 pikseli, ktry
skada si z klipw filmowych o rozmiarach 44 piksele (w funkcji drawGrid() mona
okreli rne rozmiary, aby utworzy siatk innej wielkoci). Kady pseudopiksel znajduje si w okrelonym miejscu (i, j) i na okrelonym poziomie na scenie oraz ma nazw instancji doti_j. Nazwa pierwszej instancji (umieszczonej w grnym lewym rogu
kwadratu) to dot0_0, a ostatniej (prawy dolny rg) to dot199_199. Aby wywietli
klipy filmowe, mona uruchomi kod w trybie debugowania (Control/Debug Movie). Naley jednak pamita, e programowi uruchomieniowemu (debugerowi) zajmie troch
czasu wywietlenie wszystkich klipw (program moe nawet przez chwil przesta odpowiada trzeba da mu par sekund na wykonanie oblicze!).
Efekt generuje wiele klipw filmowych: (200/4)2 = 2500. Flash zaczyna dziaa
wolniej, kiedy w tym samym czasie na ekranie wywietlane s 3 4 tysice
klipw filmowych (nawet jeli nie s one ruchome), dlatego te nie zaleca si
przekraczania granicy 2500 klipw. Jeli konieczne jest zastosowanie maski
wikszej ni ta, nad ktr obecnie pracujemy (200200 pikseli), lepiej jest
wykorzysta wiksze kwadraty, ni zwiksza ich liczb.
Sterowanie pikselami
Naleaoby teraz zatroszczy si o to, by punkty znikay na danie. Mona zastosowa
do tego metod setInterval(object, "method", timer), ktra wywouje funkcj
object.method() co okrelon liczb (timer) milisekund. Do napisanego wczeniej kodu
dopisz nastpujcy skrypt:
initDot.timer = 1000 + Math.ceil(Math.random()*800);
Skrypt tworzy waciwo timer, ktra dla kadego klipu pseudopiksela przechowuje
liczb cakowit w zakresie od 1000 do 1800. Liczba 1000 okrela moment pauzy przed
uruchomieniem efektu, a 800 to czas trwania efektu. Obydwie wartoci s podane w milisekundach, jednostce standardowo uywanej w kodach ActionScript.
28
Efekty wizualne
Ten sposb bazuje na efekcie maski, ale we Flashu mona stosowa tylko jedn mask
dla jednego klipu filmowego. atwo mona obej to ograniczenie, umieszczajc wszystkie
klipy filmowe pseudopikseli wewntrz innego klipu, ktry posuy za mask. Nazw klipu,
ktry ma by zamaskowany, wpisujemy jako parametr do funkcji drawGrid() (zmiany
w kodzie s wyrnione):
function drawGrid (theWidth:Number, theHeight:Number,
imageClip:MovieClip):Void {
var initDot:Object = new Object();
var k:Number = 0;
//Utwrz klip maski, w ktrym znajd si wszystkie punkty.
this.createEmptyMovieClip("mask", 1)
//Przypisz go jako klip maskujcy.
imageClip.setMask(mask);
for (var i:Number = 0; i < theWidth; i += 4) {
for (var j:Number = 0; j < theHeight; j +=4){
var dotName:String = "dot" + i + "_" +j;
initDot._x = i;
initDot._y = j;
initDot.timer = 1000 + Math.ceil(Math.random()*800);
//Umie maskujce punkty w klipie-kontenerze.
mask.attachMovie("dot", dotName, k, initDot);
k++;
}
}
}
drawGrid(200, 200, image1_mc);
Teraz wszystkie klipy punktw znajduj si ju wewntrz innego klipu o nazwie mask,
ktrego uyjemy jako maski klipu filmowego o nazwie okrelonej w parametrze funkcji
drawGrid(). W tym przypadku uyjemy pliku o nazwie image1_mc, ktry utworzymy
pniej w punkcie Uywanie efektu. Najpierw jednak musimy skoczy prac nad klipami filmowymi punktw.
Tworzenie licznikw
Utworzylimy ju waciwo timer dla wszystkich punktowych klipw. Zabierzmy si
teraz do napisania kodu odpowiedzialnego za znikanie punktw.
Przejd w tryb edycji symbolu klipu dot i dodaj do niego now warstw o nazwie actions
(pierwsza warstwa na listwie czasowej ma zazwyczaj nazw scripts lub actions i suy
wycznie do przechowywania skryptw). W pierwszej klatce na tej warstwie osad nastpujcy kod:
removeMe = function () {
clearInterval(countDown);
this.removeMovieClip();
};
var countDown = setInterval(this, "removeMe", timer)
29
SPOSB
1.
SPOSB
1.
Uywanie efektu
Do korzystania z efektu potrzebne s dwa obiekty, midzy ktrymi ma by zastosowane
przejcie i ktre naley umieci na oddzielnych warstwach pierwszy obrazek lub klip
filmowy na warstwie grnej (jak na rysunku 1.5). Posugujc si panelem waciwoci,
nadaj pierwszemu klipowi nazw instancji image1_mc. Drugi obrazek moe mie dowoln nazw, poniewa i tak nie bdzie ona uywana w kodzie.
Dziaanie efektu mona przeledzi w pliku pixelMask.fla, ktry mona pobra ze strony
internetowej powiconej ksice.
Wzbogacanie efektu
Zmieniajc interwa czasowy midzy momentami zniknicia kadego punktu, mona osign rne efekty przejcia. Na przykad zmiana wartoci licznika na podstawie pooenia
punktw moe by punktem wyjciowym wielu czsto spotykanych przeksztace pikselowych:
// Zanikanie z lewej do prawej
initDot.timer = 1000 + (Math.random()*(initDot._x)*10);
// Zanikanie poprzeczne
initDot.timer = 1000 + (Math.random()*(initDot._x + initDot._y)*5);
30
Efekty wizualne
Uwagi kocowe
Maskowanie jest niedocenian funkcj dostpn we Flashu. To jedna z tych opcji, ktre
nie wydaj si zbyt przydatne, dopki nie pozna si ich lepiej. Nic zatem dziwnego, e
wiele najbardziej interesujcych efektw [Sposb 21.] tak obficie wykorzystuje maski!
SPOSB
2.
Efekty wizualne
31
SPOSB
2.
SPOSB
2.
Aby wszystko dziaao, konieczne jest przeksztacenie tekstu w prosty ksztat za pomoc
polecenia Modify/Break Apart (za chwil przekonamy si dlaczego). Ma to jednak wpyw
na plik w przypadku duej iloci tekstu powiksza do znacznie wielko dokumentu.
Jednym ze sposobw przezwycienia tej niedogodnoci jest przeksztacenie kadej litery
czcionki w oddzielny klip zawierajcy prosty ksztat i dynamiczne formowanie liter w napisy. Chocia moe si wydawa, e w ten sposb do pliku dodane zostan dodatkowe
bajty, trzeba pamita, e Flash wydajnie robi to samo, gdy w pliku SWF zapisywane s
kontury czcionek (jest to konieczne, gdy litery maj by traktowane jak elementy graficzne).
Naley take utworzy drugi klip filmowy z identyfikatorem cza o nazwie dot. Klip dot
powinien by kwadratem o wymiarach 11 piksel, a wsprzdne X i Y jak na rysunku 1.7 powinny by ustawione na 0. Do okrelenia wsprzdnych uyj panelu
waciwoci, poniewa punkt bdzie prawie niewidoczny.
Poniszy kod replikuje efekt zoom z bokw z rozmyciem, ale tym razem tekst jest naprawd rozmywany (zwykle efekt ten symulowany jest przy uyciu kanau alfa) jak
na rysunku 1.8 poniewa tekst zosta rozbity na piksele.
32
Efekty wizualne
Pomimy na razie omwienie funkcji mover() i lastMover(). Pozostay kod jest odpowiedzialny za umieszczenie tekstu na scenie i ukrycie go. Nastpnie inicjowanych jest kilka
zmiennych, m.in. te, ktre okrelaj wysoko i szeroko tekstu.
Ptla for korzysta z metody MovieClip.hitTest(), aby znale inne ni puste piksele tekstu
i utworzy dla kadego z nich klipy filmowe dot. Kademu punktowi przypisywany jest
uchwyt zdarzenia onEnterFrame() w celu dodania animacji do caego efektu (zamiast tego
mona by uy funkcji setInterval(), aby efekt by animowany [Sposb 1.]).
Efekty wizualne
33
SPOSB
2.
SPOSB
3.
Uwagi kocowe
W internecie mona znale mnstwo efektw tekstowych wykonanych we Flashu, ale
nie widziaem nigdy, eby w ktrym z nich wykorzystano przeksztacenia pikselowe.
W wykorzystaniu pseudopikseli najciekawsze jest to, e mona wtedy zastosowa dowolny
efekt czsteczkowy (np. nieg, wodospad lub efekt gwiezdnej szybkoci [Sposb 33.]).
SPOSB
3.
Wektorowy silnik graficzny Flasha ma mnstwo zalet, ale czasem chciaoby si, eby grafiki nie miay a tak rwnych krawdzi. Efekt starego filmu jest jednym z najatwiejszych
i najszybszych sposobw nadania zwykemu klipowi niepowtarzalnej atmosfery i surowego
wygldu. Efekt ten mona dodatkowo wzbogaci o zmian kolorw wideo [Sposb 8.]
lub zmian koloru na sepi [Sposb 13.] projekt bdzie wtedy bardziej intrygujcy
i atrakcyjny.
Najoczywistszym sposobem zastosowania znieksztace charakterystycznych dla starych
filmw jest dodanie wywietlanych losowo linii i kropek. Efekt jest mniej wicej taki
sam, ale atmosfera starego filmu jest jednak zupenie inna (nie tak gadka). W tym
wiczeniu wykorzystamy map bitow, ktra umoliwia uniknicie wyrazistoci grafiki
wektorowej.
Najpierw utworzymy bitmap z zakceniami w programie Photoshop, a nastpnie zaimportujemy j do Flasha i poddamy dalszej obrbce. Oczywicie zamiast Photoshopa
mona uy programu Fireworks zasady pracy s podobne w obu aplikacjach.
34
Efekty wizualne
Tworzenie bitmapy
Zabrudzenia, zadrapania i biae plamy nadaj fotografii nieco bardziej autentyczny wygld. Kurz, brud, wos lub nitka, gdy trafi na klisz lub negatyw, wygldaj jak ciemne
pasma i linie. Zadrapania s widoczne jako biae linie.
Aby przystpi do przystosowania obrazka w programie Photoshop, naley wykona
nastpujce czynnoci:
1. Otwrz program Photoshop.
2. Nacinij klawisz D, aby ustawi domylne kolory ta i pierwszego planu.
3. Nacinij klawisz X, aby zamieni kolory kolor ta bdzie czarny, a pierwszego
planu biay.
4. Utwrz nowy plik o nazwie grain.psd, klikajc polecenie Nowy w menu Plik.
Okrel wymiary mapy bitowej, aby obrazek by duszy ni szerszy. W przykadzie
wybraem 800400 pikseli, ale obrazek moe by oczywicie mniejszy (zazwyczaj
bdzie to 400200 pikseli).
5. W oknie dialogowym tworzenia nowego dokumentu sprawd, czy w polu
Wypenienie zaznaczona zostaa opcja Kolor ta (jak na rysunku 1.9).
Utworzony zostanie pusty czarny kwadrat.
6. Dodaj now warstw, klikajc ikon tworzenia nowej warstwy na zakadce Warstwy.
Bdziemy rysowa tylko na jednej warstwie, naley wic upewni si, e Warstwa 1
jest zawsze zaznaczona na zakadce warstw jak na rysunku 1.10.
Zabierzmy si do rysowania efektw. Na starych filmach mona zobaczy trzy rodzaje
znieksztace: kreski, kropki i atki oraz rysy.
Efekty wizualne
35
SPOSB
3.
SPOSB
3.
Kreski
Powstaj, gdy na filmie znajd si ciemnie, dugie pasma (np. wosy).
Kropki i atki
Ciemnie kropki powstaj wskutek zabrudzenia przez kurz lub inny materia,
a biae po zarysowaniu lub uszkodzeniu filmu.
Rysy
Powstaj wskutek zarysowania filmu, czyli mechanicznego usunicia fragmentu obrazu.
Za pomoc narzdzi dostpnych w programie Photoshop (najlepiej owka i pdzla) dodaj
trzy typy znieksztace do obrazka na Warstwie 1. Jak wida na rysunku 1.11, po lewej
stronie narysowaem mae kropki, w rodku due aty, a po prawej rysy. Narysowaem te
na dole i na grze kreski imitujce wosy na kliszy.
Posugujc si narzdziem Gumka o redniej gruboci, mona strawi kolor pikseli. W prawdziwych filmach gbokie zadrapania i inne uszkodzenia s widoczne na biao, ale wiele
znieksztace ma na powierzchni kliszy filmowej jedynie czciowy wpyw ten wanie
efekt postaramy si osign (rysunek 1.12).
36
Efekty wizualne
Chocia uylimy tylko koloru biaego, wiele efektw na starych filmach jest czarnych i je
rwnie naleaoby zastosowa.
1. Zaznacz niektre obszary biaych pikseli za pomoc narzdzia Zaznaczenie.
2. Odwr kolory zaznaczenia, klikajc Obrazek/Dostosuj/Odwrotno. Moe si wydawa,
e zaznaczone piksele znikny dzieje si tak, poniewa utworzylimy wanie
czarne piksele, ktre znajduj si na czarnym tle (wic nie znikny, a s tylko
niewidoczne).
3. Usu warstw ta (przecignij j z zakadki Warstwy nad ikon kosza w dolnej czci
zakadki).
Obraz powinien wyglda mniej wicej tak, jak na rysunku 1.13 (to w postaci szachownicy oznacza w Photoshopie kana zero alfa, czyli brak pikseli).
Zapisz obrazek jako plik PNG. Nie jest konieczne dokonywanie jego optymalizacji.
Na tym etapie wielu projektantw optymalizuje grafiki, o ile maj one zosta zaadowane
na stron WWW wykonan we Flashu. W naszym przypadku nie ma jednak takiej potrzeby.
Poczekanie z optymalizacj do momentu utworzenia pliku SWF pozwala zachowa wiksz elastyczno.
Efekty wizualne
37
SPOSB
3.
SPOSB
3.
Jeli na przykad klient zechce, aby przygotowa wersj witryny dla czy o duej przepustowoci, wystarczy zmieni w programie Flash ustawienia eksportu map bitowych.
Jeli bitmapy zostayby zoptymalizowane przed zaimportowaniem do programu, konieczne
byoby ponowne otwarcie Photoshopa i wyeksportowanie obrazkw z nowymi ustawieniami. Nastpnie naleaoby zamieni nowymi obrazkami wszystkie instancje starych
grafik na listwie czasowej Flasha. Jasno wic wida, e zaimportowanie do Flasha grafik
penej jakoci i pniejsze ich zoptymalizowanie pozwala zaoszczdzi troch czasu. Uytkownicy, ktrzy wol pracowa w programie Fireworks, mog wycign wiele korzyci
ze sposobu, w jaki ten program integruje si z Flashem (tzn. z funkcji adowania i edycji).
38
Efekty wizualne
Wykorzystaem take mask, aby ukry te elementy stylizowanego klipu, ktre nie s
widoczne na obrazku. Efekt jest widoczny na rysunku 1.16 (mona rwnie zapozna si
z plikiem grain.fla, ktry mona pobra ze strony powiconej ksice).
Efekty wizualne
39
SPOSB
3.
SPOSB
4.
Uwagi kocowe
Zaprezentowana technika moe nie tylko urozmaici krtki klip, ktry nie ma duego
znaczenia, ale take:
zamaskowa niedoskonaoci wideo (np. pikselacj spowodowan wysok kompresj),
oywi statyczne obrazki, dziki czemu bd one wydawa si ruchome,
ukry ewentualne przerwy. Jeli czone s pliki wideo lub nieruchome grafiki
(np gwna sekcja filmu i wektorowy wstp lub napisy kocowe), mona
zatuszowa poczenia, dodajc do caoci ten efekt.
SPOSB
4.
Czytelnikw na pewno zainteresuje rozszerzenie moliwoci plikw GIF poprzez zaimportowanie ich do Flasha. Udaem si wic na stron wydawnictwa OReilly (http://www.oreilly.com),
na ktrej powitaa mnie maa futrzana istota powiedziano mi, e jest to wyrak1 (rysunek 1.17). Nazwa pliku, oreilly_header1.gif, jest typowa dla obrazkw umieszczanych w tabelach HTML. Miaem wic plik GIF, nad ktrym mogem popracowa. Wyrak wyglda
tak sympatycznie, e przygldaem mu si przez jaki czas. Nagle mrugnem powiekami,
a po chwili futrzak zrobi to samo. Zdziwiem si i poczekaem chwil, eby zobaczy to
jeszcze raz miaem wic do czynienia z animowanym obrazkiem GIF.
Pomylaem, e zrobienie flashowej wersji animowanego futrzaka byoby dobrym sposobem przedstawienia rnic midzy Flashem a standardowym HTML-em. Ta sztuczka pokazuje, jak zredukowa wielko pliku, uywajc Flasha zamiast animowanych obrazkw
GIF. Gdy dwuwymiarowa animacja zostanie ju zaimportowana do Flasha, mona przeksztaci j w symulacj trjwymiarowego mrugajcego powiekami wyraka [Sposb 35.].
Zwany take tarsjuszem lub tarsjuszem wyrakiem (ac. Tarsius syrichta). Maa nadrzewna
mapiatka prowadzca nocny tryb ycia i yjca na wyspach poudniowo-wschodniej Azji.
Gatunek objty cakowit ochron przyp. tum.
40
Efekty wizualne
Efekty wizualne
41
SPOSB
4.
SPOSB
4.
42
Efekty wizualne
Prosz zwrci uwag, e w tej wersji pliku gaki oczne s grafik wektorow. Sekwencja
mrugania oczami jest klipem filmowym skadajcym si z trzech map bitowych z oczami
zamykajcymi si stopniowo i trzech bitmap, na ktrych sytuacja jest odwrcona i oczy
si otwieraj. renice to dwa punkty o nazwach leftEye_mc i righEye_mc. Po zastosowaniu poniszego skryptu renice maskotki bd poda za wskanikiem myszy (rysunek 1.20). Kod ten mona standardowo osadzi w pierwszej klatce warstwy actions na
gwnej listwie czasowej.
Funkcja followMouse() zostaa okrelona dla obydwu oczu jako uchwyt zdarzenia onEnterFrame. Po wywoaniu wczytuje pozycj startow renic i zmienia uchwyt zdarzenia
onEnterFrame na animateEye() w celu wywietlenia nastpnych klatek. Funkcja porusza
renicami o okrelon odlego od pozycji wyjciowej, opierajc si na pooeniu kursora
myszy dziki temu maskotka zdaje si ledzi wzrokiem kursor myszy.
Oczywicie maskotka moe by duo bardziej wyrazista ni animowany obrazek GIF
(jak na rysunku 1.21). Nie jest to jednak adna sztuczka na tym wanie polega Flash.
Efekty wizualne
43
SPOSB
4.
SPOSB
5.
Uwagi kocowe
Cho jest to raczej standardowa animacja, szybko, z jak zostaa przeniesiona z istniejcego pliku GIF, pokazuje, jak atwe jest tworzenie we Flashu ciekawych animacji. Bitmapy z przezroczystoci mona nakada na siebie w celu utworzenia wielowarstwowych
animacji przy wykorzystaniu animowanych obrazkw GIF. Jest to take dobry sposb
eksportowania plikw PSD wykonanych w Photoshopie do Flasha wystarczy wyeksportowa kad warstw jako oddzielny plik PNG-24, w ktry bdzie wbudowana przezroczysto. Nastpnie mona uoy pliki PNG w okrelonej kolejnoci, posugujc si
warstwami Flasha. Jedyna (oczywista) rnica polega na tym, e mona potem przystpi
do animowania warstw!
SPOSB
5.
Tym razem zajmiemy si odtwarzaniem we Flashu wielowarstwowych plikw wykonanych w programie Photoshop. Omwimy dokadnie wszystkie szczegy, poniewa s
one bardzo pouczajce (i nic nas to nie kosztuje!). Spraw uatwi znacznie dodatek do
Photoshopa o nazwie PSD2FLA (http://www.medialab.com/psd2fla) opracowany przez firm
Media Lab. Programici pracujcy z programem Director znaj firm Media Lab jako twrc
PhotoCastera, cenionego i popularnego narzdzia umoliwiajcego importowanie plikw
PSD do programu Director.
Jeli w systemie zainstalowany jest program QuickTime 4.0 lub nowszy, moliwe jest zaimportowanie pliku PSD bezporednio do Flasha. Flash najprawdopodobniej wywietli
informacj, e nie moe zaimportowa pliku, ale umoliwi wybr opcji importu za porednictwem programu QuickTime. Po klikniciu przycisku potwierdzenia obrazek zostanie zaimportowany do programu.
Narzdzie importu plikw w programie Flash rozpozna plik .psd jako dokument
programu Photoshop w wersji 2.5 lub 3. Jednak przy wykorzystaniu QuickTimea
Flash moe obsugiwa pliki wykonane w nowszych wersjach Photoshopa.
44
Efekty wizualne
Lepsze efekty uzyska si, zmniejszajc rozmiary pliku Photoshopa stopniowo. Na przykad dziki krokowym zmianom z 10001000 do 900900, 800800 a do 500500 pikseli
obrazek bdzie mia lepsz jako i dostpnych bdzie wicej opcji podczas pniejszej
kompresji.
Kolejnym powodem zmniejszenia rozmiarw obrazka jest to, e Flash nie zosta zaprojektowany do obsugi bitmap w taki sposb, w jaki zamierzamy ich uy jest przede wszystkim narzdziem do obrbki grafiki wektorowej. Mona oczywicie obej to ograniczenie,
jeli ograniczymy rozmiary map bitowych, a Flash nie bdzie musia dokonywa zbyt
wielu zmian na ekranie w kadej klatce.
Nastpnie naley poczy (spaszczy) moliwie wiele warstw, aby maksymalnie zredukowa ich liczb. Flash bdzie dziaa naprawd sprawnie, jeli uda si uzyska maksymalnie 5 6 warstw. Naley take zastanowi si nad usuniciem warstw tekstu lub
innych warstw, ktre mona wykona we Flashu (napisy mona odtworzy za pomoc
narzdzi do rysowania i pisania).
Zdecydowaem si usun wszystkie napisy poza gwnym nagwkiem (grny lewy rg).
Usunity tekst mona zastpi wyraniejszym tekstem wektorowym podczas obrabiania obrazka we Flashu. Postanowiem zachowa gwny nagwek bez zmian, poniewa
Efekty wizualne
45
SPOSB
5.
SPOSB
5.
zastosowano w nim efekty dostpne w programie Photoshop, ktrych nie uda si atwo odtworzy narzdziem do tworzenia grafiki wektorowej. Rysunek 1.23 przedstawia uproszczon wersj grafiki z usunitymi napisami.
Rysunek 1.23. Obrazek wykonany w programie Photoshop bez warstw, ktre mona odtworzy we Flashu
Nastpnym etapem jest wyeksportowanie kadej warstwy jako pliku PNG. Pracujc w Photoshopie, naley:
1. Ukry wszystkie warstwy poza t, ktra ma zosta wyeksportowana.
2. Zapisa plik w formacie PNG, klikajc polecenie Zapisz jako w menu Plik.
3. Po wyeksportowaniu wszystkich warstw ponownie zaadowa pliki PNG,
na ktrych jest duo wolnego miejsca na przykad jak wok licia na rysunku 1.24
i przyci je, aby pozby si zbdnych pikseli alfa (rysunek 1.25).
Wrmy teraz do oryginalnego pliku PSD, nie zamykajc Photoshopa mona wykona
zrzut obrazka, jeli nie dysponuje si wystarczajc iloci pamici RAM, umoliwiajc
jednoczesne dziaanie obydwu programw. Obrazek bdzie jeszcze potrzebny.
We Flashu okrel takie same rozmiary sceny, jakie ma grafika PSD, i zaimportuj wszystkie
pliki PNG do biblioteki, klikajc File/Import/Import to Library (Flash MX 2004) lub File/
Import to Library (Flash MX).
46
Efekty wizualne
Efekty wizualne
47
SPOSB
5.
SPOSB
5.
Aby animowanie bitmap byo wygodne, zalecane jest przeksztacenie ich w klipy filmowe
(tzn. umieszczenie ich w klipach filmowych, poniewa mona pniej korzysta z metod
i efektw animacyjnych dostpnych dla klipw):
1. Przecignij po kolei kad bitmap z biblioteki na scen.
2. Zaznacz bitmap.
3. Nacinij klawisz F8, aby utworzy symbol klipu filmowego. Dla wygody dobrze jest
zachowa nazwy obrazkw, ale doda do nich przyrostek _mc.
Mamy wic teraz kilka bitmap o przezroczystych tach, ktre mona umieszcza na scenie
Flasha tak samo, jak warstwy w oryginalnych obrazkach PSD. Na rysunku 1.26 pokazano
mapy bitowe w bibliotece Flasha.
Umie rcznie klipy filmowe na listwie czasowej (lub w innym klipie w zalenoci
od tego, jak bd prezentowane) w tym samym porzdku i pooeniu, co w oryginalnym
pliku PSD. Efekty dostpne w programie Photoshop (np. rozjanienie, ciemnienie itp.)
mona emulowa we Flashu, posugujc si efektami kolorystycznymi. Oczywicie mona
wprowadzi zmiany, aby flashowa wersja przeznaczona na stron WWW (rysunek 1.27)
rnia si od wersji drukowanej wykonanej w Photoshopie.
48
Efekty wizualne
Efekty wizualne
49
SPOSB
5.
SPOSB
6.
Drzewko na Brooklynie
Uwagi kocowe
Pki planowane animacje nie wpywaj znaczco na wydajno procesora lub nie wymagaj zastosowania duych grafik (naleaoby wtedy pomyle o uyciu programu Director),
mona skorzysta z przedstawionego w tym rozdziale sposobu przeksztacenia plikw
PSD w obrazki PNG i zaimportowania ich do Flasha. Sposb ten okae si take pomocny,
jeli witryna ma zosta urozmaicona o wykonane w Photoshopie wizualizacje lub dokumenty przygotowane do druku. Mona wtedy posuy si narzdziem autorw PSD2FLA
programem PhotoWebber (http://www.photowebber.com).
Bazujc na swoim dowiadczeniu, mog powiedzie, e wielko ostatecznego pliku SWF
moe by znacznie mniejsza zwaszcza w porwnaniu z oryginalnym plikiem PSD. Zazwyczaj plik SWF ma tak sam wielko, jak statyczny obrazek JPEG redniej lub wysokiej jakoci.
SPOSB
6.
Drzewko na Brooklynie2
Tworzenie generatora drzew.
W tym wiczeniu za pomoc standardowych metod (fraktali, rekurencji, algorytmu powtarzania i skalowania) utworzymy wygldajce naturalnie drzewo. Nastpna sztuczka
bdzie polega na utworzeniu animacji przy wykorzystaniu wbudowanej hierarchii klipw
filmowych. Mwic po ludzku: chodzi o to, e zasadzimy drzewko, ktre bdzie koysa
gaziami na wietrze [Sposb 7.]. Zrobimy to, naladujc w kodzie zjawiska natury.
Na pierwszej konferencji Flash Forward (http://www.flashforward2004.com), w ktrej uczestniczyem, Josh Davis opowiada o swoich inspiracjach. Wykad trwa 45 minut, ale jego
sens zawiera si w jednym zdaniu: Przyjrzyjcie si naturze zobaczcie, czym was obdarowuje i jak mona to wykorzysta.
2
Tytu ksiki Betty Smith (A Tree Grows in Brooklyn, 1943) przeniesionej na duy ekran
przez Eli Kazana w 1945 roku przyp. tum.
50
Efekty wizualne
Drzewko na Brooklynie
W internecie mona znale wiele tego rodzaju eksperymentw, a w ksice takiej, jak ta
nie moemy przej obok nich obojtnie.
Fraktale
Aby zdoby potrzebne informacje przyrodnicze, przeprowadziem krtk rozmow z moj
dziewczyn, Karen. Obowizuje nas jasny podzia obowizkw: ona zajmuje si ogrodem,
ja komputerem.
Oto, czego si dowiedziaem, nie wystawiajc nosa za drzwi. Drzewa rosn wedug prostego, zazwyczaj regularnego wzorca. Ga jest prosta do okrelonego punktu, pniej
odczaj si od niej inne gazie. Grubo gwnej gazi jest zazwyczaj proporcjonalna
do gruboci gazi, ktre z niej wyrosy zazwyczaj obwd jest porwnywalny (cakowita grubo pnia odpowiada w takim samym lub zblionym stopniu gruboci gazi,
wypuszczonych z tego pnia). Oznacza to, e moda gazka ronie i rozwija si zupenie
tak samo, jak gwna ga: wymiary s porwnywalne. Wiadomo, e istnieje zaleno
midzy drzewem a gazi, poniewa jeli zasadzi si sadzonk (a raczej: jeli Karen to
zrobi; moje zawsze usychaj), to wyronie drzewo.
Uzbrojony w t wiedz, zabraem si do opracowania generatora drzew. Dwa przykadowe wyniki moich prac mona zobaczy na rysunku 1.28.
Efekty wizualne
51
SPOSB
6.
SPOSB
6.
Drzewko na Brooklynie
Obydwa drzewa zostay utworzone przy wykorzystaniu tego samego kodu. Oto kod
z pliku treeGen.fla, ktry mona pobra ze strony powiconej ksice:
function counter() {
if (branchCounter == undefined) {
branchCounter = 0;
}
return (branchCounter++);
}
function grow() {
//Wypu ga
this.lineStyle(trunkThickness, 00, 100);
this.moveTo(0.0);
this.lineTo(0, trunkLenth);
//Jeli to nie jest pie, zmie kt i grubo gazi.
if (this._name ! = "trunk") {
this._rotation = (Math.random()*angle angle/2;
this._xscale *= branchSize;
this._yscale *= branchSize;
}
//Pu pdy
var seed = math.ceil(Math.random()*branch);
for (var i = 0; i < seed; i++) {
if (counter() < 3000) {
var segment = this.createEmptyMovieClip("segment" + i, i);
segment.onEnterFrame = grow;
segment._y = trunkLength;
}
}
delete (this.onEnterFrame);
}
//Zdefiniuj pooenie pnia i ustaw uchwyt onEnterFrame na grow().
this.createEmptyMovieClip("trunk", 0);
trunk._x = 200;
trunk._y = 400;
trunk.onEnterFrame = grow;
//Parametry drzewa
var angle = 100;
var branch = 5;
var trunkThickness = 8;
var trunkLength = -100;
var branchSize = 0,7;
Podstawowy ksztat drzewa jest zdefiniowany przez parametry w ostatnich kilku liniach kodu:
Angle (kt)
Maksymalny kt tworzony przez ma i du ga.
Branch (ga)
Maksymalna liczba pdw (modych gazek), jakie moe mie jedna ga.
TrunkThickness (grubo pnia)
Grubo pnia drzewa.
52
Efekty wizualne
Drzewko na Brooklynie
Nastpnie utworzone zostaj nowe gazki midzy 1 a branch. Najciekawsze jest to, e
do pdw przypisany jest ten sam uchwyt zdarzenia onEnterFrame, co do biecej gazi
grow() i w nastpnej klatce pdy wypuszcz kolejne pdy, i tak dalej, i tak dalej.
Oto fragment funkcji grow(), ktry tworzy nowy klip filmowy dla kadego pdu i przypisuje do niego uchwyt zdarzenia onEnterFrame. Drzewo mogoby wypuszcza nowe
gazie bez koca, ale musimy przecie ustali jaki koniec. W przeciwnym razie Flash
bdzie pracowa coraz wolniej, a w kocu przestanie odpowiada. Do tego wanie suy
funkcja counter() ogranicza ona cakowit liczb gazi do 3000.
var seed = Math.ceil(Math.random()*branch);
for (var i = 0; i < seed; i++) {
if (counter() < 3000) {
var segment = this.createEmptyMovieClip("segment" + i, i);
segment.onEnterFrame = grow;
segment._y = trunkLength; }
}
Efekty wizualne
53
SPOSB
6.
SPOSB
7.
7.
54
Efekty wizualne
Aby utworzy efekt wiatru, naley po prostu napisa funkcj sway(), ktra okrela warto
wind (wiatr) dodawan do kadej gazi w kadej klatce animacji za pomoc teje funkcji:
function sway() {
this._rotation += wind;
}
Oczywicie naley okreli wartoci pocztkowe parametrw wiatru. Oto ostateczne wartoci, ktre zastosowaem w tym przykadzie (nowe parametry zaznaczone s tustym
drukiem):
//Parametry drzewa
var angle = 100;
var branch = 5;
var trunkThickness = 8;
var trunkLength = -100;
var branchSize = 0.7;
//Parametry wiatru
var windEffect = 0.05;
var windStrength = 1;
var wind = 0;
Efekty wizualne
55
SPOSB
7.
SPOSB
7.
Uwagi kocowe
Chocia w kodzie wykorzystanych zostao kilka sztuczek, to najwiksza jego zalet jest
zastosowany sposb mylenia. Kopiowanie natury i otaczajcej nas rzeczywistoci jest
sprawdzon metod odkrywania nowych moliwoci Flasha.
Poniewa program ten jest graficznym rodowiskiem programistycznym, po napisaniu
kodu mona natychmiast zapozna si z efektem graficznym. Jeli postanowicie zasadzi wicej ni jedno drzewo, sprawdcie, czy efekt jest realistyczny, gdy wiatr wieje
z rnym nateniem. Wydaje mi si, e dziki drobnym nierwnociom cao bdzie
blisza rzeczywistoci prawdziwy wiatr wiejcy z okrelonego kierunku najmocniej
atakuje drzewa skrajne, ktre wyhamowuj jego si. Kolejne drzewa poruszaj si ju
mniej energicznie.
Moj muz nie jest jednak natura, ale gry wideo. Myl, e wszystkie problemy, przed
jakimi staj projektanci animacji, zostay ju rozwizane przez zespoy zajmujce si produkcj gier wideo. To ju jednak zupenie inna bajka
56
Efekty wizualne