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
Jzyk skryptowy to nie jest zbyt adna nazwa, ale mona za jej pomoc opisa bardzo
wiele, JEELI (i jest to naprawd wielkie jeeli) wie si, jak jej uywa. W firmie
Macromedia szybko zdano sobie spraw z tego, e adna nazwa bywa przydatna, dlatego
nadano jzykowi sympatyczne miano ActionScript. Brzmi to znacznie bardziej
atrakcyjnie, ale ani troch nie pomaga w zrozumieniu jak go uywa?. I dlatego
pojawia si ta ksika.
Ksika podzielona jest na trzy gwne czci. W pierwszej z nich zajmiemy si
opanowaniem podstawowych umiejtnoci, w drugiej przejdziemy do zada
specjalistycznych. Trzecia cz to studium tematu. Naszym pierwszym zadaniem bdzie
wic nauka poprawnego posugiwania si jzykiem ActionScript, drugim -- pogbienie tej
wiedzy, a na koniec przejdziemy do przykadw ilustrujcych sposb, w jaki to wszystko
rzeczywicie dziaa. Autorzy to dowiadczeni i aktywni projektanci witryn, programici
albo ludzie czcy obie te funkcje, ktrzy zgbili tajemnice Flasha. Teraz postaraj si
odkry przed tob arkana programowania we wspaniaym jzyku, jakim jest ActionScript.
Cz 1. Podstawowe umiejtnoci
W tej czci ksiki przybliymy podstawow wiedz, ktr powiniene opanowa, zanim
przystpisz do tworzenia kodu, ktry bdzie cechowa si przejrzystoci
i funkcjonalnoci. Nauczymy ci, jak uywa nowych konstrukcji, polece i pokaemy,
ile zasad programowania obiektowego zawiera jzyk ActionScript i jakie to moe mie dla
ciebie znaczenie.
Cz 2. Specjalizacja
Przejdziemy do szczegowego omwienia niektrych aspektw podstawowych
umiejtnoci, pokazujc na przykadach, w jaki sposb mog by zastosowane w twoich
projektach. Omwione zostan midzy innymi nowe obiekty typu Sound i XML, tworzenie
prawdziwego engine'u 3D na podstawie tablic, uycie Generatora do uaktualnienia filmw
Flasha. Dowiesz si take, jak praca zespoowa moe bardzo rozwin inwencj twrcz.
Cz 3. Studium tematu
To ju koniec okresu ochronnego; nie licz wicej na ulgowe traktowanie. W tej czci
ksiki najlepsi projektanci odsoni niektre ze swoich sekretw, aby pokaza, jak
tworz niesamowite i niepowtarzalne witryny. Znajdziesz tu dwa zaawansowane
przykady, dziki ktrym dowiesz si, jak opracowa od pocztku do koca jedyny w
swoim rodzaju interfejs oraz przekonasz si, e nowy dodatek do Flasha -- XML -- moe
nie tylko zrewolucjonizowa wymian danych, ale take wpyn na wygld witryny.
Po tym wszystkim nie bdziesz mia problemw z Flashem.
O Autorach .................................................................................................................11
Rozdzia 1. Wstp .......................................................................................................11
Co znajduje si w ksice? ....................................................................................................................11
Ewolucja jzyka ActionScript, czyli co powiniene wiedzie..................................................................12
Co nowego?.....................................................................................................................................13
Nowe sposoby adresowania i notacji ..............................................................................................14
Nowy interfejs .................................................................................................................................15
Nowe sposoby usuwania bdw ....................................................................................................21
Operatory.........................................................................................................................................23
Podsumowanie ................................................................................................................................24
Konwencje uyte w ksice...................................................................................................................24
Spis treci
Rozdzia 9. 3D Flash.................................................................................................279
Pozorny efekt trjwymiarowy .............................................................................................................279
Tworzenie efektw 3D ..................................................................................................................280
Dodawanie cieni do kostki ............................................................................................................289
Prawdziwy 3D we Flashu ....................................................................................................................290
Przedstawianie danych trjwymiarowych we Flashu ...................................................................290
Podsumowanie.....................................................................................................................................327
Spis treci
Skorowidz..................................................................................................................607
We wszystkich niemal przypadkach dwik jest nieodczn czci takich mediw jak
telewizja czy kino. Gdy zastanawiamy si, jak zwikszy potencja tworzonej przez nas
witryny, moemy sobie zada pytanie o to, co rni Internet od innych mediw. Wprowadzenie dwiku spotguje wraenie, jakie nasz projekt wywoa na uytkownikach.
W przeszoci nie byo to bardzo popularne, poniewa nakadao zbyt due wymagania
na ograniczon przepustowo czy, ale wraz z szerokim rozpowszechnieniem si rnorakich metod kompresji (na przykad MP3), dwik pojawiajcy si w witrynach sta
si bardzo atrakcyjnym dodatkiem.
W tym rozdziale zastanowimy si nad tym, jak mona radzi sobie z dwikiem za pomoc doczonych do jzyka ActionScript Flasha 5 metod obiektw typu . Omwimy rwnie kilka przyczyn, ktre powoduj niepoprawne dziaanie tych instrukcji
i rzecz jasna, zaproponujemy od razu rodki zaradcze. Postaramy si, aby wprowadzenie do zagadnie zwizanych z dwikiem byo jak najprostsze i przyjazne dla czytelnika.
W tym rozdziale przygldniemy si tylko dwikom sterowanym przez zdarzenia. Flash
umoliwia rwnie strumieniowe przesyanie dwiku, ale dowiadczenie podpowiada,
e stosowanie tego w bardzo rozbudowanej witrynie jest bardzo naraone na bdy.
Jest to zwizane z tym, e Flash inicjujc strumieniowe przesyanie dwiku skupia si
tylko na nim (zamiast na listwie czasowej). Jeli z jakiego powodu nie moe ona
nady za przesyaniem strumieniowym, Flash pomija kolejne ujcia, aby dotrzyma
kroku dwikowi. Mona to przyj, gdy korzystamy z listwy czasowej bazujcej na
animacji automatycznej, ale nikt, kto bdzie wykorzystywa skrypty nie moe sobie
na to pozwoli. Jest bowiem bardzo prawdopodobne, e ujcia, ktre mog zosta
pominite zawieraj wane skrypty inicjujce lub istotne algorytmy. W dodatku
rozbudowane witryny opierajce si na skryptach czsto zawieraj wiele maych ptli
w poszczeglnych listwach czasowych. To wszystko powoduje, e nie mona pogodzi
skomplikowanych witryn z dwikiem pobieranym strumieniowo.
236
Nie przejmuj si tym, e nie wiesz, jak to dziaa w jzyku ActionScript, bo dokadniej
przeanalizujemy to nieco pniej. W tej chwili moemy si nieco pobawi. Na samym
pocztku wcz urzdzenie klikajc odpowiedni przycisk. Gdy bdziesz porusza prawym pokrtem (po prostu kliknij i przytrzymaj kursor na potencjometrze w okolicy
wskanika w postaci kropki, a nastpnie przesuwaj go w dowolnym kierunku), zobaczysz, e na ekranie pojawiaj si dwa goniki reprezentujce poziom gonoci. Gdy
bdziesz j zwiksza lub zmniejsza goniki bd zachowyway si analogicznie.
Teraz za pomoc potencjometru reguluj balans dwiku w panoramie stereo. Warto zauway, e gdy tylko zmienisz pooenie, powiedzmy, na prawo od rodka, nie wpynie
ono w tym momencie na gonik po prawej stronie, a raczej zmniejszy poziom gonoci gonika znajdujcego si po lewej stronie. Jeli nie zwrcilibymy w tej chwili na to
uwagi, to ta dosy subtelna kwestia mogaby pniej spowodowa wiele rnych problemw zwizanych z pojciami ktre bd istotne, gdy dojdziemy do okrelania wartoci liczbowych dla obiektw kontrolujcych, czyli potencjometrw.
Zwr rwnie uwag na wspdziaanie poziomu gonoci i balansu dwiku. Pokrto poziomu gonoci ustawia maksymaln gono obu gonikw, natomiast pokrto
balansu zmienia ich gono w zakresie od zera do wartoci ustalonej przez potencjometr poziomu gonoci. Zamieniajc je na wartoci, ktre bdziemy stosowa we Flashu uzyskamy wynik, ktry mona zobaczy na kolejnym rysunku.
237
Kontrolowanie gonoci dwiku jest proste zero to jej brak (albo 0%), a jej maksymalna warto rwna jest 100. Z balansem dwiku sprawa ma si nieco inaczej
w rodku, to znaczy wtedy, gdy poziom dwiku jest w rwnowadze, ma warto zero.
Gdy jest ustawiony na maksimum z lewej strony, to znaczy wtedy, gdy dwik pynie
tylko z lewego gonika przyjmuje warto minus 100. Gdy natomiast ustawiony jest na
maksimum z prawej strony, oznacza to, e dwik pynie tylko z prawego gonika i ma
warto 100.
Na powyszym rysunku przedstawiona zostaa sytuacja w ktrej poziom gonoci jest
ustawiony na okoo 50%, przy czym w prawym goniku usyszymy dwik z pen
moc, a lewy wykorzystuje tylko okoo 50% swojej mocy. Zamieniajc to na wartoci
uywane przez obiekty typu w jzyku ActionScript Flasha 5 mona by powiedzie, e oba potencjometry s ustawione w pobliu 50. Jest to wszystko, co powiniene
wiedzie w tej chwili. Tymczasem zajmiemy si czym innym.
238
239
Warto doda w tym miejscu pewne ostrzeenie. Flash nie sprawdza tego, czy dana nazwa jest niepowtarzalna, a zatem warto je gdzie zapisywa, albo zastosowa okrelone
konwencje nazewnictwa. W przeciwnym wypadku moesz zetkn si z pewnymi niepodanymi efektami.
Gdy bdziemy mieli przygotowany dwik, moemy doczy go do obiektu typu ,
ktry zosta stworzony za pomoc jzyka ActionScript korzystajc z nastpujcego kodu:
W tym kodzie:
jest nazw obiektu typu . To znaczy, e podlega wszystkim zasadom
dotyczcym zmiennych w jzyku ActionScript. Oznacza to z kolei, e moliwy
jest dostp do niej z dowolnego miejsca poza listw czasow, na ktrej zostaa
zdefiniowana, a take to, e moesz uywa cieek adresowych w notacji kropkowej;
jest ciek adresow odnoszc si do listwy czasowej, na ktrej zostanie
stworzony obiekt typu . Zazwyczaj jego parametry nie s wyszczeglnione
(w takim przypadku Flash bdzie go tworzy na aktualnej listwie czasowej).
Czasami warto jest stworzy wszystkie obiekty dwikowe w tym samym miejscu
(takim jak gwna listwa czasowa czy okrelony klip filmowy) po to, aby wiedzie,
gdzie wszystkie si znajduj i w jakim punkcie zostay zdefiniowane.
Jak sugerowaem powyej, jeli chcesz stworzy obiekt typu w innym miejscu ni
listwa czasowa, na ktrej aktualnie si znajdujesz, powiniene doda ciek adresow
w nawiasach. Gdy chcesz zastosowa polecenie , upewnij si wczeniej, czy
dana cieka istnieje, bo w przeciwnym wypadku obiekt w ogle nie bdzie stworzony.
Z tego powodu zwykle lepiej jest tworzy je z listwy czasowej, do ktrej chcesz je doda.
Nastpnie wpisz nastpujce polecenie, aby doczy do obiektu
plik dwikowy :
240
Jeli przetestujesz teraz film, usyszysz jednokrotne odtworzenie si dwiku Winner_02. Jeli chcesz go zatrzyma zanim dojdzie do swojego koca, moesz kilka uj
dalej na listwie czasowej doda nastpujc instrukcj:
Metoda Sound.start
Wrmy jednak do metody , ktr zastosowalimy w poprzednim przykadzie. Ma
ona kilka parametrw, ktre moemy wymieni, aby uzyska lepsz kontrol nad odtwarzanym dwikiem:
W tym przypadku
jest liczb odtwarzanych sekund dwiku, a jest liczb
powtrze. Aby dowiedzie si, jak dugi jest dany dwik, zaznacz go, a nastpnie
kliknij w oknie biblioteki pozycj menu Options/Properities. Jeli na przykad Winner_02 trwa 3,8 sekundy, a chcielibymy zacz w poowie pliku jego odtwarzanie
i powtrzy to dwa razy, naley zastpi poprzedni instrukcj nastpujc:
Flash stosuje
w kadej ptli, a zatem dwik bdzie za kadym razem rozpoczyna
si od rodka. W przypadku , najwysz wartoci, jak moemy zastosowa jest
214748. Gdy zostanie ona wpisana, dwik bdzie powtarza si niemal w nieskoczono.
241
Moe si zdarzy, e dwik, ktrym dysponujesz, ma niepodane opnienie na pocztku albo co w rodzaju biaego szumu, ktry chcesz pomin. Jeli potrafisz rozrni punkt, od ktrego chcesz zacz przyglda si ksztatom fali dwikowej, dobrym rozwizaniem moe by tymczasowe doczenie dwiku do ujcia, a nastpnie
przejcie do okna Edit Envelope za pomoc polecenia Edit w panelu Sound. Zaznaczajc ikony znajdujce si na dole po prawej stronie okna moesz osign kilka celw.
Moesz dowiedzie si, po jakim czasie (w sekundach) zaczyna si okrelona cecha
ksztatu fali i zastosowa j jako zmienn
. W przedstawionej na rysunku fali
mona zaobserwowa przerw w dwiku, ktra koczy si dokadnie po trzech
sekundach. Powikszajc za pomoc ikony szka powikszajcego ksztat fali
mona dokadnie zaznaczy punkt koczcy t przerw.
Mona przeksztaci sekundy na ujcia wczajc w oknie Edit Envelope
pokazywanie skali czasu w ujciach. Moesz przecza te dwa widoki klikajc
w trzeci i czwart ikon, znajdujc si na dole po prawej stronie.
Potem stwrz nowe ujcia drugie i trzecie, a nastpnie zmie nazw aktualnej warstwy na actions. W ujciu drugim dodaj:
#
$
242
Skrypt bdzie teraz tworzy zmienne nazwane
i , a nastpnie obiekt typu
o nazwie , ktry bdzie odtwarza si w cigej ptli. W ujciu drugim i trzecim
zachowane jest dostarczanie zmiennych, aby ustawi balans i gono dwiku.
Aby rozrni zmienne
i , stwrz now warstw nazwan , umie w niej
dwa wejciowe pola tekstowe z opcjami pokazanymi na kolejnym rysunku, a nastpnie
nadaj im nazwy zmiennych odpowiednio
i . Nie zapomnij doda znaku minus
w polu tekstowym znajdujcym si na dole po prawej stronie, bo w przeciwnym wypadku nie bdziesz mg wpisywa wartoci ujemnych.
W tym przypadku vol i pan s jedynie statycznymi polami tekstowymi, ktrych zadaniem jest przypominanie o rodzaju pola. Aby si upewni, czy wszystko jest w porzdku, zobacz, czy twoja listwa czasowa wyglda tak jak na rysunku. Skoczony film
znajdziesz w pliku specialFXTest.fla:
Gdy uruchomisz film, usyszysz odtwarzan w kko melodyjk. Bdziesz mia rwnie
moliwo wprowadzania aktualnych wartoci gonoci i balansu dwiku za pomoc
pl tekstowych. Wprowadzenie do pola wartoci z zakresu od 0 do 100 pozwoli na
kontrol gonoci od 0 do 100%, za umieszczenie w polu
wartoci z zakresu 100
do 100 bdzie dzielio dwik midzy prawy a lewy gonik.
Umieciem w tym przykadzie pola tekstowe zamiast suwakw z jeszcze jednego
powodu Flash umoliwia wykroczenie poza ustalone wartoci maksymalne zarwno
gonoci, jak i balansu dwiku. Jeli wprowadzisz wartoci spoza zaprezentowanego
wczeniej przedziau, odkryjesz, i Flash generuje przesterowane wersje prbek
dwikowych. Nie jest to podany efekt, gdy uzyskasz go przez przypadek,
ale jeli specjalnie zastosujesz do tego prbki gitary albo basw, moe si
to okaza przydatne w kompozycji dwikowej.
243
W efekcie utworzone zostan dwa obiekty typu powizane z tym samym dwikiem, ktre bd odtwarzane z niewielkim opnieniem jednego wzgldem drugiego.
Wydawa by si mogo, i jeli zmienisz ostatni lini, tak jak to pokazano, to nie usyszysz adnego opnienia:
W ujciu pierwszym twojej listwy czasowej, wstaw krtki dwik wczytywany strumieniowo. Moe to by dowolny dwik. Aby nie dao si go usysze, ustaw gono
na zero w oknie Edit Envelope. Dwik musi trwa przez kilka uj, po ktrych moesz
bezpiecznie zacz wydawa polecenia dwikowe w jzyku ActionScript wiedzc, e
244
Gra pochodzi z pocztku lat osiemdziesitych. Pocztkowo funkcjonowaa na konsolach w salonach gier,
pniej zostaa przeniesiona na wszystkie platformy sprztowe (od omiobitowych po komputery typu PC).
Polegaa na zestrzeliwaniu pojazdw kosmicznych, ktre pojawiay si na grze ekranu, a w trakcie gry
stopniowo obniay swj lot. Gra koczya si, gdy ktry z obcych zderza si ze statkiem pilotowanym
przez gracza przyp. tum.
245
Skoczony przykad znajduje si w pliku invader.fla, ale jeli chcesz krok po kroku ledzi
to, jak powstawa, lepiej bdzie, gdy wykorzystasz do tego celu plik invaderSound.fla,
gdy zawiera on zaimportowane do biblioteki pliki dwikowe. Niezalenie od tego, co
wybierzesz, podzielimy to wiczenie na dwie czci:
tworzenie efektu dwikowego;
wprowadzenie moliwoci sterowania gonoci i balansem dwiku.
Dziki temu stworzymy obiekty typu . Nastpnie zostan do nich doczone
dwiki, ktre bd nam potrzebne. Zwr uwag na to, e w przypadku, gdy nie okrelamy cieek adresowych na etapie tworzenia obiektw, wszystkie dwiki s umieszczone na gwnej listwie czasowej. Bdziemy si na tym opiera w przyszoci.
246
Zdefiniowaem w tym miejscu zmienne suce do przechowywania wysokoci i szerokoci ekranu, poniewa wiem, e wczeniej czy pniej bd nam potrzebne.
Aby obcego dao si przeciga po ekranie, musimy zastosowa okrelony przycisk.
Najbardziej odpowiedni bdzie niewidoczny przycisk, z ktrym zapoznalimy si w poprzednim rozdziale. Stwrz jeden przycisk tego typu i nadaj mu nazw invisible button.
247
Gdy ten klip si wczyta, Flash bdzie przyglda si zmiennej globalnej
i tworzy zmienn lokaln o nazwie . Nawiasem mwic jest to lepsza technika ni pozornie prostsze zastosowanie polecenia:
) ('
Zastosowaem takie rozwizanie, bo wziem pod uwag to, e jeli bdziesz budowa
kilka klipw filmowych, z ktrych kady bdzie uywa zmiennej (czy
wywodzcych si z niej innych zmiennych), bdziesz za kadym razem mia wiele pracy chcc zmieni rozmiar ekranu. Umieszczenie takich zmiennych jak
w ujciu pierwszym gwnej listwy czasowej na dusz met pozwala oszczdzi wiele
czasu, poniewa w ten sposb masz do dyspozycji jedno, sensowne miejsce, w ktrym
moesz wprowadza zmiany.
Druga zmienna reprezentuje ostatni znany przedzia, w ktrym
umieszczony by obcy. W przedziale pierwszym rwna si i pewnie sam
moesz si domyli, jakie wartoci przyjmowa bdzie w kolejnych przedziaach
drugim, trzecim, czwartym i pitym. Porwnujc t zmienn z aktualn wysokoci
248
Pierwsza linia tego detektora zdarze dziaa w obrbie przedziau, w ktrym si znajdujemy. !"# nadaje warto cakowit w zakresie od 0 do 4, a dodajc do niej 1
upewniamy si, e jest liczb z zakresu od 1 do 5, ktra odpowiada naszym piciu dwikom (od do ).
Warunek, ktry pojawia si w pierwszym wyraeniu warunkowym #, porwnuje warto zmiennej z , aby stwierdzi, czy obcy przekroczy granic przedziau. To porwnanie zawsze bdzie miao warto logiczn , jeli bdzie to
pierwsze uruchomienie skryptu, poniewa w tym wypadku jest rwne .
Jeli przekroczylimy granic, to pierwsz rzecz, jak musimy zrobi, jest wyczenie
aktualnie odtwarzanego dwiku. Moemy do tego celu wykorzysta rne tablice, albo
uy innych sposobw, ale znacznie prostszym i szybszym rozwizaniem jest wyczenie ich wszystkich.
Ostatnia instrukcja #""" #""" sprawdza zatem warto zmiennej , aby
okreli, ktry z obiektw typu uruchomi ponownie. Na kocu ustawiamy warto zmiennej $ , aby przej do nastpnej iteracji.
249
Jeli uruchomisz teraz film, usyszysz przeraajce bicie serca, ktre bdzie si nata,
gdy bdziesz przemieszcza obcego najedc w d ekranu. A zatem zakoczylimy
nasze zadanie. Stworzylimy bardzo prosty skrypt umoliwiajcy wybr pomidzy kilkoma
rnymi odgosami dwikowymi na podstawie zdarze warunkowych. Moe to by znacznie lepsza technika ni struktura opierajca si na gwnej listwie czasowej, do ktrej
stosowania bylimy zmuszeni, gdy nie znalimy jzyka ActionScript. Obecnie moemy
tworzy efekty dwikowe, ktre bd reagowa na wszystko, co wskaemy, nie musz
by odtwarzane po kolei ani doczane do prostego przycisku czy klipu filmowego.
250
Ten obiekt typu jest inny ni pozostae, poniewa odnosi si on do caej listwy
czasowej, nie za do okrelonego dwiku. Jako e celem tym razem jest cieka adresowa (a nie nazwa podana jako cig znakw), nie musi by ona ujta w cudzysw.
Jakakolwiek manipulacja na obiekcie ) bdzie wpywaa na wszystkie dwiki
znajdujce si na ciece % w tym przypadku na wszystkie inne dwiki, ktre
pojawi si w przykadzie. Oczywicie bdzie mona kontrolowa pojedynczy obiekt
typu , ale zajmuje si tym rwnie obiekt ), ktry bdzie definiowa maksymaln gono wszystkich dwikw.
Aby zobaczy, jak to dziaa, dodajmy elementy sterujce, ktre bd odpowiaday za to,
aby obiekt wykonywa pewn prac. Stworzyem bardzo proste przecigane przyciski, aby
zademonstrowa dziaanie obiektu, ale moesz zastosowa jakie odlotowe rozwijane
menu z metalizowanymi, bardzo realistycznie wygldajcymi suwakami i wykresami
przedstawionymi za pomoc diod LED, kiedy bdziesz to samo robi w swojej witrynie.
Na pocztku stworzymy swego rodzaju suwak sucy do regulacji gonoci, ktry bdzie mona przeciga w d i w gr. Jego pooenie pocztkowe bdzie znajdowao
si na dole ekranu po prawej (100 pikseli od krawdzi). Ruch suwaka w gr bdzie
zmniejsza cakowit gono a do 0%.
Suwakiem bdzie przesuwany krek, ktry bdzie dziaa podobnie jak najedca z kosmosu. A zatem stwrz nowy klip filmowy, nazwij go volWidget, zmie nazw jego jedynej warstwy na text, a nastpnie dodaj dwie nowe warstwy button i graphics.
W tej ostatniej umie mae koo, jak pokazano na lewym rysunku znajdujcym si poniej. Upewnij si, czy punkt odniesienia znajduje si w rodku tego koa. W warstwie
251
buttons dodaj inny klon niewidocznego przycisku i dopasowuj jego rozmiar tak, aby
pokry sob okrg. Na kocu w warstwie text umie statyczne pole tekstowe z napisem
vol (jest to skrt od angielskiego volume gono).
Aby krek mona byo przeciga, musisz doczy poniszy kod do skryptu niewidocznego przycisku:
2
3%
<??%
4
5
2
3%
4
252
Suwak balansu bdzie przemieszcza si z prawej na lew stron, 100 pikseli od dou
ekranu. Gdy znajdzie si porodku (czyli osignie warto 0 bdzie w rwnowadze),
dwik bdzie rozdzielony po rwno midzy gonikami, a pooenia najbardziej oddalone na prawo i lewo bd odpowiaday ustawieniom tylko prawej i tylko lewej strony
prawemu i lewemu gonikowi.
Aby to zaprogramowa, musimy przecign kopi panWidget na obraz tego samego
ujcia i tej samej warstwy, w ktrej znajduj si ju dwa inne klipy filmowe i zaprojektowa nieco inn par detektorw zdarze:
253
6
7
2
%81
$
%(
%(
80
%9
8?
$
8
4
6
7
:2
8?9
$
(
8 &$
4
Ogranicza to ruch suwaka do poziomego paska, ktry znajduje si 100 pikseli nad doln
krawdzi ekranu i utrzymuje go w widocznym obszarze.
Interesujcym efektem ubocznym, ktry uzyskalimy zajmujc si dwoma suwakami
jest to, i nie ma znaczenia, w ktrym miejscu obrazu je ustawisz, gdy za pomoc detektorw +
, przemieszcz si one do swoich waciwych pozycji. Jeli
przetestujesz teraz film (albo moj wersj invader2.fla), zobaczysz, e:
poruszanie najedc powoduje wybr odpowiedniego dwiku do odtworzenia;
ruch obu suwakw zmienia wartoci gonoci i balansu niezalenie od tego,
jaki dwik si aktualnie odtwarza.
254
255
Kocowy sygna wyjciowy bdzie natomiast przesterowan wersj oryginalnego dwiku z dodanym pogosem. Wszystko to moe by zmieniane w czasie rzeczywistym za
pomoc kilku suwakw! Kto jeszcze bdzie chcia gra na gitarze, skoro mamy Flasha?
Moesz zatem zacz doczanie dwikw do listwy czasowej (jeden na kad warstw tak, jak pokazano to na rysunku). W panelu Sound ustaw warto Event w polu
Sync dla tych wszystkich dwikw.
2
Ksika zostaa wydana nakadem wydawnictwa Helion, pod tytuem Flash 5 ActionScript.
Podstawy przyp. red.
Ksika zostaa wydana nakadem wydawnictwa Helion, pod tytuem Flash 5. Podstawy przyp. red.
256
Moesz wykorzysta okno Edit Envelope do wyciszania lub zmiany balansu kadego
dwiku. Uywam tej funkcji na kocu cieki dwikowej, aby j wyciszy, jak pokazano to na rysunku.
Warto w tym przypadku zdawa sobie spraw z tego, e gdy dochodzi do kontroli
cieki dwikowej za pomoc obiektw typu , obwiednie gonoci w oknie Edit
Envelope bd dodawane do wszystkich zastosowanych przez nas wartoci ustawianych
za pomoc obiektw sterujcych. Umoliwia nam to zastosowanie obwiedni gonoci
do kontrolowania mieszanych poziomw w naszej kompozycji i do kontrolowania caego dwiku za pomoc obiektu typu .
Jeli to, o czym pisz, zaintrygowao ci, moesz rwnie przyjrze si sposobowi
wykonania kompozycji dwikowej we Flashu, ktry zosta przedstawiony w witrynie
killersound. Zastosowane tam metody wykorzystuj okno Edit Envelope do wyciszania
dwikw, ktre rozpoczynaj si w tym samym czasie i jest to nieco lepszy sposb
synchronizacji ni atwiejsza metoda, ktra zostaa zaprezentowana wczeniej
(Odwied witryn www.killersound.com, a pniej wybierz HTML version i przejd
do Tech Center/Goodies).
Aby zastosowa ciek dwikow, musimy stworzy j jako klip filmowy albo
wczytany poziom. Dla tego ostatniego moesz uywa skryptu podobnego do poniszego:
;
,<
,
,
8
257
,
,
Powstrzymuje to uruchomion (ale aktualnie wyciszon) listw czasow cieki dwikowej przed narzuceniem jej w przyszoci koniecznoci wczytywania si. Jeli uytkownik zdecyduje, e nie chce wprowadza w ogle muzyki, mona rozway kasowanie poziomu ze ciek dwikow (za pomoc ! - ..), aby zwolni
pasmo, jeli nadal trwaj procesy pobierania strumieniowego (moe by to sprawdzone
za pomoc warunku % .."%# $ % .."%# , ktry bdzie
podczas wczytywania przyjmowa warto # , a gdy wczytywanie si zakoczy bdzie mia warto ).
Aby uruchomi ponownie ciek dwikow po powyszym zatrzymaniu, naley zastosowa:
258
Jest to niezbdne (zamiast samego /"), poniewa dwik jest doczony
do listwy czasowej zamiast pliku dwikowego i chcemy, aby listwa czasowa odtwarzana bya po to, eby usysze ciek dwikow.
Aby znw uruchomi ciek dwikow od pocztku, zakadajc, e ju si odtwarza,
trzeba uy:
,
8%& $
259
Sie, znajdziesz kilka witryn, ktre umoliwiaj zrobienie tego, ale niewiele z nich, jeli
jaka w ogle, korzysta ze staej kontroli gonoci i balansu. A jest to co, czym dysponuje kady profesjonalny DJ oraz w co jest wyposaony sprzt nagraniowy. Na pocztku jednak musimy sprawdzi, jak ustawi i kontrolowa obiekt typu tylko za
pomoc metody 0#.
Pod wzgldem akcji i terminologii, ktre widziae ju wczeniej i ktre (na razie) zignorujemy, na powyszym rysunku mona zauway kilka do oczywistych cech. Proces przeksztacania dwiku we Flashu wyglda nastpujco:
prbka dwikowa doczona jest do obiektu typu ; prbka ta we Flashu
moe by stereofoniczna (jak pokazano na rysunku) lub monofoniczna,
co wyglda tak samo z tym wyjtkiem tego, e skadnik R4 albo L bdzie zerowy;
gdy bdziesz odtwarza dwik, pewien procent prbki L (LL) wprowadzony
zostanie do lewego wyjcia kanau audio;
podobnie pewien procent prbki R (RR) wyprowadzony zostanie do prawego
wyjcia kanau audio;
procentowa warto LL i RR zaley od aktualnej wartoci balansu i gonoci
dwiku tak, jak widziae to w przykadzie sound.fla przedstawionym na pocztku
rozdziau.
Rnica w stosowaniu metody 0# polega na tym, e pozwala ona manipulowa nie tylko wszystkim, o czym wspomniano do tej pory, ale take dwoma dalszymi
skadnikami dwiku LR i RL.
LR jest pewnym procentem prawej prbki, ktra jest odtwarzana w lewym goniku
(albo iloci sygnau prawego kanau, ktra przechodzi do kanau lewego).
RL jest pewnym procentem lewej prbki, ktra jest odtwarzana w prawym goniku
(albo iloci sygnau lewego kanau, ktra przechodzi do kanau prawego).
4
260
W tym przypadku moesz uzyska dwik mono, ktry pojawia si tylko w lewym goniku. Jednak definiujc niezerowy skadnik RL moesz stworzy sygna stereo. Rozrniajc LL i RR moesz rwnie dynamicznie rozrnia obraz stereo.
Ponadto metoda 0# umoliwia przeksztacanie sygnau stereofonicznego
w monofoniczny bez utraty informacji dwikowej w obu kanaach. Jest to zupenie inne dziaanie ni proste ustawianie balansu po prawej czy po lewej, poniewa przy zastosowaniu balansu:
tracisz informacj z kanau, ktry wyciszye do sygnau monofonicznego;
zmniejszasz dostpn gono, jeli uytkownik ma system z obydwoma
kanaami L i R podczonymi do pojedynczego gonika (jest to zwyke
ustawienie dla systemw, do ktrych mona podczy tylko jeden gonik);
istnieje moliwo, e uytkownik korzystajcy tylko z jednego podczonego
gonika nic nie usyszy, poniewa wysae sygna monofoniczny do zego kanau!
Jak wspomniano wczeniej metoda 0# pozwala wprowadza zmiany kontrolowania poziomu dwiku bez wpywu na cakowit moc sygnau dwikowego. Jest
to bardzo istotne w profesjonalnym miksowaniu dwikw. Wiele domowych komputerw podczonych jest obecnie do wysokiej jakoci wzmacniaczy i gonikw, wic
kada witryna, ktra uywa tych cech przetwarzania dwiku z pewnoci bdzie stosowana do przeksztacania muzyki (by moe bdzie to odejcie od powszechnej opinii
dotyczcej tego, e we Flashu nie mona dysponowa takimi moliwociami).
261
Aby stworzy obiekt typu o nazwie ), sucy do kontrolowania dwiku
w bibliotece z nazw wspdzielenia
, wykorzystamy nastpujce akcje:
&
8
&
&
Musimy jeszcze wywoa metod 0# obiektu ) za pomoc obiektu
kontrolujcego ) jako jej argument:
&A<
&
Naley zmieni przeksztacenie po to, aby odtwarzao dwik monofoniczny przez oba
goniki (to znaczy ustawi wszystkie wartoci waciwoci na 100). W tym celu powiniene doda nastpujce linijki kodu:
&
&
&A<
&
Jeli chcesz, moesz stworzy rne efekty stereo za pomoc zmian waciwoci dwiku. Sprbuj ustawi w obiekcie kontrolnym w pliku setTransform.fla nastpujce wartoci (na tym etapie polecam uywanie mojego pliku FLA, poniewa wybraem prbk
dwikow w ten sposb, aby przedstawiaa pewne cechy, ktre mog nie by oczywiste we wszystkich przypadkach):
&2@@@@4
W efekcie uzyskamy normalny dwik stereofoniczny. Dokadnie tak wyglda normalny dwik bez adnego przeksztacenia.
&2@'@@'@4
262
Jest to opcja przeznaczona dla tych, ktrzy lubi haas. Takie ustawienie da w efekcie
potny przesterowany basowy dwik. Zanim jednak sprbujesz to zrobi, sprawd
wczeniej czy gono na wzmacniaczu nie jest ustawiona zbyt wysoko. Jeli w jakim
miejscu zastosujesz ten efekt bez jakiegokolwiek uprzedzenia, podejrzewam, e przysporzy ci to kilku nowych przyjaci szczeglnie wrd tych, ktrzy przegldaj sobie strony ze suchawkami na uszach, albo bawi si Sieci podczas cichej i spokojnej
przerwy na lunch.
Zastosowanie przesterowanego dwiku jest dodatkow cech, a zatem mona
to stosowa we wasnej witrynie, ale bd ostrony, jeli bdziesz stosowa to na
stronie klienta, gdy moe nie dziaa w nastpnej wersji odtwarzacza filmw Flasha.
Sam lubi nieco haasu, wic zastosowaem to na stronie, ktra miaa pokrto gonoci
z maksymaln wartoci 11 (najlepsze tradycje parodii rocknrollowych filmw) z maym
symbolem czaszki ze skrzyowanymi piszczelami obok jako jasne ostrzeenie.
Na kocu sprbuj tego. Usyszysz dwik tylko wtedy, jeli bdziesz sucha za pomoc
dobrze ustawionego systemu gonikw stereo:
&2@@@9@4
Daje to taki sam efekt, jaki otrzymalibymy podczajc system gonikw krzyujc
dodatni i ujemny przewd w jednym z nich. Uzyskamy wtedy dwik z obu gonikw,
ktry bdzie si wzajemnie znosi, zamiast dodawa. Zanikn wwczas basy, ale jeli
zmienisz balans na wzmacniaczu tak, aby mona byo usysze tylko jeden gonik, pojawi si z powrotem. Jest to bardzo podobne do efektu bez dwiku, ktry tworzylimy chwil temu, ale tym razem przesunicie fazowe pojawia si nie w odtwarzaczu
Flasha, ale w samych gonikach. Jest to jednak efekt, ktrego normalnie bdziesz unika i oglnie i powinny mie ten sam znak.
263
5+*
2@@@@4
5+*
2@@@@4
Gdy wprowadzisz metod (" 0# lub (" 0#
, bdziesz mg atwo przecza si midzy trybem mono i stereo. Jest to ten
rodzaj dziaania, ktry najprawdopodobniej bdzie coraz bardziej potrzebny
w przyszoci, poniewa niektre rodzaje sprztu (w szczeglnoci urzdzenia
bezprzewodowe) mog nie dysponowa moliwoci odtwarzania dwiku
stereofonicznego. Aktualnie moesz wyposay witryny w kontrol stereo i mono
obok wcznika stereo za pomoc prostego zdarzenia przycisku:
2
A<
4
Jedyn rnic jest to, e tym razem w trzeciej linii dwik zaptlony jest 999 razy,
czyli wystarczajco dugo, aby usysze efekt. Ustawiony zosta rwnie obiekt kontrolujcy ) tak, aby podawa 50% gonoci obydwu gonikom.
W warstwie control znajduje si pusty klip filmowy, ktry zosta nazwany soundcontrol
(moesz dostrzec go ponad obszarem obrazu w lewym grnym rogu). Chocia jest pusty, ma jednak doczone pewne detektory zdarze. Wybierz ten klip i skorzystaj
z edytora skryptw, aby zobaczy kod.
Gdy bdzie miao miejsce zdarzenie , ustawimy zmienn nazwan na 2.
Jest to wspczynnik, z jakim bdzie miaa miejsce zmiana balansu 2% na ujcie
(zdarzenie pojawi si po raz pierwszy, gdy Flash zobaczy nasz klip filmowy na
listwie czasowej; w tym przypadku jest to ujcie pierwsze, wic reprezentuje to nasz
inicjacj).
264
265
...metoda
nadal bdzie dziaaa globalnie, co bdzie jeszcze bardziej mylce. Jak
pamitamy z analizy przykadu z kosmicznymi najedcami, jest tylko jedna moliwo
zatrzymania odtwarzania dwiku, ktry jest doczony za pomoc wspdzielenia bez
zatrzymywania wszystkiego innego na tej samej listwie czasowej. W poniszym skrypcie instrukcja
bdzie dziaaa tylko na drugi dwik:
&
&
&
B
B
+
B
+
B
+
Wywoanie polecenia
musi odnosi si do nazwy wspdzielenia, wic jako logiczne nastpstwo tego faktu metody, ktre podczas wywoania nie pozwalaj okreli tej nazwy, zawsze bd stosoway swoje akcje do caej listwy czasowej. Nie jest to
nigdzie opisane, wic warto to zapamita, zwaszcza, jeli rozpatrujesz te metody, ktre nie pozwol ci zdefiniowa nazw wspdzielenia zawierajcych:
$
#
A<
Jak widzisz, lista ta zawiera wszystkie metody, ktrych uywalimy do tej pory i mona
z tego wycign jasny wniosek: nie moesz osobno kontrolowa wielu dwikw zdefiniowanych za pomoc wspdzielenia, jeli wszystkie one bd znajdyway si na tej
samej listwie czasowej. Dopki nie bdziesz chcia po prostu rozpocz i zatrzyma
dwiku, nie uywaj wspdzielenia do okrelania swoich obiektw typu , poniewa inne instrukcje wymienione powyej dadz w efekcie niepodane rezultaty.
266
W tym przypadku obiekt ) jest doczony do celu, ktrym w tym przypadku jest
klon klipu filmowego nazwany (! +
. Wywoanie instrukcji
bdzie obecnie
zatrzymywao odtwarzanie tych dwikw, ktre doczone s do listwy czasowej klipu
(! +
. Jeli twj klip jest gboko zagniedony, moesz okreli dowoln ciek w miejscu myMovieClip.
Moesz zrobi to samo za pomoc zdefiniowania ) w (! +
. Jest to wietne
rozwizanie, ale poniewa definicje twoich obiektw s rozoone w caym pliku FLA,
nie bdziesz w stanie ich zsynchronizowa. Jeli synchronizacja jest (czy bdzie) wymagana, powiniene zdefiniowa dwiki w jednym miejscu (nawet jeli bd si czyy z osobnymi klipami).
Zaawansowany dwik to skomplikowana sprawa we Flashu, ale w moim ostatnim
przykadzie w tym rozdziale zobaczysz w peni dziaajcy zaawansowany interfejs kontroli dwiku. Demonstruje on rwnie to, jak mona definiowa naprawd oddzielne
obiekty typu i kontrolowa kady z nich lokalnie. Dodamy do tego moduowy,
oparty na obiektach typu +
interfejs. Baw si dobrze i postaraj si, aby Sie
staa si goniejszym miejscem!
St mikserski we Flashu
Wikszo nagra realizowana jest na kilku ciekach (zwykle kada cieka odpowiada jednemu instrumentowi, czy rodzajowi dwiku), ktre s zestawione za pomoc
stou mikserskiego, ktry pozwala na skadanie dwikw po to, aby stworzy z nich
kompozycje. Aby zrobi to skutecznie, musisz umie wykona takie zadania, jak:
zmiana gonoci kadej cieki;
zmiana balansu kadej cieki;
wyciszenie kadej cieki lub natychmiastowe ich przeczanie.
S to obiekty sterujce, ktre bdziemy mieli na naszym stole mikserskim. Rozsdnym
posuniciem jest uzyskanie na pocztku kontroli nad jedn ciek dwiku, a nastpnie
przeksztacenie tego w kontrol moduow, a pniej rozszerzenie na wszystkie cieki.
Interfejs uytkownika
Zanim przejdziemy do rzeczywistego zarzdzania dwikiem, przyjrzyjmy si temu, jak
dziaaj potencjometry. Jest to przykad typowego pokrta stworzonego w pliku
dial.fla, ktre moe wydawa ci si znajome.
267
To pokrto jest klipem filmowym zawierajcym okrgy potencjometr, tak jak pokazano to na rysunku. Znajduje si tam rwnie kropka i skone cicie, ktrych celem jest
zaznaczenie tego, gdzie pokrto jest ustawione (jest to aktualna tendencja dominujca
w przypadku pokrte urzdze hi-fi co, co rwnie pasuje do wybranego przeze
mnie schematu kolorystycznego). We Flashu jednak kropka i cicie maj dodatkowe
zastosowanie sugeruj, i jeli chcesz zmieni pooenie pokrta, kursor musi znale si obok. Moe to brzmie nieco nieprawdopodobnie, gdy czytasz to na tej stronie,
ale testowaem to wielokrotnie i wszyscy uczestnicy eksperymentu (wczeniej nie poinformowani, e bior w nim udzia) poradzili sobie bez adnych problemw, gdy spotykali taki potencjometr na ekranie.
Tak czy owak nad ciciem jest niewidoczny przycisk. Znajduje si on w klipie Dial
i zawiera nastpujcy skrypt:
2
+$
4
5
2
+$<
4
Skrypt ten po prostu ustawia znacznik nazwany 1 na warto albo #
(zalenie od tego, czy kursor znajduje si nad przyciskiem i czy zosta przycinity
i przytrzymany klawisz myszy) 1 pozostaje ustawiony na , dopki
uytkownik nie zwolni klawisza, i pozostaje rwny tej wartoci, nawet jeli kursor przesunie si poza obszar przycisku. Ten skrypt zasadniczo sprawdza, czy przycisk zosta
wcinity i przytrzymany.
Klon klipu Dial ma zaczony poniszy skrypt:
6
7
2
%
+$<
4
6
7
:2
<
+$2
<
8?C2
%9
<
%C2
%
4
4
268
Detektor zdarzenia inicjuje dwie zmienne: 1 , o czym pisaem nieco
wczeniej i (jest to aktualny kt, o jaki obrcony zostaje potencjometr). Pocztkowo jest ustawiony na zero stopni.
Detektor zdarzenia * wykonuje gwne zadanie odpowiada za obrt pokrta. Jeli przyjrzymy si przyciniciu i przytrzymaniu nad niewidocznym przyciskiem (za pomoc 1 ), zauwaymy po ktrej stronie zaznaczonej na rysunku
linii znajduje si wskanik myszy. Wtedy moemy obrci potencjometr w tym kierunku.
Jeli znajdujemy si po lewej stronie linii (% 2 3), zmniejszamy kt, jeli po prawej stronie zwikszamy go (aby stworzy lini przechodzc przez rodek przycisku, punkt odniesienia filmu musi znajdowa si na linii rodkowej pokrta, a najlepiej
jest, gdy przechodzi ona przez kropk znajdujc si na przycisku). Pokrto przestanie
si obraca, jeli osigniemy dwa punkty kocowe (w tym przypadku 0 lub 324).
Jeli nadal nie jeste cakiem pewny, jak to bdzie dziaa, pamitaj, e linia rodkowa
obraca si razem z potencjometrem. W gruncie rzeczy w tym kodzie jest zapisane obracaj pokrto, dopki linia rodkowa nie dojdzie do aktualnego pooenia myszy.
Aby zastosowa ten potencjometr w swoim wasnym filmie, musisz przeskalowa kt
do takiego zakresu, jaki wskaesz. Jeli chcesz mie na przykad zakres midzy 0 a 10
(wedug krawdzi skonej pokrta), powiniene stworzy inn zmienn (na przykad
) i doda ponisz lini (natychmiast po linii zawierajcej % $ ):
%%(.
Jeli nazwiesz klon pokrta ( i umiecisz go na gwnej listwie czasowej, moesz
uzyska dostp do z dowolnego miejsca w filmie za pomoc %"(" .
Gdy bdziesz eksperymentowa z przykadem dial.fla, zauwaysz, e pokrto nie porusza si rwnolegle do aktualnego pooenia kursora, ale bdzie wykonywao stay obrt,
dopki nie osignie waciwego pooenia. Zrobiem to w ten sposb, poniewa chciaem
269
odwzorowa podobny proces zachodzcy w profesjonalnym sprzcie muzycznym, w ktrym pokrto jest spowalniane, aby chroni uytkownika przed nag zmian i pozwala
na zrobienie agodnych przej wyciszajcych. Pokrto rwnie odrobin byska, gdy
dojdzie do pooenia kursora, ale ten efekt jest wystarczajco may, aby nie wpywa
pniej na mikser dwiku.
Problemy, problemy
Nasze kocowe zadanie w tym przypadku wymaga rozwizania kilku pojawiajcych si
problemw i najlepiej bdzie, gdy stawimy im czoa ju teraz. Jak bdziesz mg si
przekona, niektre z nich nie s atwe do rozwizania.
1. Aby zsynchronizowa dwik do poziomu dokadnoci, ktrego bdziemy
wymaga (po to, abymy mogli miesza razem dwiki), musimy zdefiniowa
wszystkie obiekty typu na jednej listwie czasowej. Moemy docza
je do innych listw za pomoc celw, ale definicje musz znajdowa si w tym
samym ujciu na tej samej listwie.
2. Flash moe poradzi sobie z omioma ciekami w tym samym czasie.
Najlepszym rozwizaniem dla kontroli kolejnych cieek jest doprowadzenie jej
do formy moduowej, co pozwala poradzi sobie z kilkoma pokrtami. Moe to by
skomplikowane, poniewa kade pokrto ma dostp do innego obiektu typu
i musimy umie robi to szybko, aby zapewni waciw kolejno. Zastosowanie
pocze liczbowych albo cigw znakw do rozrnienia nazwy docelowych
obiektw typu moe by nieco za wolne (korzystanie z cigw znakw
oglnie we Flashu 5 jest wolne), a zatem musimy by ostroni.
3. Aby stworzy wiarygodny st mikserski, musimy umie wycina i dodawa
dwiki natychmiast (nie za kilka uj po tym, gdy uytkownik o to poprosi).
Zajmijmy si tym po kolei, chocia zapewne widzisz ju rozwizanie pierwszego problemu. Aby synchronizowa dwiki dokadnie, najlepiej jest doczy je wszystkie do
tego samego ujcia na gwnej listwie czasowej. Dwiki zwizane ze zdarzeniami nie
s zsynchronizowane z listw czasow, poniewa zaprojektowano je dla przypadkowych efektw, ktre normalnie nie wymagaj cisej synchronizacji jednego z drugim.
Mona jednak oszuka odtwarzacz Flasha tak, aby sdzi, e ma do czynienia z dwikiem przesyanym strumieniowo (ktry jest synchronizowany). W tym celu naley
ustawi pierwszy dwik na listwie jako dwik tego typu.
Rozwizanie drugiego problemu ley w zdefiniowaniu cieki zawierajcej zmienn
i jest rzeczywicie bardzo proste, chocia nie jest to zapisane w instrukcji Flasha. Po
dodaniu zmiennej do cieki w notacji kropkowej uzyskujesz w efekcie skadni podobn do tej:
8E
/,F
Przypumy, e masz dwa klony klipu filmowego 41/ i 1. Oba zawieraj
zmienn o nazwie i chcesz ustawi jedn jej wersj na 5 (warunkowo). Aby
mie dostp zarwno do %"41/", jak i %"1" z tej samej instrukcji (zalenie od instrukcji warunkowej), powiniene wpisa:
270
Jest to naprawd przydatna sztuczka, poniewa pozwala ci nie tylko tworzy obiekty
typu +
odnoszce si do wyjtkowych obiektw (bez odnoszenia si do pocze cigw znakw, co jest rwnie wolne), ale zapewnia moliwo tworzenia bardziej oglnych funkcji. Co wicej, pozwala ci na szybki dostp do obiektw albo klipw filmowych, ktre tworzone s w midzyczasie (poprzez
! +
), a to
kieruje nas w stron superszybkich enginew do gier, ktre s przydatne wtedy, gdy
masz wielk liczb wykrywania kolizji do wykonania.
Aby natychmiast zatrzymywa dwiki, najlepszym rozwizaniem nie jest zastosowanie
polecenia
, ale po prostu wyciszanie dwiku poprzez ustawienie jego gonoci na
zero. Tak samo mona poradzi sobie ze znikaniem cieek z caej kompozycji. Ma to
rwnie inne zalety: dwik pozostaje zsynchronizowany z innymi (poniewa w rzeczywistoci wcale nie zosta zatrzymany), a wczytywanie procesw do odtwarzacza
Flasha pozostaje stae, poniewa dwiki cay czas si odtwarzaj (to znaczy, e dwiki nie stan si niezsynchronizowane w zalenoci od obcienia procesora).
Skoczona aplikacja
Przyjrzyjmy si plikowi mixer.fla, ktry jest kocowym plikiem w tym projekcie
(moesz nazwa go wersj kocow, poniewa jasne kolory ta nareszcie odeszy
w niepami!).
271
Film zosta tak zaprojektowany, aby mg by ogldany na penym ekranie, a zatem pozbd si okna Bandwidth Profiler, jeli chcesz przeczyta opisy przyciskw. Zawiera
on rwnie prbki dwikowe o jakoci CD i publikowanie filmu bdzie w sabych
systemach zajmowao sporo czasu (jeli nie masz wystarczajcej iloci pamici w Macintoshu, moe nawet zawiesi ci si komputer). Jeli bdziesz testowa to na komputerze, ktry ma z tym pewien problem, sprbuj ustawi nisze parametry Audio Event
(File/Publish Settings/Flash) w okolicach 16 20 kbps (jako dwiku w filmie bdzie
wtedy kiepska).
Skoczony film wymaga do wysokiej prdkoci odtwarzania, aby osign wymagan
synchronizacj dwiku, a zatem zostaa ona ustawiona na 24 klatki na sekund w oknie
Movie Properties (Modify/Movie). Po raz kolejny moesz mie kopoty, gdy pracujesz
na sabszym komputerze, gdy zaawansowane dwiki bd obcia procesor, zwaszcza gdy nie tylko korzystasz z omiu strumieni MP3 w tym samym czasie, ale rwnie
spodziewasz si jednoczesnego ich podczenia w celu dynamicznego miksowania.
Jeli nie widziae do tej pory stou mikserskiego to:
aby natychmiast wprowadzi ciek, musisz ustawi gono i balans na zadan
warto i wczy ciek klikajc diod on/off;
aby wyciszy dwik, wcz go klikajc diod, a nastpnie ustaw poziom gonoci;
pooenie dwiku w panoramie stereo kadej cieki zmieniane jest za pomoc
potencjometru balansu;
najbardziej popularne utwory s odgrywane w rytmie 4/4, kompozycja
bdzie brzmiaa nieco dziwnie, dopki nie wprowadzisz kadej nowej zmiany
w czwartym uderzeniu czwartego taktu dopki oczywicie nie bdziesz
wiedzia wystarczajco duo o twrczych sposobach amania zasad!
W przeciwnym wypadku trzeba mie dobre wyczucie rytmu...
Jeli ukoczye ju tworzenie swojej kompozycji (co jest trudniejsze, ni mgby
przypuszcza, kiedy nie wszystkie cieki s prostymi rytmami bowiem dwiki
powinny by waciwie zbalansowane w caym utworze), zobacz film.
Kopniak
Pierwsz rzecz, ktr trzeba zauway na gwnej listwie czasowej jest to, jak odtwarzacz Flasha jest zmuszony do synchronizowania wszystkich obiektw typu .
Warstwa kicker zawiera krtki dwik pobierany strumieniowo, ktry wymusza na innych dwikach w filmie odtwarzanie si w tym samym czasie. Aby usysze, co moe si
sta bez niego, usu warstw, a nastpnie sprbuj wytrzyma kakofoni, ktr uzyskasz!
272
Kod
Nastpnym przystankiem w naszej wycieczce jest warstwa actions. Obiekty typu
zdefiniowane s w ujciu smym:
((G
+
,,*H% I
J,
5+*
2@@@@4
(($
K
L,
,
A<
(($
K
L,
,
A<
((BK
L,.
+
,.
+A<
((;
K
L,
,
A<
((&+
%K
L,'
%
,'
%A<
((&
+K
L,M
,M
A<
((#K
L,!
,!
A<
((#K
L,"
,"
A<
((NLL,H
/+HK
L,*"
((;L O
J*,
+J /
(( //
273
Moesz w tym miejscu zastanawia si: to jest Flash 5, wic dlaczego nie mona doczy obiektu typu , zamiast robi to wszystko?. C, jest to dobry pomys, ale nie
dziaa. Jak tylko rozpoczynasz definiowanie dwiku poza gwn listw czasow, tracisz synchronizacj, ktr osignlimy za pomoc naszego kopniaka. Innymi sowy
tylko na gwnej listwie czasowej moesz uzyska synchronizacj. Jeli sprbujesz
zastosowa kopniaka na innej listwie czasowej, dwiki nie bd zsynchronizowane
z gwn listw, ale z ich wasnym dwikiem wymuszajcym synchronizacj.
Ujcie dziewite zawiera akcj
w warstwie actions i moemy zobaczy, e w tym
ujciu pojawia si nasz interfejs w warstwie control dials. Kada para potencjometrw,
ktr moesz ujrze, jest klonem obiektu kontrolujcego cieki typu +
nazwanego ms.trackController. Ma on dwa parametry.
Nazwa jest nazw obiektu typu , ktry bdziemy kontrolowa, a jest
etykiet pojawiajc si w kadym obiekcie kontrolujcym cieki w interfejsie uytkownika. Przygldajc si ms.trackController moesz zobaczy nastpujc listw czasow.
Dynamiczne pole tekstowe, ktre jest doczone do parametru , znajduje si na
warstwie title, a potencjometry na warstwie controls. Kod, ktry odpowiada za zachowanie obiektw sterujcych, doczony jest do klipu filmowego znajdujcego si na
warstwie events.
274
Potencjometry
Potencjometry s niemal dokadnie takie same, jak te, z ktrymi spotkalimy si wczeniej w przykadzie dial.fla. Nastpujcy skrypt doczony jest do pokrta balansu:
6
7
2
%
+$<
4
6
7
:2
<
+$2
<
8?C2
%9
<
%C9 2
%9
4
4
<
8?D2
%=
<
%D 2
%
4
4
8
%
;
%(""
4
4
275
Daje nam to warto
(w ostatniej linii), ktra znajduje si midzy 50 a 50, za czego
bdziemy pniej korzysta wywoujc 0#. Jak mona si spodziewa, potencjometr gonoci ma doczony niemal identyczny skrypt.
6
7
2
%
+$<
4
6
7
:2
<
+$2
<
8?C2
%9
<
%C2
%
4
4
<
8?D2
%=
<
%D. 2
%.
4
4
8
%
%(.
4
4
Dioda LED
Warstwa controls kryje w sobie jeszcze jedn zmyln sztuczk diod LED. Przyjrzyjmy
si klipowi filmowemu mc.lamp, ktrego listwa czasowa pokazana jest na rysunku.
Klip przecza si midzy stanem wczonym i wyczonym. Aby stworzy co podobnego we Flashu, musisz mie dwa ujcia (do obu musi by doczona instrukcja
).
Tak jest i w tym przypadku w warstwie actions.
Warstwa button zawiera pojedynczy niewidoczny przycisk znajdujcy si nad obrazem
diody LED. Doczony jest do niego poniszy skrypt:
2
%& $
4
276
Skrypt kontrolujcy
Skrypt kontrolujcy wszystkie obiekty typu jest umieszczony w warstwie events
obiektu typu +
ms.trackController. Doczony jest do niego pusty klip filmowy nazwany mc.dummy, ktry moesz zobaczy obok (to ta maa, biaa kropka).
Gdy stosujesz zdarzenia klipw filmowych, czasami napotykasz na trudnoci, nie wiesz
do czego doczy kod. Moemy doczy go do obiektu ms.trackController, ale wtedy
musimy pamita o tym, aby doczy go do wszystkich omiu klonw. Jest to obowizkowe, ale wanie przez to nasz obiekt typu +
nie jest w peni moduowy
(wymaga od ciebie doczenia do skryptu, wic nie jest to duej obiekt typu przecignij
mnie gdziekolwiek, a bd dziaa). Rwnie dodanie omiu takich samych skryptw
do filmu w chwili, gdy staramy si zastosowa tylko jeden, jest marnym wyjciem.
Rozwizaniem jest natomiast doczenie tego skryptu do zagniedonego klipu filmowego, jak to zrobilimy z mc.dummy. Poniewa nasz skrypt jest doczony wewntrz
ms.trackController, wszystkie problemy znikaj. Jest to jeszcze jedna sztuczka, ktr
warto zapamita.
277
Jak zwykle detektor zdarzenia zawiera skrypt inicjujcy. Poniewa parametr obiektu
typu +
naley do macierzystego klipu filmowego ms.track Controller,
przeniosem go do mc.dummy, aby nie zawraca sobie gowy ciekami adresowymi.
Pomaga to rwnie w usuwaniu bdw, gdy wyapanie zmiennych z obiektu macierzystego pozwala na sprawdzenie, czy s one rzeczywicie przesyane poprawnie i czy
mog by rozpoznawane przez klip potomny. Nastpnie definiujemy obiekt kontrolujcy.
Bdziemy go uywali wywoujc metod 0#. Powiniene rozpozna pocztkowe wartoci , , i jako te, ktre bd wyciszay nasz dwik.
Detektor * zawiera gwny skrypt, w ktrym waciwoci obiektu kontrolujcego i ustawione s bardzo podobnie:
3 %
"
+"
nadaje naszej waciwoci warto pochodzc
z pokrta balansu (warto bdzie si rwnaa 50 minus warto w zwizku
ze zmian znaku);
nastpnie mnoymy balans razy gono (pochodzc z potencjometru gonoci)
%
"+" (pamitaj, e jest to uamek dziesitny z zakresu od 0
do 1), wic mnoenie balansu wikszego od zera razy zerowa warto gonoci
dawa bdzie zero, a mnoenie razy 1 maksymalna gono dawa nam
bdzie peen udzia;
na kocu mnoymy razy stan diody, %
"
" ; moe to by 0 (wyczone)
albo 1 (wczone); jeli dioda LED jest wyczona mnoymy razy 0, co daje nam
zero dla i , a jeli jest wczona, dostajemy peen udzia, co wiadczy o tym,
e dioda dziaa jak wcznik (jak moglimy si zreszt tego spodziewa) sygnau.
Wszystko inne zostanie zastosowane do naszych nowo obliczonych wartoci i po
wywoaniu metody 0#. Poniej zaprezentowana akcja ustala ciek dostpu
do listwy czasowej zawierajcej zadany dwik, ktry nastpnie przeksztaca.
8E FA<
Ten film zawiera mnstwo sztuczek, wic pobaw si nim troszeczk i zobacz, co jeszcze moesz odkry. Jest rwnie tak zaprojektowany, e atwo moesz zmienia zastosowane dwiki tak, aby mg dodawa swoje wasne kompozycje. Upewnij si jednak, e wszystkie dwiki s dokadnie tej samej dugoci (za pomoc narzdzia
podobnego do trackera SoundForge) i s tak opracowane, aby mona byo je zaptli.
278
Kwestie sprztowe
Na kocu powinienem wspomnie o tym, e pewne rodzaje sprztu maj problemy
z odtwarzaczem Flasha i pewne sterowniki kart dwikowych w Windows9x bd generoway skrzypice trzaski za kadym razem (zwaszcza przy duej gonoci). A zatem
recydywici to:
Crystal Audio System (IBM Intellistation E Pro);
Soundblaster Audio PCI 64D;
Soundblaster Audio PCI 128D;
ESS Maestro-2E (laptopy Dell Inspiron);
Powyszy spis stworzy Urami, legendarny guru Flasha, ktry udziela si w grupie
dyskusyjnej macromedia.flash, ale jest jeszcze kilka innych laptopw, ktre maj
podobne problemy. Jeli zauwaysz takie zachowanie, pobierz najnowsze sterowniki,
a jeli i to nie podziaa, pokrzycz na twrcw sprztu.