You are on page 1of 51

IDZ DO

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

Flash 5 Action Script.


Techniki zaawansowane
Autor: praca zbiorowa
Tumaczenie: ukasz Oberlan, Wojciech Pazdur,
Remigiusz Wilk
ISBN: 83-7197-567-8
Tytu oryginau: Flash 5 ActionScript Studio
Format: B5, stron: 612
Zawiera CD-ROM

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

Rozdzia 2. Techniki animacji ...................................................................................27


Animacja tradycyjna kontra animacja dynamiczna...............................................................................27
Symbole .................................................................................................................................................28
Symbole graficzne...........................................................................................................................29
Symbole przyciskw .......................................................................................................................29
Symbole klipw filmowych ............................................................................................................29
Animacja dynamiczna ...........................................................................................................................29
Wprawianie klipu filmowego w ruch..............................................................................................30
Bez doczonego cigu znakw ......................................................................................................32
Waciwoci klipw filmowych ............................................................................................................33
Waciwoci widoczne ....................................................................................................................34
Waciwoci niewidoczne ...............................................................................................................36
Wczytywanie, kopiowanie i usuwanie ..................................................................................................36
Metody klipw filmowych ..............................................................................................................37
Kopiowanie i usuwanie klipw filmowych.....................................................................................37
Obiekty i poziomy docelowe...........................................................................................................40
Wczytywanie do poziomu docelowego...........................................................................................41
Podsumowanie.......................................................................................................................................44

Rozdzia 3. Klasyczne struktury w jzyku ActionScript ........................................45


Komunikacja..........................................................................................................................................45
Kontrola .................................................................................................................................................49
Ptle While ......................................................................................................................................50
Ptle For ..........................................................................................................................................51
Ptle for..in ......................................................................................................................................52
Tablice .............................................................................................................................................53
Moduowo ..........................................................................................................................................56
Funkcje ............................................................................................................................................56

Flash 5 ActionScript. Techniki zaawansowane


Detektory zdarze..................................................................................................................................58
Przykad detekcji zdarze................................................................................................................59
Inicjacja klipu filmowego Menuitem ..............................................................................................61
Budowa menu..................................................................................................................................62
Ustawianie menu .............................................................................................................................64
Dostp do podmenu.........................................................................................................................64
Uruchomienie przyciskw...............................................................................................................65
Obiekty typu smart clip .........................................................................................................................66
Prosty pocig klipw filmowych.....................................................................................................67
Przeksztacenie do obiektu typu smart clip .....................................................................................68
Rozpoczynamy ................................................................................................................................71
Podsumowanie.......................................................................................................................................76

Rozdzia 4. Obiekty, metody i waciwoci...............................................................77


Klasy, obiekty, metody i waciwoci ...................................................................................................77
Podstawy .........................................................................................................................................78
Obiekty i klony................................................................................................................................79
Metody ............................................................................................................................................80
Waciwoci.....................................................................................................................................82
Cigi znakw, liczby i wartoci logiczne ..............................................................................................83
Konstruktor obiektw......................................................................................................................85
Wypenianie obiektu........................................................................................................................85
Tablice ...................................................................................................................................................89
Tablice cigw znakw ...................................................................................................................90
Tablice czone i indeksowane........................................................................................................91
Ukad wsprzdnych ......................................................................................................................91
Funkcje ..................................................................................................................................................92
Uywanie funkcji z tablicami..........................................................................................................94
Uywanie funkcji w tworzeniu obiektw........................................................................................98
Tworzenie metod...........................................................................................................................102
Uwagi na koniec ..................................................................................................................................107

Rozdzia 5. Zastosowanie predefiniowanych obiektw.........................................109


Obiekt MovieClip ................................................................................................................................110
MovieClip.duplicateMovieClip.....................................................................................................110
MovieClip.attachMovie.................................................................................................................113
MovieClip.localToGlobal..............................................................................................................115
MovieClip.globalToLocal .............................................................................................................117
MovieClip.getBounds ...................................................................................................................118
MovieClip.hitTest..........................................................................................................................121
Formularz sprawdzajcy wiarygodno wprowadzanych danych: obiekt typu String........................122
Czyszczenie pl formularza: obiekt typu Selection.............................................................................130
Przechowywanie danych: obiekt typu Array (tablica).........................................................................131
Obiekt typu Math.................................................................................................................................141
Obiekt typu Key...................................................................................................................................147
Klawiatura numeryczna.................................................................................................................151
Metoda Key.getAscii.....................................................................................................................152
Obiekt typu Date..................................................................................................................................152
Obiekt typu Color ................................................................................................................................161
Dynamiczne przejcie midzy kolorami (fading) .........................................................................162
Color.setTransform i Color.getTransform.....................................................................................165
Podsumowanie.....................................................................................................................................169

Spis treci

Rozdzia 6. Struktura projektu ...............................................................................171


Czynniki pocztkowe ..........................................................................................................................172
Zawarto filmu.............................................................................................................................172
Odbiorcy........................................................................................................................................172
Oglna struktura witryny.....................................................................................................................173
Filmy oparte na pojedynczej listwie czasowej ..............................................................................173
Filmy oparte na klipach filmowych...............................................................................................174
Filmy oparte na wielu listwach czasowych...................................................................................174
Filmy wykorzystujce wiele okien................................................................................................175
Filmy wykorzystujce wiele poziomw........................................................................................176
Filmy skupiajce wiele celw .......................................................................................................178
Strukturyzacja kodu .............................................................................................................................180
Zastosowanie w praktyce ..............................................................................................................182
Podsumowanie.....................................................................................................................................196

Rozdzia 7. Zaawansowany projekt interfejsu.......................................................197


Ergonomia ...........................................................................................................................................197
Okrelenie uytecznoci ................................................................................................................198
Projekt graficzny ...........................................................................................................................199
Obiekty typu Smart Clip......................................................................................................................200
Projektowanie rozwijanego menu .................................................................................................200
Pomysy do dalszego rozwinicia .................................................................................................209
Przyciski ..............................................................................................................................................210
Przeciganie i upuszczanie, wykrywanie zderze i animacja wykorzystujca cele
wszystko w jednym ........................................................................................................................212
Projektowanie interfejsu................................................................................................................213
Tworzenie i zastosowanie behawiorw.........................................................................................217
Techniki alternatywne ...................................................................................................................223
Interfejsy, ktre nie wygldaj jak interfejsy ......................................................................................224
Stalowa kula ..................................................................................................................................227
Mapa kolizji...................................................................................................................................229
Pola wykrywajce uderzenie .........................................................................................................230
Interfejs..........................................................................................................................................231
Podsumowanie.....................................................................................................................................234

Rozdzia 8. Kontrola dwiku .................................................................................235


Jak dziaa dwik we Flashu ...............................................................................................................235
Tworzenie obiektu typu Sound............................................................................................................237
Doczanie dwiku z wykorzystaniem wspdzielenia......................................................................238
Metoda Sound.start........................................................................................................................240
Kontrolowanie wielu obiektw typu Sound ........................................................................................244
Doczanie dwikw za pomoc nazw cieek adresowych .......................................................249
Dodatkowe efekty obiektw typu Sound ......................................................................................254
Tworzenie i kontrola cieek dwikowych........................................................................................255
Tworzenie cieki dwikowej .....................................................................................................255
Kontrolowanie cieki dwikowej...............................................................................................257
Zaawansowana kontrola dwiku........................................................................................................258
Cyfrowe miksowanie dwiku za pomoc metody setTransform.................................................259
Kontrolowanie obiektw typu Sound za pomoc metody setTransform ......................................260
Dynamiczne przeksztacanie dwiku...........................................................................................262

Flash 5 ActionScript. Techniki zaawansowane


Zaawansowane przydzielanie dwiku................................................................................................264
Kontrola globalna i lokalna ...........................................................................................................265
Doczanie obiektw typu Sound do celw ..................................................................................266
St mikserski we Flashu .....................................................................................................................266
Interfejs uytkownika ....................................................................................................................266
Problemy, problemy ......................................................................................................................269
Skoczona aplikacja ......................................................................................................................270
Zasoby dwiku we Flashu ...........................................................................................................278
Kwestie sprztowe.........................................................................................................................278

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

Rozdzia 10. Tworzenie gier we Flashu ..................................................................329


Ustawianie pliku ..................................................................................................................................330
Elementy widoczne..............................................................................................................................332
Gwne menu ................................................................................................................................339
Poziom...........................................................................................................................................339
Informacja o zwycistwie..............................................................................................................341
Ostrzeenia ....................................................................................................................................341
Wysoko i grawitacja...................................................................................................................342
Ilo prb.......................................................................................................................................343
Paliwo............................................................................................................................................344
Kierunek ustawienia ......................................................................................................................345
Wektor ruchu.................................................................................................................................346
Dodawanie cech w skrypcie ................................................................................................................346
Dopracowanie szczegw gry......................................................................................................348
Planowanie skryptw ....................................................................................................................349
Ustawianie kodu ............................................................................................................................350
Klawisze sterujce.........................................................................................................................351
Gwne sterowanie ........................................................................................................................355
Inicjalizacja ...................................................................................................................................356
Dodatkowe elementy gry.....................................................................................................................384
Punktacja .......................................................................................................................................384
Meteoryty ......................................................................................................................................385
Dodatkowe paliwo.........................................................................................................................385
Premia za dokadne ldowanie ......................................................................................................385
Prdy wstpujce...........................................................................................................................385
Dokowanie ....................................................................................................................................385
Silniki cigu wstecznego ...............................................................................................................386
Podsumowanie.....................................................................................................................................386

Rozdzia 11. Obiekty typu XML .............................................................................387


Uzyskiwanie dostpu do dokumentu XML za pomoc skryptu..........................................................388
Podsumowanie ..............................................................................................................................390
Nawigacja w dokumentach XML........................................................................................................390
Metody i waciwoci obiektu XML .............................................................................................397

Spis treci

Wyspy danych .....................................................................................................................................408


Kod odnony .................................................................................................................................411
Obiekt FlaXiMaL ................................................................................................................................412
Wykorzystanie XML-a w interakcji z aplikacjami zewntrznymi ......................................................420
Przykad dziaania .........................................................................................................................423
Podsumowanie.....................................................................................................................................431

Rozdzia 12. Jzyk ActionScript i Generator.........................................................433


Skadniki ..............................................................................................................................................434
Plik loader.swf...............................................................................................................................434
Plik premenu.swf...........................................................................................................................435
Macromedia Generator ........................................................................................................................444
Praca w trybach online oraz offline...............................................................................................444
Wybr pomidzy wersjami online i offline...................................................................................445
Po co uywa Generatora? ............................................................................................................446
Co jeszcze trzeba wiedzie? ..........................................................................................................448
Gdzie zacz? ......................................................................................................................................449
rodowisko autorskie ....................................................................................................................449
Bazy danych rdowych ..............................................................................................................450
Interfejs Generatora we Flashu 5.........................................................................................................451
Paleta Generator Objects ...............................................................................................................452
Okno Generator .............................................................................................................................452
Przycisk Generator Environment Variable....................................................................................453
Okno Output ..................................................................................................................................453
Okno Publish Settings ...................................................................................................................453
Szybkie wprowadzenie do zmiennych Generatora..............................................................................454
Poznaj swj warsztat .....................................................................................................................454
Wracamy do sedna...............................................................................................................................457
Obiekty, rda i kod ...........................................................................................................................458
Ustawienia .....................................................................................................................................458
Budowanie bazy danych rdowych ..................................................................................................467
Podsumowanie.....................................................................................................................................473
rda...................................................................................................................................................474
Sie ................................................................................................................................................474
Grupy dyskusyjne..........................................................................................................................474
Wszystko w Twoich rkach ..........................................................................................................474

Rozdzia 13. Inwencja twrcza w praktyce............................................................475


Praca w zespole ...................................................................................................................................476
Denie do elastycznoci...............................................................................................................476
Podzia rl......................................................................................................................................477
Programici i projektanci...............................................................................................................477
Sposoby na udan wspprac.......................................................................................................479
Przygotowania .....................................................................................................................................481
Planowanie przepywu prac...........................................................................................................483
Przygotowanie wstpnej wersji kodu ............................................................................................483
Prototypy wizualne........................................................................................................................484
Jak dalece zaawansowany powinien by prototyp? ......................................................................485
Strukturyzacja projektu........................................................................................................................486
Planowanie z uwzgldnieniem komponentu dziaajcego w tle ...................................................487
Wykorzystanie dyrektywy #include..............................................................................................488
Wspuytkowane biblioteki.........................................................................................................489

Flash 5 ActionScript. Techniki zaawansowane


Wczytywane klipy filmowe...........................................................................................................491
Przykad teoretyczny: film loader.swf...........................................................................................491
Przykad praktyczny: flatlandexports.com ....................................................................................493
Kluczowe zagadnienia zwizane z programowaniem we Flashu........................................................497
Ukadanie poszczeglnych elementw na ekranie........................................................................497
Dobry, przejrzysty kod ..................................................................................................................500
Konwencje nazewnictwa...............................................................................................................503
Dokoczenie projektu..........................................................................................................................504
Wielka poprawka...........................................................................................................................504
Optymalizacja................................................................................................................................508
Usuwanie bdw ..........................................................................................................................511
Uruchamianie.......................................................................................................................................514

Rozdzia 14. Tworzenie witryny od podstaw .........................................................517


Projektowanie zaawansowanego interfejsu .........................................................................................517
Co to jest zaawansowany interfejs?...............................................................................................517
Wyruszamy w podr....................................................................................................................518
Pomys pierwszy adaptacyjna animacja .........................................................................................519
Pomys drugi nieliniowa nawigacja................................................................................................526
Test1.fla.........................................................................................................................................530
Porednie pliki FLA ......................................................................................................................534
Test7.fla.........................................................................................................................................536
Testy funkcjonowania interfejsu .........................................................................................................549
Wydajno systemu.......................................................................................................................550
Przesyanie strumieniowe ....................................................................................................................553
Ujednolicanie projektu ........................................................................................................................556
Tworzenie zawartoci strony ...............................................................................................................557
Przejdmy dalej... ................................................................................................................................558
Na odchodnym.....................................................................................................................................560
Listingi kodu........................................................................................................................................560
Listing pierwszy: funkcje i ich definicje (warstwa functions) ......................................................560
Listing drugi: gwna ptla aplikacji (klip mc.page) ....................................................................563
Listing trzeci: przeczanie rozdzielczoci (klip mc.frame)..........................................................564

Rozdzia 15. Uycie jzyka XML do projektowania i przetwarzania danych ....565


Zaoenia projektu ...............................................................................................................................566
Moliwe rozwizania ....................................................................................................................566
Starsze rozwizania .......................................................................................................................567
Zadanie dla Flasha.........................................................................................................................570
Zaoenia programistyczne..................................................................................................................570
Opis projektu .......................................................................................................................................571
Szkice ............................................................................................................................................571
Architektura informacji i modelowanie danych............................................................................573
Tworzenie i edycja pliku XML .....................................................................................................576
Odczytywanie zawartoci pliku XML...........................................................................................578
Podsumowanie.....................................................................................................................................605
Gdzie uda si teraz .............................................................................................................................605
Pomysy .........................................................................................................................................605
Adresy ...........................................................................................................................................606

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.

Jak dziaa dwik we Flashu


Z pozoru bardzo niepozorny obiekt typu  znajdujcy si we Flashu 5 jest w rzeczywistoci bardzo elastyczny, a ponadto umieszczono w nim kilka opcji umoliwiajcych jego definiowanie i stosowanie. Zanim rozoymy je na czynniki pierwsze, musimy na pocztku zrozumie kilka podstawowych cech uywania dwiku we Flashu,
a jest to rzecz, ktrej przyjrzymy si bardzo uwanie w tej czci rozdziau.

236

Flash 5 ActionScript. Techniki zaawansowane


W pewnym stopniu techniki zastosowane w manipulowaniu dwikiem w jzyku ActionScript przypominaj potencjometry balansu i poziomu gonoci dwiku spotykane
w typowym sprzcie hi-fi. Niektre z przykadw prawdopodobnie bd dla ciebie tylko przypomnieniem, ale przyjrzyj si plikowi sound.fla, aby przekona si, jak w rzeczywistoci dziaaj potencjometry. Po uruchomieniu filmu zobaczymy may obszar
zawierajcy par pokrte.

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.

Rozdzia 8. K Kontrola dwiku

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.

Tworzenie obiektu typu Sound


Aby mg spokojnie zapozna si z zagadnieniem, w tej czci nie bd korzysta ze
wszystkich zasad dotyczcych definiowania obiektw typu  ani przedstawia ich
prawdziwego znaczenia. Biorc pod uwag jzyk ActionScript dysponujemy trzema
moliwociami tworzenia dwiku we Flashu. Mona to zrobi:
za pomoc techniki znanej z Flasha 4, czyli doczania dwikw do listw
czasowych i kontrolowania ich poprzez czasowe obwiednie dwikowe;
za pomoc techniki wprowadzonej we Flashu 5, czyli doczania dwikw
do obiektw typu ;
za pomoc poczenia obu powyszych technik.
Biorc pod uwag potencjalnych czytelnikw, nie bdziemy dogbnie zajmowa si
pierwsz z tych moliwoci, poniewa zakadamy, e co nieco ju o niej wiedz. Z drugiej jednak strony pozostae rozwizania warte s szczegowej analizy i ich zastosowanie zostanie przedstawione na wielu przykadach w nastpnych rozdziaach.
Aby otrzyma nadajcy si do uytku obiekt typu , musimy zrobi dwie rzeczy:
stworzy ten obiekt i doczy do niego okrelony dwik. W tej drugiej kwestii moemy posuy si dwoma sposobami albo odnie si do rzeczywistego pliku z dwikiem, albo do listwy czasowej, ktra go zawiera. Pierwsza moliwo jest prostsza, ale

238

Flash 5 ActionScript. Techniki zaawansowane


druga pozwala na kontrolowanie wielu dwikw za pomoc tego samego obiektu typu
 (i co powinnimy zobaczy pniej umoliwia zastosowanie starych cech
dwikowych z Flasha 4 razem z obiektami typu  nowej wersji programu). W niej
rwnie kryje si kilka subtelnych bdw, o czym musisz wiedzie. Bdziemy si nimi
zajmowali, gdy si pojawi.
W kilku nastpnych wiczeniach wstpnie mona zastosowa plik specialFX.fla. Znajduje si w nim kilka dwikw ju zaimportowanych do biblioteki, ale moesz rwnie
dobrze zmodyfikowa je, a nawet zastosowa wasne, jeli masz tak ochot. Odgosy,
ktre odnajdziesz w tym pliku zostay stworzone dla gier we Flashu, przypominajcych
Pac Mana czy Mario Bros. S one pene takich miych dla ucha dwikw, ktre stosowano w konsolach do gier z wczesnych lat osiemdziesitych.

Doczanie dwiku z wykorzystaniem wspdzielenia


Poczenie obiektu typu  z Flasha 5 z plikiem dwikowym z biblioteki najlepiej
zastosowa wtedy, gdy chcesz doczy pojedynczy dwik do kadego z obiektw
w czasie odtwarzania obiektu, o ktrym mowa. Moesz zastosowa t technik do tworzenia obiektw typu , ktre bd odpowiedzialne za dwiki w grach czy animacjach.

Zanim doczysz, powiedzmy, plik Winner_02 do obiektu, musisz wczeniej nada mu


nazw wspdzielenia. Nie rni si to w duym stopniu od nadawania klipom filmowym nazw klonw. Pamitaj jednak o tym, e do nazwy wspdzielenia, a nie nazwy
znanej z biblioteki, odnosi si dwik w kodzie skryptu. Aby wpisa nazw wspdzielenia moesz:
wyrni dwik w bibliotece, a nastpnie wybra z wysuwanego menu Options
opcj Linkage...;
klikn prawym przyciskiem myszy dwik i wybra Linkage... z menu, ktre si
pojawi.
Niezalenie od tego, jak tego dokonasz, zobaczysz okno dialogowe Symbol Linkage
Properties (waciwoci wspdzielenia symboli). Aby nada dwikowi nazw wspdzielenia musisz wybra opcj Export this symbol i wpisa nazw w polu Identifier,
ktre w tej chwili jest aktywne. Mojemu dwikowi nadaem nazw .

Rozdzia 8. K Kontrola dwiku

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.

Zastosowanie dwiku pochodzcego z biblioteki


Rozpoczynajc od pliku specialFX.fla i ujcia pierwszego gwnej listwy czasowej dodaj nastpujc lini kodu:
  

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

Flash 5 ActionScript. Techniki zaawansowane


Cudzysw oznacza, e nazwa wspdzielenia jest cigiem znakw, a nie zmienn czy
obiektem (jeli nie uyjesz cudzysowu, Flash bdzie sdzi, e odnosisz si do cieki adresowej, jak to zobaczymy nieco dalej). Gdy ju to zrobisz, odtwarzanie dwiku
wymaga bdzie bardzo prostej instrukcji:
  

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  przerwie nagle odtwarzanie dwiku w danym ujciu. Po sprawdzeniu


dziaania usu doczone przed chwil ujcie razem z dodatkowymi instrukcjami, aby
wrci z powrotem do stanu sprzed kilku chwil.
To moe zabrzmie nieprawdopodobnie, ale w rzeczywistoci istnieje kilka subtelnych
aspektw zachowania si instrukcji  . Jednak nie bd one oczywiste, dopki
nie zaczniemy kontrolowa wielu obiektw typu , a zatem wrcimy do tej metody
ponownie.

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.

Rozdzia 8. K Kontrola dwiku

241

Dla wikszoci praktycznych zastosowa wystarcza zwykle ustawienie wartoci


zaptlenia w okolicach 1000. Ale najwysz warto podaem na wypadek, gdyby
kiedy zainteresowaa ci granica. Teraz ju j znasz.

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.

Kontrolowanie potencjometrw gonoci i balansu


w obiekcie typu Sound
Aby rozrni balans dwiku i gono obiektu typu , tak jak to ma miejsce
w przykadzie, ktrym zajmowalimy si na pocztku tego rozdziau, moemy zastosowa
metody  i . W ujciu pierwszym tego samego filmu dodaj ponisze linie:


   

   
 
  
 ! "

Potem stwrz nowe ujcia drugie i trzecie, a nastpnie zmie nazw aktualnej warstwy na actions. W ujciu drugim dodaj:
  #

  $


242

Flash 5 ActionScript. Techniki zaawansowane


A w ujciu trzecim:
%& $


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:

To, co zrobimy za chwil, moe spowodowa, i stworzymy bardzo gony


i znieksztacony dwik. Jeli do twojego komputera podczony jest zewntrzny
wzmacniacz, zmniejsz poziom gonoci do okoo 10%, zanim przejdziesz dalej.

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.

Rozdzia 8. K Kontrola dwiku

243

Tworzenie efektu pogosu


W pewnej chwili przez twoj gow moga przemkn myl, i nawet tak proste polecenia, jak te, ktre poznalimy do tej pory, mog posuy to stworzenia dosy zaawansowanych efektw, takich jak na przykad pogos. Za pomoc pokazanego poniej
skryptu mona uzyska lekki efekt pogosu. Jako punkt wyjcia zastosuj niezmodyfikowany plik specialFX.fla, a do jego pierwszego ujcia dodaj nastpujcy kod:
   

   

   
 
   
 
  

  
'

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:
  

  


... ale w rzeczywistoci, gdy to przetestujesz, bdzie je nadal sycha.


Jest to spowodowane tym, i we Flashu zdarzenia dwikowe i dwiki wywoywane
przez jzyk ActionScript nie s synchronizowane, a zatem dwa identyczne dwiki
rozpoczynajce si w tym samym ujciu niekoniecznie zaczynaj si czy kocz w tym
samym czasie. Nawet nie trwaj tak dugo, jak powinny. Ten problem zniechci wielu
projektantw do kompleksowego zastosowania dwiku we Flashu, ale mona temu zaradzi w dosy prosty sposb.
Mona zmusi odtwarzacz dwiku we Flashu do synchronizacji z listw czasow,
gdy odtwarzany bdzie dwik przesyany strumieniowo. Musi on by zsynchronizowany z listw, a zatem rozwizanie naszego problemu polega na doczeniu krtkiego
dwiku tego typu do pocztku kadej listwy czasowej, w ktrej chcemy zsynchronizowa dwik.

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

Flash 5 ActionScript. Techniki zaawansowane


s one ju poprawnie zsynchronizowane. Zawsze dodaj ten dwik do nowej warstwy
nazwanej kicker (kopniak), poniewa dokadnie okrela ona swoje dziaanie daje
odtwarzaczowi dwiku we Flashu solidnego kopa, aby dziaa poprawnie!
Musisz zatem przesun kod, ktry wczeniej wpisae tak, aby znajdowa si poza
kopniakiem (sam usunem go z ujcia pierwszego i umieciem w dziesitym):
   

   

   
 
   
 
  

  
'


Zgodnie z przewidywaniami moja melodyjka odtwarza si z psekundowym pogosem.


Aby sprawdzi, czy wystpuje prawidowa synchronizacja, trzeba ustawi opnienie
w obu obiektach typu  na zero. W rezultacie powinnimy otrzyma oryginalny
dwik, ktry bdzie oznacza, e pliki odtwarzane s w tym samym czasie. Dokadnie
to usyszymy. Z uwagi na to, i ta naprawa jest kluczowa w zaawansowanym tworzeniu
dwiku we Flashu, moesz znale wszystko to, nad czym przed chwil pracowalimy
w pliku synchFX.fla. Gdyby nie mg da sobie z czym rady, przyjrzyj mu si uwanie.
Jeli dysponujesz gitar elektryczn (sam korzystaem podczas nagrywania z gitary
Fender Strat), moesz sprbowa zaj si wyprbowywaniem niektrych dwikw,
a nastpnie pobawi si w odtwarzanie ich dodajc efekt przesterowania i pogos.
To wietna zabawa! Przypomniaa mi si niezwyka noc z moj gitar, Flashem,
kilkoma piwami i ogromnym wzmacniaczem podczonym do gitary... Wtedy
uwiadomiem sobie, e podobne efekty s moliwe. Chocia nie sdz,
e spotkao si to z yczliwym przyjciem moich ssiadw...

Kontrolowanie wielu obiektw typu Sound


Gdy wiesz ju, jak mona tworzy podstawowe obiekty typu , zademonstruj na
praktycznym przykadzie, jak mona poradzi sobie z pewnymi prostymi ale nie
opartymi na listwie czasowej dwikami. Nie wiem, czy przypominasz sobie gr z zamierzchych czasw zatytuowan Kosmiczni najedcy (Space Invaders1)? Podczas
gry mona byo usysze gboki odgos przypominajcy bicie serca, ktry przypiesza,
gdy pojazdy obcych schodziy coraz niej w d ekranu. Postaramy si stworzy taki
efekt. Bdziemy sprawdza pooenie kosmicznych najedcw, a nastpnie w stosunku
do tego, jak blisko dolnej krawdzi ekranu bd si oni znajdowali, wybierzemy odpowiedni dwik. Postaramy si rwnie opracowa ukad sterowania sucy do ustawienia oglnego poziomu gonoci i balansu dwiku.

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.

Rozdzia 8. K Kontrola dwiku

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.

Efekt dwikowe Kosmicznych najedcw


Gdy przyjrzysz si bibliotece, zauwaysz pi dwikw nazwanych od Background_Heartbeat1 do Background_Heartbeat5. Maj one przypomina przypieszajce bicie
serca. Bdziemy dobiera odpowiedni dwik do okrelonego pooenia najedcw na
ekranie.

Za pomoc okna dialogowego Symbol Linkage Properties, z ktrym zapoznalimy si


wczeniej, nadaj tym piciu dwikom nazwy wspdzielenia    do   . Jak napisaem nieco wczeniej, Flash nie sprawdza tego, czy identyfikatory s niepowtarzalne.
Co wicej jeli popenisz bd w zapisie jakiej nazwy program nie wywietli adnego komunikatu mwicego o bdzie (taki sztuczny obiekt po prostu nie bdzie dziaa)
a zatem uwaaj na to!
Do ujcia pierwszego, ktre znajduje si na gwnej listwie czasowej, docz poniszy kod:
(() * + ,-
 

 

 

 

 .

 .
.
 

 
 
 '

 '
'

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

Flash 5 ActionScript. Techniki zaawansowane


Nastpnie musimy napisa skrypt, ktry bdzie odpowiada za nasz efekt dwikowy.
Aby tego dokona, stworzymy klip filmowy, ktry bdzie si porusza w d ekranu.
Podczas jego ruchu bdziemy si przecza midzy picioma odgosami bicia serca
i wybiera coraz szybsze, im niej bdzie znajdowa si kosmiczny najedca.
Aby zobaczy, jak powinno to wyglda, spjrz na rysunek.

Jeli podzielimy ca wysoko ekranu na pi rwnych przedziaw, z ktrych kady


bdzie mia szeroko rwn    , moemy zacz od ustawienia dwiku
   w najwyszym przedziale, a potem po przekroczeniu granicy nastpnego
przejdziemy do    i tak dalej a do    w najniszym przedziale. Aby nasz film
by nieco prostszy, ruch kosmicznego najedcy bdzie odbywa si za pomoc przecigania mysz.
Do skryptu, ktry stworzylimy wczeniej w ujciu pierwszym, dodaj nastpujcy kod:
((  * / %+
0 % 
1 ''

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.

Rozdzia 8. K Kontrola dwiku

247

Teraz stwrz klip filmowy o nazwie alien1 i w pierwszym ujciu znajdujcym si na


warstwie layer 1, umie rysunek najedcy z kosmosu (chciaem, aby mj przypomina
wygldem wizerunki obcych, ktre s znane ze starych gier, ale nie musisz si w ten
sposb ogranicza; moesz by bardziej twrczy, jeli masz na to ochot). Gdy bdziesz
ju zadowolony z wygldu swojego najedcy, przecignij na niego niewidzialny przycisk, a nastpnie dopasuj do rozmiarw najedcy, jeli zajdzie taka potrzeba.

Aby klip filmowy dao si przeciga, docz do przycisku poniszy skrypt:



 2
3%

4

5  2
3%

4

Na kocu musimy doda kod przeksztacajcy aktualn pozycj obcego w odpowiedni


obiekt typu . Przecignij klon klipu alien1 na obraz znajdujcy si na nowej warstwie graphic w ujciu pierwszym i dodaj do niej nastpujcy kod:
((  * 
6 7
 2
)80 %('
 0 %9
4

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

Flash 5 ActionScript. Techniki zaawansowane


(nad ktr bdziemy pracowa w nastpnym ujciu) moemy ustali, czy kosmiczny
najedca przeszed do kolejnego przedziau (a zatem, czy naley rozpocz odtwarzanie kolejnego dwiku). Inicjujc zmienn   na pocztku z wartoci , czyli
wskazujc przedzia, ktry nie istnieje, zmuszamy Flasha, aby rozpoczyna odtwarzanie
dwiku od razu. Zastosowanie pozornej wartoci pozwala si upewni, e kod zajmuje
si czym na pocztku filmu. Jest to jeszcze jedna, czsto spotykana technika charakterystyczna dla pisania skryptw oraz jeszcze jedna sztuczka, ktrej warto si nauczy.
Za kodem inicjujcym dodaj:
6 7
: 2
 %;<
8() =
 <
 %> 0 % 2
8 

8 

8 .
.
8 
 
8 '
'
 <
 % 2
8 

4 <
 % 2
8 

4 <
 %. 2
8 .

4 <
 % 2
8 

42
8 '

4
 0 % %
4
4

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.

Rozdzia 8. K Kontrola dwiku

249

Zauwa, e to, co w tym przypadku wywouje polecenie  , zawiera ciek


adresow do listwy czasowej, na ktrej zosta stworzony obiekt typu : % .
Wydawa by si mogo, e polecenie % " "   bdzie wyczao ,
a % " "   , ale metoda  nie dziaa w ten sposb.
Jeli nie umiecisz czego w nawiasach, Flash bdzie wycza wszystkie aktualnie
odtwarzane dwiki, ale zwykle wanie o to chodzi. Aby program umia rozrnia
obiekty typu  i potrafi wycza kady z nich oddzielnie, musisz umieci
identyfikator wspdzielenia w nawiasie, tak jak pokazano to wczeniej. Opowiem
o tym nieco wicej w dalszej czci rozdziau.
Oczywicie metoda % " "  , ktra bdzie zatrzymywaa odtwarzanie
wszystkich dwikw jest w tym przypadku dokadnie tym, co zamierzamy osign.
Jednak miabym spory kopot, gdybym nawizywa do kadego obiektu typu 
i prbowa kady z nich osobno wycza, aby pokaza, jak naley to zrobi,
gdy trzeba zatrzyma dwiki, ktre odtwarzaj si niezalenie od siebie.

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.

Doczanie dwikw za pomoc nazw cieek adresowych


Do tej pory czylimy dwiki z biblioteki z obiektami typu , ale we Flashu mona zastosowa dwik w sposb znacznie bardziej elastyczny. W rzeczywistoci moemy czy z tymi obiektami wszystko, a pod tym sowem-kluczem kryje si:
listwa czasowa, taka jak % czy %   ;
wczytany poziom, taki jak na przykad %  &';
listwa czasowa klipu filmowego, taka jak na przykad % "(! .
Pozwala nam to kontrolowa wszystkie dwiki znajdujce si na nazwanych poziomach (wczajc w to obiekty typu  i inne doczone do uj dwiki, ktre nie
korzystaj ze skryptw w jzyku ActionScript). Wyjania to, dlaczego Flash nalega,
aby obiekty typu  znajdoway si na listwach czasowych, na ktrych zostay stworzone tylko wtedy moesz dodawa dalsze zagniedone poziomy kontroli dwiku
oparte na listwach czasowych.

Gwny ukad sterowania dwikiem


W tym przykadzie bdziemy korzysta z tych cech Flasha, ktre pozwalaj na doczenie listwy czasowej do obiektw typu , co w efekcie pozwala stworzy ukad sterowania dwikiem. Bdzie on rwnoczenie oddziaywa na wszystkie dwiki, ktrych

250

Flash 5 ActionScript. Techniki zaawansowane


uywalimy do tej pory. Jak zwykle gotowy przykad znajduje si w pliku invader2.fla,
ale jeli chcesz, moesz rwnie dobrze kontynuowa prac wykorzystujc wczeniejszy
przykad, zaczynajc w miejscu, w ktrym skoczylimy.
W pierwszym ujciu na gwnej listwie czasowej dodaj dwie linie na kocu listingu, tak
jak pokazano to poniej:
(() * / %+
0 % 
1 ''
(() * + ,-
 

 

 

 

 .

 .
.
 

 
 
 '

 '
'
 &

 &
8

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

Rozdzia 8. K Kontrola dwiku

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

Zwr uwag na to, e  i  s zmiennymi zdefiniowanymi gdzie indziej (pierwsza


okrela pooenie poziome, a druga ustala pionowy zasig suwaka). Ogranicza to przeciganie dwigni wewntrz pola granicznego o zerowej szerokoci (a zatem bdzie j
mona przesuwa tylko w gr i w d) w granicach okrelonych wysokoci ekranu.
Podobnie jak w przypadku najedcy z kosmosu detektor zdarzenia doczony do klonu
tego klipu filmowego zarzdza dwikiem, ktry powstanie podczas ruchu suwaka.
6 7
 2
%80 %
%(
?81 9

252

Flash 5 ActionScript. Techniki zaawansowane


8??
8%
4
6 7
: 2
8(
8 &#

4

W detektorze zdarzenia , w ktrym zdefiniowane s rwnie  i  ,  (skala)


jest wspczynnikiem, ktry musimy zastosowa wraz z aktualnym pooeniem naszego
suwaka tak, aby uzyska zasig od 0 do 100. Dwie ostatnie linie umieszczaj suwak
w pooeniu pocztkowym, ktre znajduje si na dole po prawej stronie ekranu, 100 pikseli od krawdzi. Zauwa, e kod moe korzysta ze zmiennych okrelajcych wymiary
ekranu (    ,  
 ), ktre ustawilimy na listwie czasowej % .
W detektorze  * pierwsza linia przeksztaca pooenie suwaka na warto
mieszczc si midzy 0 a 100 dzielc j przez wspczynnik  . Druga linia nastpnie
nadaje t warto gonoci wszystkch dwikw doczonych do gwnej listwy czasowej.
Jeli chcesz, moesz przetestowa w tej chwili film, ale musimy zastosowa jeszcze sterowanie balansem, ktre bdzie bardzo podobne volWidget. Rozsdnym rozwizaniem
byoby skopiowanie go i zmienienie w bibliotece nazwy na panWidget. Biblioteka powinna wyglda tak, jak na rysunku.

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:

Rozdzia 8. K Kontrola dwiku

253

6 7
 2
%81 
 $ %(
%(
80 %9
8? $ 
8
4
6 7
: 2

8?9 $  (
8 &$

4

W tym przypadku  jest rodkowym pooeniem  na ekranie, a zatem punkt


pocztkowy naszego suwaka znajduje si w kierunku . Tym razem obowizuje skala
od 100 do 100 (200 jednostek), a zatem musimy podzieli zasig przez 200, aby uzyska wspczynnik skali  .
Pierwsza linia detektora  * przeksztaca waciwo % klipu filmowego
w skal od 100 do 100 poziomu mocy dwiku, natomiast druga linia docza warto
 do obiektu ) na listwie czasowej % .
Przedostatnim zadaniem jest zmiana skryptu w niewidocznym przycisku na:

 2
3%
<%
4

5  2
3%

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

Flash 5 ActionScript. Techniki zaawansowane

Dodatkowe efekty obiektw typu Sound


Film, ktry wanie zoylimy jest w rzeczywistoci cakiem skomplikowany. Na
gwnej listwie czasowej dokonuje si wyboru jednego z kilku obiektw typu 
(zalenie od pozycji kosmicznego najedcy). Innymi sowy ten wybr moe si
opiera na znacznie dziwniejszych warunkach (moemy rwnie zastosowa kontrol
balansu i gonoci dwiku pojedynczych obiektw). Rezultat tego wyboru przechodzi
rwnie na kolejny obiekt typu  ). Uywalimy go jako gwnego systemu sterowania, poniewa pozwala na manipulowanie wszystkimi dwikami doczonymi do cieki % (niezalenie od tego, jak wielu z nich to dotyczyo). Skutecznie stosowalimy hierarchi kontroli i efekty nastpujcych po sobie poziomw kontroli
s addytywne, co zwiksza moliwoci wszystkich rodzajw interesujcych efektw.

Nasz system dziaa zgodnie z zaoeniem, e dwiki   kontroloway


nieskompresowane pliki dwikowe, ale nastpny dwik w kolejnoci )
kontrolowa poziom, ktry zawiera wszystkie dwiki. Uywajc w ten sposb obiektw typu  do stworzenia hierarchii, moemy przemieci dwik przez kilka rnych obiektw tego typu. Pozwoli to na emulowanie rzeczywistego obwodu filtra elektronicznego, w ktrym efekty kolejnych dwikw s dodawane.

Przyjrzyj si uwanie powyszemu rysunkowi. Na listwie czasowej klipu filmowego


soundClip zdefiniowany jest obiekt typu , ktry z kolei poczony jest z plikiem
zawierajcym dwik gitary. Z kolei distortClip jest innym klipem zawierajcym obiekt
typu , dla ktrego docelow listw jest listwa czasowa klipu soundClip. Ten ostatni obiekt dwikowy ma poziom gonoci ustawiony na wikszy ni 100 (korzystajc
przy tym z wartoci odczytywanych z suwaka). Nie musisz si jednak zatrzymywa
w tym miejscu, poniewa moesz stworzy trzeci klip (nazwany na przykad reverbClip),
ktry pobierze dane wejciowe z klipu distortClip i doda efekt pogosu powielajc ten
klip i dodajc sterowane suwakiem opnienie midzy nim a kopi klonu.

Rozdzia 8. K Kontrola dwiku

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?

Tworzenie i kontrola cieek dwikowych


Zaleta, jak jest zdolno okrelania docelowej listwy czasowej podczas definiowania
obiektu typu , pozwala na kontrolowanie listwy czasowej z dwikiem doczonym do jej uj (za pomoc panelu Sound i powizanego z nim okna Edit Envelope).
Moesz dziki temu na listwie czasowej ukada w okrelonym porzdku zestaw
dwikw, aby tworzy cieki dwikowe i inne kompozycje z pojedynczych prbek.
Flash umoliwia nam korzystanie maksymalnie z omiu kanaw dwikowych odtwarzanych w tym samym czasie, a zatem za pomoc tej metody moesz tworzy co, co
odpowiada omiokanaowej sekwencji prbek (czasami nazywanej przez muzykw
trackerem).

Tworzenie cieki dwikowej


W tym miejscu podsumujemy sposoby tworzenia cieki dwikowej za pomoc kompozycji stun:arpeggio, tak jak jest to pokazane w innej ksice wydawnictwa friends of
ED Foundation ActionScript2, ale pniej szybko przejdziemy do zaawansowanej
kontroli kadej cieki dwikowej za pomoc jzyka ActionScript. Jeli szczeglnie
interesuje ci tworzenie cieek dwikowych, to potrzebne wiadomoci znajdziesz
w powiconym temu zagadnieniu rozdziale 11. ksiki Foundation Flash3.
Listwa czasowa cieki dwikowej powinna zawiera pojedyncz scen (utracisz synchronizacj, jeli poczysz j z inn scen), wic musisz rozpocz opracowywanie listwy czasowej od dwiku, ktry bdzie j synchronizowa (kopniak opisany nieco wczeniej).

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

Flash 5 ActionScript. Techniki zaawansowane

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

Zauwa, e musisz rozpocz wczytywanie poziomu, zanim doczysz go do obiektu


typu  (poniewa poziom nie istnieje, dopki go nie wczytasz). Zwykle stosuj poziom 99 jako poziom cieki dwikowej, poniewa na tyle jest oddalony od poziomu
zero, by wpyway na niego (czyli kasoway) dodatkowe poziomy, ktre strona gwna
moe chcie wczyta.
W celu kontrolowania cieki dwikowej jeli zdecydowae si implementowa j
jako klip filmowy moesz po prostu zastosowa polecenia:

Rozdzia 8. K Kontrola dwiku

257

 , 

 ,


Pamitaj, e  jest ciek adresow do cieki dwikowej. Ponadto zapoznaj si


jeszcze z dodatkowymi wskazwkami:
Jeli zdecydujesz si uywa wczytywanych poziomw, rozwa zastosowanie
zamiast nich wczytywanych celw (to znaczy pustych klipw filmowych, ktre
s umieszczone od razu na obrazie). Pozwoli ci to odnosi si do listwy czasowej
cieki dwikowej (a co za tym idzie poczy z ni obiekt typu ), zanim
jeszcze rzeczywicie zaczniesz wczytywa zawarto (jest to oglnie rzecz
biorc wielka zaleta wczytywanych celw, poniewa zapewniaj zewntrzn
kontrol za pomoc jzyka ActionScript).
Zastosowanie wczytywanego poziomu czy celu pozwala wczytywa dwiki
kolejno z gwnej strony i umoliwia uytkownikowi wybr wczytywanej cieki
dwikowej bez potrzeby zmiany obiektu typu  (poniewa cieki adresowe
pozostaj te same). Daje to uytkownikowi zarwno elastyczno w wyborze
cieki dwikowej, jak i pozwala atwiej uaktualnia pliki dwikowe, poniewa
s one cakowicie odizolowane od gwnej zawartoci witryny.

Kontrolowanie cieki dwikowej


Aby kontrolowa powyszy obiekt typu , musisz zastosowa skrypt oparty na tym,
czemu przygldniemy si za chwil. Zawarem instrukcje niezbdne do kontrolowania
listwy czasowej cieki dwikowej, ktra implementowana jest jako wczytywany poziom, ale kontrolowanie wczytywanego celu czy listwy czasowej cieki dwikowej
wewntrz klipu filmowego bdzie bardzo podobne.
Wszystko zaczyna si dosy prosto aby ustawi balans i gono obiektu typu 
, ktry reprezentuje ciek dwikow, musisz wywoa po prostu jego metody
 i  tak, jak to robie wczeniej. Aby zatrzyma odtwarzanie cieki
dwikowej, uyj polecenia:
 ,

Moesz rwnie rozway dodanie instrukcji:


8%& 


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

Flash 5 ActionScript. Techniki zaawansowane


 ,

8%& $


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%& $


Do tej pory w rozdziale tym prezentowano podstawowe zastosowania obiektw typu


 we Flashu i w poczeniu z dwikami opartymi na ujciach. W nastpnej czci
zbierzemy to wszystko razem, aby stworzy projekt, o ktry prosi wielu ludzi st
mikserski we Flashu, dziki ktremu uytkownicy bd mogli tworzy wasne remiksy.

Zaawansowana kontrola dwiku


Metody obiektu typu  we Flashu 5, ktrym przygldalimy si do tej pory, pozwalaj z grubsza na ten rodzaj kontroli, ktrego moesz si spodziewa po przenonym
radiu, czy prostym odtwarzaczu kasetowym z potencjometrami balansu i gonoci.
Jednak istniej dwie znaczce funkcje dodatkowe, ktre mona doda do filmu:
Wikszo powanych systemw hi-fi pozwala na przeksztacenie dwiku
stereofonicznego w monofoniczny. To powinno wkrtce sta si kwesti do
rozstrzygnicia dla autorytetw zajmujcych si Sieci, poniewa niektre
przenone lub bezprzewodowe urzdzenia (rwnie zestawy biurowe czy
systemy przeznaczone do obrbki grafiki, a nie dwiku, ktre s uywane
w domach wielu projektantw) mog nie mie penego wyjcia stereo.
Systemy dwikowe przeznaczone do profesjonalnego miksowania dwikw
pozwalaj na zmian balansu bez zmiany cakowitej gonoci (albo bardziej
technicznie mocy) dwiku. To pozwala zmieni obraz stereo danej cieki,
a jednoczenie zachowa pozycj dwiku, ktr ta cieka stosuje w caej
kompozycji.
Metod, ktra pozwala na wczenie obu tych cech, jest 0 #. Chocia pocztkowo metoda moe nieco zniechca do korzystania z niej oprcz zdefiniowania samego obiektu typu  musisz bowiem zdefiniowa drugi obiekt dziaajcy jako
obiekt kontrolujcy dwik to jednak umoliwia ona kontrol dwikw doczonych do filmu na dobrym poziomie. Poniewa sposb jej dziaania moe by nieco niejasny, wielu ludzi nie chce z niej korzysta, gdy nie widz w niej wikszej wartoci ni
w stosowaniu kombinacji  i . Mam nadziej, e w tym miejscu zaradzimy temu raz na zawsze.
W ostatnim przykadzie w tym rozdziale zajmiemy si tym, co wielu uznaje za witego Graala dwiku we Flashu. Bdzie to budowanie filmu, ktry interaktywnie pozwala uytkownikowi tworzy wasn mieszank zestawu dwikw. Jeli przeszukasz

Rozdzia 8. K Kontrola dwiku

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 #.

Cyfrowe miksowanie dwiku za pomoc metody setTransform


Przyjrzyj si rysunkowi, ktry w najprostszy sposb pokazuje, jak wyglda przeksztacenie dwiku.

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

Pozostawiem angielskie oznaczenia L (left) lewy, R (right) prawy przyp. tum.

260

Flash 5 ActionScript. Techniki zaawansowane


Co wicej w metodzie 0 # wartoci LL i RR nie s poczone (jak to byo
w przypadku metody , ktra zwikszaa poziom prawego gonika, gdy zmniejszae poziom lewego). To znaczy, e moesz stworzy kombinacj prawego lub lewego poziomu dwiku (albo obu rwnoczenie), ktra nie byaby moliwa do osignicia
przy zastosowaniu metody . Na przykad metoda 0 # pozwala na wysanie pewnej iloci prbki monofonicznej do obu gonikw, dziki czemu moesz
stworzy efekt stereo za pomoc jzyka ActionScript:

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).

Kontrolowanie obiektw typu Sound za pomoc metody setTransform


Tworzenie obiektu typu  sucego do zastosowania z metod 0 # jest
dokadnie takim samym procesem, jaki poznae wczeniej. Musisz jednak stworzy
drugi obiekt sucy do kontrolowania tej metody. Jeli chcesz wykona ten eksperyment za pomoc tej samej prbki dwikowej, ktrej uywaem, poniszy projekt znajdziesz w pliku setTransform.fla. Gdy go uruchomisz, nie zobaczysz niczego, ale usyszysz
oryginaln prbk stereofoniczn odtwarzan przez dwa kanay poprzez lewy gonik.

Rozdzia 8. K Kontrola dwiku

261

Aby stworzy obiekt typu  o nazwie ), sucy do kontrolowania dwiku
w bibliotece z nazw wspdzielenia  , wykorzystamy nastpujce akcje:
 & 
8
 & 

 &


Nie ma w tym niczego, czego nie widziaby ju wczeniej ostatnia instrukcja po


prostu rozpoczyna jednokrotne odtwarzanie dwiku. Jeli uywasz innego, krtszego
dwiku, moesz odtworzy go wicej ni raz, eby usysze efekt zestawu polece,
ktre wanie dodalimy.
Rzecz, ktr warto w tym miejscu zapamita, jest fakt, e metoda 0 # wymaga zastosowania wartoci LL, LR, RR i RL przedstawionych na wczeniejszych rysunkach, ktre musz znajdowa si w pojedynczym obiekcie. Ten obiekt moe by nazwany jak tylko zechcesz (mj nazywa si )  , poniewa bdzie uywany do
przeksztacania obiektu )), ale musi zawiera cztery waciwoci o nazwach ,
,  i , odpowiadajce wyraonym w procentach wartociom odpowiednio
LL, LR, RR i RL. Nastpne dwie linie kodu w jzyku ActionScript definiuj obiekt
kontrolujcy z jego czterema waciwociami ustawionymi po to, aby wszystkie dwiki w prbce przechodziy do lewego gonika:
 &5+*

 &2@@@@4

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

To da nam dwik stereo odtwarzany z 50% wartoci cakowitej gonoci.


 &2@@9@@4

262

Flash 5 ActionScript. Techniki zaawansowane


Zanim przejdziemy dalej, musisz co zrozumie. W rzeczywistoci nie usyszysz nic,
poniewa prawy i lewy kana s niemal identyczne. Wybierajc warto 100 dla skadnika prawego gonika wprowadzon do lewego gonika, odejmujemy ksztat fali, co
daje nam niemal zupen cisz.
Dla umysw technicznych ujemna warto gonoci ustawia przesunicie ksztatu
fali o 180. Tworzc dwik, ktry rzeczywicie chcesz zmiksowa w ten sposb,
moesz stworzy nieze, awangardowe efekty, ale w wikszoci przypadkw bdzie
to co, czego nie bdziesz chcia otrzyma.
 &2@@@@4

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.

Dynamiczne przeksztacanie dwiku


Gdy zaczniesz dynamicznie kontrolowa przeksztacenie dwiku, wtedy atwiej bdzie
ci zrozumie potg metody 0 #. Takie dziaanie ma dwie zalety.
atwo jest zdefiniowa ustawiony wczeniej efekt. Gdy zdefiniujesz wicej
ni jeden obiekt kontrolujcy bdziesz mg natychmiast przecza si midzy
ustawieniami dwiku. Na przykad poniszy skrypt definiuje dwa obiekty:
  ktry ustawia parametry dla stereofonicznej metody 0 #,
oraz  dla... c, pewnie sam wiesz, co jest dalej, prawda?

Rozdzia 8. K Kontrola dwiku

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

atwo mona definiowa zmienne efektw i przeksztace dwikowych,


kontrolujc je za pomoc jzyka ActionScript. Aby to pokaza, przeanalizujemy
prosty przykad.
Przykad znajduje si w pliku o nazwie setTransform2.fla. Film zawiera klip, ktry cigle zmienia dwik stereo midzy prawym i lewym gonikiem (bez zmiany gonoci
dwiku). Jest to bardzo podobne do przykadu znajdujcego si w pliku setTransform.fla kod w ujciu pierwszym (w warstwie actions) jest niemal taki sam:
 & 
8
 & 

 &

 &5+*

 &2@'@@'@4
 &A<
 &

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

Flash 5 ActionScript. Techniki zaawansowane

Nastpny detektor zdarzenia w tym klipie to  * . Pojawia si w kadym ujciu


filmu (nawet jeli ma on tylko jedno ujcie, jak w tym przypadku), wic doczyem
gwny kod do tego detektora. Dodaje on po prostu zmienn    do waciwoci
 naszego obiektu kontrolujcego i odejmuje t sam warto od waciwoci .
Sprawia to wraenie, e balans przesuwa si w stron lewego kanau. Wyraenie warunkowe # sprawdza to, czy  i  osigaj zero, co oznacza, e balans przeszed ca
drog do koca. Gdy ma to miejsce, zmienia si znak zmiennej    i balans bdzie przemieszcza si w stron prawego gonika. Bdzie si to powtarzao w nieskoczono (no, dobrze 999 razy, jeli wytrzymasz tak dugo!). Jeli wywoasz Debugger zobaczysz, jak poziom zmienia si wizualnie.
Jak zauwayem we wprowadzeniu, ten poziom dwiku jest rny od tego, ktry syszelimy za pomoc prostszych metod  i  (w przykadzie sound.fla),
poniewa pozwala nam zmienia obraz stereo bez zmian cakowitej gonoci. Ten
system nie jest stosowany w domowym sprzcie hi-fi, ale jest uywany przy miksowaniu dwiku, poniewa pozwala wprowadza zmiany w obrazie stereo niezalenie od
gonoci stereo.

Zaawansowane przydzielanie dwiku


Poprawne przydzielanie polece dwikowych moe by skomplikowanym zadaniem.
Musisz mie tego wiadomo definiujc globaln kontrol dwiku (ktra dziaa na
wszystkie dwiki w filmie), kontrol lokaln (dziaajc na jedn listw czasow) oraz

Rozdzia 8. K Kontrola dwiku

265

pojedyncz (ktra bdzie dziaaa na pojedynczy poczony plik dwikowy). Czym, co


moe ci dobi, jest fakt, e jeli nie zdefiniujesz poprawnie swoich obiektw typu ,
moesz sdzi, e masz pewien typ kontroli, podczas gdy w rzeczywistoci go nie masz.

Kontrola globalna i lokalna


Powiedziaem to ju wczeniej, ale powtrz jeszcze raz: jeli zdefiniujesz obiekt typu
 na gwnej listwie czasowej bez celu, kada akcja, ktr zastosujesz na obiekcie,
bdzie wpywaa na wszystkie dwiki w filmie. Moe to myli, poniewa pojawia si
nawet wtedy, gdy sdzisz, e dostarczye wystarczajco duo informacji, aby wskaza
okrelony obiekt typu :
 & 

 &

Jeli doczysz te akcje do gwnej listwy czasowej, bd zatrzymywa wszystkie


dwiki, poniewa nie maj one zdefiniowanego celu. W rzeczywistoci nawet jeli
zdefiniujesz obiekt typu  na gwnej listwie czasowej, ktry jest doczony do
pojedynczego dwiku za pomoc wspdzielenia i zrobisz to na przykad tak:
 & 
 ,%8)3
 &

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

Flash 5 ActionScript. Techniki zaawansowane

Doczanie obiektw typu Sound do celw


Aby zdefiniowa rzeczywist lokaln kontrol, musisz zdefiniowa cel, tak jak pokazano to poniej (ze cieki % ):
 & 
; 6 
 &

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.

Rozdzia 8. K Kontrola dwiku

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?C 2
%9
 <
%C 2
%
4
4

268

Flash 5 ActionScript. Techniki zaawansowane


 <
8?D 2
%=
 <
%D. 2
%.
4
4
4
8 %
4

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

Rozdzia 8. K Kontrola dwiku

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

Flash 5 ActionScript. Techniki zaawansowane


<
, 2
 /,*+,
42
 /,+
4
8E /,F'

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!).

Rozdzia 8. K Kontrola dwiku

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

Flash 5 ActionScript. Techniki zaawansowane

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 / 
(( // 

Zaczynamy od zdefiniowania obiektu typu  nazwanego  . Zawiera on wartoci


odpowiadajce za wyciszenie na pocztku kadego dwiku. W chwili, gdy dwik si
zaczyna, zostaj one wprowadzone za pomoc wywoania metody 0 # (bez
tego obiektu usyszelibymy dwik inicjujcy).
Dwiki zdefiniowane s wraz z celami (od / do /5). To zapewnia nam, e
kady dwik bdzie kontrolowany niezalenie, a akcje 0 #, ktre stosujemy
w caym filmie, nie bd oddziayway na obiekty  do , ale wpyn na listwy
czasowe / do /5. Jest to jedyna moliwo by zapewni sobie indywidualn
kontrol za pomoc metod 0 #,  i .

Rozdzia 8. K Kontrola dwiku

273

Klipy filmowe / do /5 umieszczone s po prawej stronie na grze obrazu


i pojawiaj si w ujciu smym warstwy / .

Statyczne pole tekstowe zawierajce napis track 1 2 3 4 5 6 7 8 umieszczone jest na


warstwie cieki nazwanej track labels po to, aby byo wiadomo, ktry klip filmowy
jest ktry. Kady z nich zawiera plik dwikowy, ktry doczony jest dokadnie do
pierwszego ujcia na swojej listwie czasowej za pomoc panelu .

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

Flash 5 ActionScript. Techniki zaawansowane

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?C 2
%9
 <
%C9 2
%9
4
4
 <
8?D 2
%=
 <
%D 2
%
4
4
8 %
;
%(""
4
4

Rozdzia 8. K Kontrola dwiku

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?C 2
%9
 <
%C 2
%
4
4
 <
8?D 2
%=
 <
%D. 2
%.
4
4
8 %
%(.
4
4

Daje to warto  midzy 0 a 1.

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

Flash 5 ActionScript. Techniki zaawansowane


Jeli znajdujemy si aktualnie w ujciu pierwszym i zatrzymamy si, przycisk spowoduje przejcie do ujcia drugiego, w ktrym zatrzymamy si ponownie. Jeli bdziemy
w ujciu drugim, przycisk spowoduje przejcie do ujcia pierwszego, ale akcja 
spowoduje zatrzymanie si w tym ujciu. Obojtnie, w ktrym ujciu bdziemy si
znajdowali, przycisk wymusi przejcie do kolejnego.
Warstwa actions ma w rzeczywistoci doczon jeszcze jedn par instrukcji:   $ 3
(wyczony, ujcie pierwsze) i   $  (wczony, ujcie drugie). Zobaczymy, jak stosowana
jest ta warto, gdy przejdziemy do kocowego skryptu, ktry kontroluje wszystko.

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.

Rozdzia 8. K Kontrola dwiku

277

Wrmy jednak do tematu. Skrypt wyglda nastpujco:


6 7
 2
 8
 5+*

 2@@@@4
4
6 7
: 2
 
'986 P
86P8
 
'=86 P
86P8
8E FA<

4

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

Flash 5 ActionScript. Techniki zaawansowane

Zasoby dwiku we Flashu


Ostatnimi czasy rwnie pod wzgldem komercyjnym zastosowanie dwiku we Flashu
staje si popularne i ma to odzwierciedlenie w iloci i rnorodnoci witryn. W Sieci
mona znale wiele zasobw odpowiednich dla tych z nas, ktrzy nie s muzykami
i chocia wikszo z oferowanych dwikw jest marnej jakoci (mam nadziej, e nie
tworzono ich z tak myl!), to prawdziwy skarbiec wspaniaych pomysw mona
znale w witrynie www.flashharmonics.co.uk.
S to zasoby stworzone specjalnie dla projektantw pracujcych we Flashu i jest tego
znacznie wicej ni gdzie indziej (typowe dyskotekowe kawaki mona znale wszdzie). Nie s one rozpowszechniane za darmo, ale s tak tanie, e nie bdziesz mia kopotu z zakupem.
Jeli wemiemy pod uwag programowanie, to dobre pliki rdowe mona znale
w witrynie www.killersound.com. Wprowadzaj one kopniaka, ktrego zastosowaem
w tym rozdziale i w chwili, gdy pisz te sowa, dostpny jest samouczek do Flasha 4,
w ktrym znajduj si nadal przydatne rady i wskazwki (na stronie skorzystaj z cza
do Tech center, aby dosta si do tych plikw).
Jeli szukasz najwieszych informacji, sprbuj zajrze na stron www.macromedia.
com/support/flash, ktra zwykle zawiera nowe informacje techniczne warte przeczytania
(w szczeglnoci TechNote#12046 zawierajca najnowsze cza do stron z dwikami).
Na koniec najlepsze ze wszystkich dostpnych zasobw (jeli potrafisz je odnale)
znajduj si w systemach zuboaych muzykw ze Steinberg Cubase i SoundForge.
Odnajd ktrego z nich, sprbuj si zaprzyjani, a nastpnie obiecaj, e postawisz mu
piwo. W ten sposb bdziesz mia dostp do cigego rda wietnych dwikw.
W moim przypadku to dziaa!

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.

You might also like