12.02.2014 Views

Spis tresci - Rybnet

Spis tresci - Rybnet

Spis tresci - Rybnet

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Spis</strong> <strong>tresci</strong><br />

<strong>Spis</strong> <strong>tresci</strong><br />

Czesc 1.<br />

Rozdzial 1.<br />

Wstep....................................................................................................9<br />

Dla kogo jest przeznaczona ta ksiazka................................................10<br />

Korzysci z przeczytania ksiazki ..........................................................10<br />

Co nowego we Flashu 5 ......................................................................13<br />

Zaawansowane techniki animacji...........................15<br />

Zlozone projekty...............................................................................17<br />

Wykorzystanie automatycznego tworzenia animacji ruchu ................18<br />

Wykorzystanie automatycznego tworzenia animacji ksztaltu.............28<br />

Animowanie masek .............................................................................34<br />

Rozdzial 2. Praca z wideo i grafika 3D .............................................................45<br />

Integracja Flasha i QuickTime ............................................................46<br />

Rotoskopia...........................................................................................54<br />

Symulowanie wideo ............................................................................57<br />

Symulowanie grafiki 3D .....................................................................63<br />

Czesc 2. Zrozumiec ActionScript .........................................67<br />

Rozdzial 3.<br />

Poslugiwanie sie jezykiem ActionScript......................................69<br />

Obiekty i klasy.....................................................................................70<br />

Metody i wlasciwosci..........................................................................71<br />

Pisanie wedlug regul skladni ...............................................................72<br />

Wiecej o interpunkcji ..........................................................................74<br />

Paleta akcji ..........................................................................................75<br />

Uzywanie obiektów.............................................................................82<br />

Stosowanie komentarzy.......................................................................87<br />

Czesc 3. Zarzadzanie czasem i informacja ...........................89<br />

Rozdzial 4.<br />

Zaawansowane przyciski<br />

i interakcja z uzytkownikiem.........................................................91<br />

Niewidzialne przyciski........................................................................92<br />

Animowane przyciski..........................................................................95<br />

Animowane przyciski i symbol klipu filmowego ...............................97<br />

Zlozone przyciski..............................................................................101<br />

Manipulatory zdarzen........................................................................105<br />

Sposoby funkcjonowania przycisków...............................................108<br />

Informacje wprowadzane z klawiatury .............................................111<br />

Obiekt Key ........................................................................................114<br />

Rozdzial 5. Zarzadzanie zasobami Flasha...................................................... 117<br />

Nawigowanie po listwach czasowych klipów filmowych ................118<br />

Nazywanie klonów............................................................................119<br />

Sciezki dostepu..................................................................................121<br />

Wzgledne i bezwzgledne sciezki dostepu.........................................125<br />

<strong>Spis</strong> <strong>tresci</strong><br />

5


<strong>Spis</strong> <strong>tresci</strong><br />

Uzywanie akcji with w tworzeniu sciezek dostepu...........................131<br />

Ukosnik zamiast kropki i akcja Tell Target ......................................133<br />

Klipy filmowe jako pojemniki ..........................................................135<br />

Manipulatory zdarzen klipów filmowych.........................................138<br />

Animacje wstepne.............................................................................142<br />

Rozdzial 6. Zarzadzanie zasobami zewnetrznymi ........................................ 149<br />

Komunikacja za posrednictwem przegladarki internetowej .............150<br />

Dolaczanie filmów z zewnatrz ..........................................................168<br />

Wspólpraca z narzedziem Generator.................................................179<br />

Projektory i akcja FSCommand ........................................................181<br />

Komunikacja z drukarka ...................................................................185<br />

Czesc 4.<br />

Przeksztalcanie grafiki i dzwieku.........................191<br />

<strong>Spis</strong> <strong>tresci</strong><br />

Rozdzial 7. Kontrolowanie klipów filmowych ............................................. 193<br />

Przeciaganie klipu filmowego ...........................................................194<br />

Ustawianie wlasciwosci klipu filmowego .........................................199<br />

Zmiana koloru klipu filmowego ........................................................204<br />

Zmiana kolejnosci ulozenia klipów filmowych ................................209<br />

Wykrywanie upuszczonych klipów filmowych................................212<br />

Detekcja kolizji klipów filmowych...................................................216<br />

Wyznaczanie krawedzi obszarów klipów filmowych.......................219<br />

Powielanie i usuwanie klipów filmowych.........................................221<br />

Przylaczanie klipów filmowych........................................................225<br />

Zmiana wygladu wskaznika myszy...................................................229<br />

Tworzenie animacji za pomoca jezyka ActionScript........................232<br />

Rozdzial 8. Kontrolowanie dzwieku ............................................................... 235<br />

Czesc 5.<br />

Obiekt dzwiekowy.............................................................................236<br />

Przylaczanie dzwieków.....................................................................238<br />

Odtwarzanie dzwieków.....................................................................240<br />

Modyfikowanie dzwieków................................................................243<br />

Modyfikowanie niezaleznych dzwieków..........................................246<br />

Transformowanie dzwieków.............................................................249<br />

Tworzenie systemu dynamicznej kontroli dzwieku..........................252<br />

Uzywanie dzwieków jako plików zewnetrznych..............................257<br />

Przetwarzanie informacji......................................259<br />

Rozdzial 9. Kontrolowanie przeplywu informacji........................................ 261<br />

Deklarowanie danych........................................................................262<br />

Poslugiwanie sie zmiennymi i wyrazeniami .....................................268<br />

Wczytywanie zmiennych z zewnatrz ................................................273<br />

Modyfikowanie zmiennych...............................................................276<br />

Wiazanie zmiennych i funkcja eval...................................................279<br />

Sprawdzanie informacji za pomoca wyrazen warunkowych............282<br />

Wprowadzanie alternatywy do wyrazen warunkowych....................285<br />

Rozgalezianie wyrazen warunkowych..............................................288<br />

Laczenie wyrazen warunkowych<br />

za pomoca operatorów logicznych....................................................291<br />

Zapetlanie wyrazen............................................................................293<br />

Rozdzial 10. Kontrolowanie tekstu.................................................................... 297<br />

Tekst pobierany.................................................................................298<br />

6


<strong>Spis</strong> <strong>tresci</strong><br />

Tekst dynamiczny..............................................................................302<br />

Wiazanie tekstu.................................................................................304<br />

Wyswietlanie tekstu HTML..............................................................307<br />

Animowanie dynamicznego tekstu...................................................310<br />

Kontrolowanie przewijania bloku tekstowego ..................................313<br />

Manipulowanie lancuchami znakowymi...........................................317<br />

Obiekt selekcji ...................................................................................318<br />

Kontrolowanie selekcji wewnatrz bloków tekstowych.....................319<br />

Ogniskowanie bloków tekstowych....................................................322<br />

Obiekt lancucha znakowego ..............................................................326<br />

Analizowanie lancuchów znakowych<br />

za pomoca obiektu lancucha znakowego ..........................................327<br />

Przegrupowywanie lancuchów znakowych<br />

za pomoca obiektu lancucha znakowego ..........................................332<br />

Modyfikowanie lancuchów znakowych<br />

za pomoca obiektu lancucha znakowego ..........................................337<br />

Rozdzial 11. Manipulowanie danymi................................................................ 339<br />

Rozdzial 12.<br />

Wykonywanie obliczen za pomoca obiektu matematycznego ..........340<br />

Obliczanie wartosci katowych<br />

za pomoca obiektu matematycznego.................................................342<br />

Uzywanie funkcji sinus i cosinus<br />

do wyznaczania ruchu ukierunkowanego ..........................................349<br />

Obliczanie odleglosci za pomoca obiektu matematycznego .............353<br />

Generowanie liczb losowych.............................................................356<br />

Porzadkowanie informacji za pomoca tablic.....................................359<br />

Wprowadzanie wskazan daty i pomiaru czasu..................................366<br />

Tworzenie skryptów do wielokrotnego uzywania.............................374<br />

Tworzenie wlasnych klas za pomoca funkcji....................................379<br />

Zarzadzanie zawartoscia<br />

i rozwiazywanie problemów....................................................... 383<br />

Tworzenie wspóldzielonych bibliotek...............................................384<br />

Wspóldzielenie fontów......................................................................388<br />

Edytowanie skryptu...........................................................................390<br />

Dolaczanie zewnetrznych skryptów..................................................393<br />

Poslugiwanie sie paleta Movie Explorer ...........................................395<br />

Wyswietlanie zmiennych i obiektów w oknie Output.......................399<br />

Sledzenie zmiennych w oknie Output ...............................................402<br />

Poslugiwanie sie paleta Debugger.....................................................405<br />

Optymalizowanie filmu .....................................................................409<br />

Unikanie najczestszych bledów.........................................................413<br />

<strong>Spis</strong> <strong>tresci</strong><br />

Dodatek A Podsumowanie metod obiektów i wlasciwosci........................ 417<br />

Dodatek B Kody klawiszy ............................................................................... 431<br />

Dodatek C Podsumowanie kategorii akcji.................................................... 435<br />

7


Wstep<br />

W<br />

Czesci skladowe jezyka HTML<br />

Macromedia Flash stanowi obecnie jedna z najbardziej „goracych” technologii sieciowych.<br />

Wiodace korporacje wykorzystuja na swych witrynach Web szerokie mozliwosci grafiki do<br />

promocji wlasnych marek, wieksze studia filmowe zapowiadaja powstanie najnowszych<br />

produkcji z uwzglednieniem animacji Flasha, a witryny poswiecone sieciowym grom wideo<br />

oraz witryny edukacyjne wzbogacaja doznania odbiorców interaktywnoscia uslug. Jako aplikacja<br />

sluzaca do tworzenia wektorowych animacji, Flash stanowi jednoczesnie doskonale narzedzie<br />

pomocne przy projektowaniu efektownych, ale jednoczesnie ekonomicznych stron internetowych,<br />

pelnych animacji, dzwieku i interaktywnosci. Wlasciwie Flash staje sie powoli standardem<br />

w tworzeniu dynamicznego przekazu, dostepnego przy wykorzystaniu prawie dowolnych<br />

przegladarek i platform sprzetowych.<br />

W miare wzrostu popularnosci programu, rosna tez oczekiwania wobec animatorów<br />

i programistów, którzy wiedza, jak wykorzystac jego sile. Niniejsza ksiazka ma pomóc<br />

czytelnikowi sprostac temu wyzwaniu. Naucz sie tworzyc zlozone animacje, skojarz wyszukanie<br />

interfejsu z przejrzystoscia nawigacji, wreszcie – posiadz dynamiczna kontrole nad grafika,<br />

dzwiekiem i tekstem. Eksperymentuj z technikami omawianymi w ksiazce, tworzac pasjonujace<br />

dziela, teraz dostepne takze dla ciebie dzieki Flashowi. Nie ma cienia przesady w stwierdzeniu,<br />

ze Flash rewolucjonizuje siec, a ta ksiazka pomoze ci stac sie czescia owej rewolucji. Tak wiec<br />

uruchom swój komputer i zaczynamy!<br />

Wstep<br />

9


Dla kogo jest przeznaczona ta ksiazka<br />

Wstep<br />

Dla kogo jest przeznaczona<br />

ta ksiazka<br />

Ksiazka napisana zostala z mysla<br />

o projektantach, animatorach i programistach,<br />

którzy chcieliby rozwinac swoje umiejetnosci<br />

w poslugiwaniu sie Flashem. Zdazyles juz<br />

opanowac podstawy tworzenia animacji i jestes<br />

gotów zajac sie bardziej zlozonymi<br />

zagadnieniami, jak wideo, maskowanie,<br />

dynamiczna kontrola dzwieku czy detekcja<br />

zdarzen. Mozesz nie byc zapalonym<br />

programista, ale jestes przygotowany na<br />

opanowanie sztuki kontrolowania grafiki,<br />

dzwieku i tekstu za pomoca jezyka<br />

ActionScript. Chcesz równiez nauczyc sie<br />

sposobów laczenia przycisków i klipów<br />

filmowych w budowaniu zlozonych menu<br />

rozwijanych, laczenia interaktywnosci<br />

z animacjami w tworzeniu gier zrecznosciowych<br />

czy poznac sposoby komunikacji Flasha<br />

z przegladarkami internetowymi i programem<br />

Macromedia Generator. Jezeli powyzszy opis<br />

pasuje do ciebie, to znaczy, ze niniejsza ksiazka<br />

jest wlasnie tym, czego potrzebujesz.<br />

W ksiazce znajdziesz opisy zaawansowanych<br />

zagadnien zwiazanych z wykorzystaniem Flasha<br />

5, tak wiec zakladam, ze potrafisz juz<br />

swobodnie poslugiwac sie narzedziami<br />

programu w celu tworzenia prostych animacji.<br />

Powinienes umiec rysowac i modyfikowac<br />

ksztalty, jak równiez edytowac grafike<br />

i symbole przycisków. Dobrze by bylo, gdybys<br />

wiedzial, jak poslugiwac sie automatyczna<br />

animacja ruchu i ksztaltu, a takze animacja<br />

klatka po klatce. Powinienes miec juz swobode<br />

w korzystaniu z interfejsu programu –<br />

poruszaniu sie miedzy scena, oknem<br />

modyfikacji symbolu i listwa czasowa,<br />

manipulowaniu warstwami czy pojedynczymi<br />

ujeciami. Oprócz tego potrzebna jest<br />

umiejetnosc importowania bitmap czy<br />

dzwieków i poslugiwania sie nimi, jak równiez<br />

zdolnosc przyporzadkowywania podstawowych<br />

zdarzen poszczególnym przyciskom nawigacji.<br />

Mozesz przypomniec sobie wszystkie te<br />

zagadnienia, wykonujac np. cwiczenia<br />

z dolaczonych do programu samouczków.<br />

Korzysci<br />

z przeczytania ksiazki<br />

Zazwyczaj ksiazki przedstawiaja<br />

zagadnienia na dwa sposoby: albo wymienia<br />

sie i wyjasnia po kolei, jedna po drugiej,<br />

wszystkie funkcje – jak w encyklopedii, albo<br />

zglebia sie jakis konkretny problem,<br />

zachecajac jednoczesnie do nasladowania<br />

prezentowanych sposobów jego<br />

rozwiazania. Ta ksiazka jest inna. Jej<br />

celem jest zademonstrowac czytelnikowi<br />

zaawansowane zagadnienia, zwiazane<br />

z uzywaniem Flasha 5, w logicznym<br />

porzadku – z naciskiem na praktyczny<br />

sposób wykorzystania przedstawianych<br />

technik. Mozna sie wiec dowiedziec, jak<br />

jedne techniki opieraja sie na innych, a takze<br />

w jaki sposób laczyc grupy technik w celu<br />

rozwiazania okreslonego problemu. Kazdy<br />

z przykladów, nad którymi bedziesz<br />

pracowal, pomoze ci zdobyc nowa<br />

umiejetnosc, tak wiec po przeanalizowaniu<br />

calosci materialu bedziesz potrafil tworzyc<br />

naprawde wyszukane i interaktywne<br />

projekty Flasha.<br />

Cwiczenie polegajace na utworzeniu menu<br />

rozwijanego ilustruje na przyklad, jak<br />

z prostych elementów – niewidzialnych<br />

przycisków, zdarzen myszy, opcji sledzenia<br />

przycisków i klipów filmowych –<br />

zaprojektowac bardziej zlozony mechanizm.<br />

Przyklady prezentuja praktyczne<br />

zastosowanie omawianych technik,<br />

a dodatkowe rady wyjasniaja, jak<br />

wykorzystac poznane umiejetnosci w innym<br />

kontekscie.<br />

10


Wstep<br />

Jak korzystac z ksiazki<br />

Koncepcje prezentowane w ksiazce bazuja<br />

na sobie wzajemnie, dlatego tez przy koncu<br />

znajduja sie zagadnienia bardziej<br />

skomplikowane niz na poczatku. Jesli czesc<br />

materialu jest ci juz znana, mozesz od razu<br />

przejsc bezposrednio do zagadnien, które<br />

najbardziej cie interesuja, jednak wieksza<br />

korzysc odniesiesz, studiujac je w kolejnosci,<br />

w jakiej sa omawiane.<br />

Tak jak w innych ksiazkach z serii „Techniki<br />

zaawansowane”, poszczególne techniki<br />

przedstawiane sa w taki sposób, abys mógl je<br />

wypróbowac w momencie, w którym o nich<br />

czytasz. Sledz prezentowane krok po kroku<br />

instrukcje, patrz na rysunki i próbuj wykonac<br />

cwiczenia na wlasnym komputerze. Nauczysz<br />

sie wiecej, jesli bedziesz aktywny i spróbujesz<br />

eksperymentowac z cwiczeniami.<br />

Wsród porad znajdziesz wskazówki na temat<br />

skracania niektórych czynnosci, sposobów<br />

unikania powszechnych bledów, a takze<br />

sugestie dotyczace poszerzania obszarów<br />

zastosowan poszczególnych technik.<br />

W niektórych rozdzialach spotkasz sie<br />

z dodatkowym materialem, prezentowanym<br />

w szarych ramkach. Znajduja sie w nich<br />

zagadnienia spokrewnione z omawianym<br />

tematem, lecz niezwiazane bezposrednio<br />

z wykonywanymi cwiczeniami. Jednak<br />

przeanalizowanie i tych, równie<br />

interesujacych i uzytecznych –<br />

fragmentów pomoze ci glebiej zrozumiec<br />

technologie Flasha.<br />

Co znajdziesz w ksiazce<br />

Ksiazka podzielona jest na piec czesci:<br />

υ Czesc I. Stworzyc zlozona animacje<br />

Ta czesc omawia zaawansowane techniki<br />

tworzenia grafiki i animacji, m. in.<br />

automatyczne tworzenie animacji ruchu<br />

i ksztaltu, maskowanie, korzystanie z plików<br />

wideo w formacie QuickTime oraz<br />

grafiki 3D.<br />

υ Czesc II. Zrozumiec ActionScript<br />

Ta czesc stanowi wprowadzenie do jezyka<br />

ActionScript, skryptowego jezyka<br />

programowania, którego we Flashu uzywa<br />

sie do wprowadzania w filmie elementów<br />

interaktywnosci. Zapoznasz sie<br />

z podstawowymi komponentami jezyka<br />

i zobaczysz, jak za pomoca palety Object<br />

Actions prawidlowo pisac kod.<br />

υ Czesc III. Zarzadzanie czasem i informacja<br />

W tej czesci zapoznasz sie ze sposobami<br />

przyjmowania przez Flasha informacji<br />

wprowadzanych przez odbiorce filmu.<br />

Nauczysz sie takze tworzenia zlozonych<br />

schematów nawigacji za pomoca wielu<br />

listew czasowych i zobaczysz, jak program<br />

komunikuje sie z zewnetrznymi plikami oraz<br />

aplikacjami – np. przegladarkami<br />

internetowymi.<br />

υ Czesc IV. Przeksztalcanie grafiki i dzwieku<br />

Ta czesc demonstruje sposób na uzyskanie<br />

dynamicznej kontroli nad podstawowymi<br />

elementami kazdego filmu Flasha – grafika<br />

i dzwiekiem – przy uzyciu jezyka<br />

ActionScript.<br />

υ Czesc V: Przetwarzanie informacji<br />

Ostatnia czesc zajmuje sie zagadnieniami<br />

zwiazanymi z odczytywaniem,<br />

przechowywaniem, modyfikowaniem<br />

i sprawdzaniem informacji w celu tworzenia<br />

zlozonych srodowisk Flasha, podejmujacych<br />

interakcje z uzytkownikiem.<br />

υ Dodatki<br />

Trzy dodatki zawieraja zestawienie<br />

najwazniejszych obiektów, akcji<br />

i wartosci kodowych klawiszy w jezyku<br />

ActionScript.<br />

Korzysci z przeczytania ksiazki<br />

11


Wstep<br />

Korzysci z przeczytania ksiazki<br />

Zawartosc plyty CD-ROM<br />

Dolaczona do ksiazki plyta CD-ROM zawiera<br />

wiekszosc plików zródlowych Flasha,<br />

potrzebnych do wykonania cwiczen. Dzieki<br />

temu mozesz przesledzic proces powstawania<br />

poszczególnych cwiczen, analizowac skrypty,<br />

a nawet uzyc ich do dalszych eksperymentów.<br />

Na plycie znajdziesz tez wersje demonstracyjna<br />

Flasha 5 oraz lacza do witryn internetowych<br />

(poswieconych temu programowi), na których<br />

zgromadzono najnowsze przyklady, samouczki,<br />

artykuly i porady.<br />

Dodatkowe zródla<br />

Siec jest najlepszym zródlem informacji – dziala<br />

tam zywa, miedzynarodowa spolecznosc<br />

programistów Flasha, dzieki czemu mozesz<br />

z nimi dzielic swoje frustracje, poznawac<br />

najnowsze dziela, jak i poszukac pomocy.<br />

Istnieja biuletyny i listy dyskusyjne poswiecone<br />

uzytkownikom Flasha na róznym poziomie<br />

zaawansowania, a wszystkie oferuja darmowy<br />

dostep. Swoje poszukiwania rozpocznij od<br />

sprawdzenia stron, które znajdziesz na CD-<br />

ROM-ie; zajrzyj tez palety Flasha o nazwie<br />

Macromedia Dashboard, zawierajacej linki do<br />

witryn prowadzonych przez spolecznosc<br />

programistów Flasha.<br />

12


Wstep<br />

Co nowego we Flashu 5<br />

W wersji 5. zarówno poczatkujacy, jak<br />

i zaawansowani uzytkownicy odnajda szereg<br />

nowych cech. Nizej wymienione to tylko kilka<br />

sposród tych, które czynia z Flasha 5 jeszcze<br />

potezniejsze, elastyczniejsze i latwiejsze<br />

w uzyciu narzedzie.<br />

Poprawiony interfejs<br />

Wiekszosc narzedzi i polecen jest teraz dostepna<br />

za posrednictwem palet – niewielkich okien,<br />

których uklad mozna dowolnie aranzowac,<br />

by dopasowac srodowisko pracy do swoich<br />

preferencji. Movie Explorer, nowa paleta,<br />

przedstawia hierarchiczny obraz twojego filmu,<br />

pozwalajac na wyszukiwanie i modyfikowanie<br />

wybranych elementów. We Flashu 5 mozesz<br />

tworzyc wlasne skróty klawiaturowe.<br />

Poprawiono tez wyglad listwy czasowej, dzieki<br />

czemu latwiej jest wyszukiwac i edytowac<br />

klatki i ujecia kluczowe.<br />

Nowe narzedzia rysunkowe<br />

Wsród nowych narzedzi ulatwiajacych<br />

rysowanie jest Pen Tool, pozwalajace bardziej<br />

precyzyjnie definiowac krzywe Beziera,<br />

przeciagane siatki, rozbudowany system<br />

kontroli barwy oraz nowy system selekcji,<br />

ulatwiajacy identyfikacje kolorów wypelnien.<br />

Wspólne biblioteki i SmartClips<br />

Nowe elementy w postaci wspólnych bibliotek<br />

oraz narzedzia SmartClips ulatwiaja prace nad<br />

rozbudowanymi projektami. Dzieki wspólnym<br />

bibliotekom grupa filmów moze dzielic<br />

ustawienia, a SmartClips umozliwia<br />

przygotowywanie szablonów na potrzeby<br />

specjalnych klipów filmowych.<br />

Wieksza integracja<br />

Flash 5 rozpoznaje wiecej formatów plików,<br />

np. pliki muzyczne MP3, umozliwia takze<br />

importowanie bezposrednio do dokumentu<br />

Flasha plików PNG programów FreeHand<br />

i Fireworks, z zachowaniem warstw, tekstu<br />

i innych elementów. Flash udostepnia<br />

równiez podstawowe funkcje formatowania<br />

tekstu HTML oraz obsluge obiektów XML.<br />

Wieksza interaktywnosc<br />

Poprawiony interfejs ActionScript<br />

udostepnia nowe obiekty, metody,<br />

wlasciwosci, jak równiez dodatkowe akcje<br />

i funkcje drukowania oraz detekcji kolizji.<br />

Nowa paleta ActionScript ulatwia pisanie<br />

skryptów, a paleta Debugger pomaga<br />

rozwiazywac problemy, pozwalajac na<br />

sledzenie i modyfikacje zmiennych oraz<br />

wlasciwosci w czasie odtwarzania.<br />

Co nowego we Flash 5<br />

13


Wstep<br />

14


Czesc 1.<br />

Zaawansowane techniki animacji<br />

15


Rozdzial 1.<br />

16


Zlozone projekty<br />

1<br />

Czesci skladowe jezyka HTML<br />

Kluczem do tworzenia zlozonych animacji we Flashu jest podzial projektu na prostsze elementy.<br />

Ruch biegacza to generalnie ciag ruchów jego konczyn; i podobnie jest w programie – przyjmij,<br />

ze na kazdy projekt sklada sie grup podstawowych elementów. Takie rozkladanie jednego<br />

skomplikowanego ruchu na kilka mniejszych, prostszych, pozwala zastosowac na kazdym<br />

wyodrebnionym elemencie odpowiednia technike animacji, w efekcie upraszczajac caly proces<br />

jej tworzenia. Technika ta daje ci tez wieksza kontrole nad twoim dzielem i bardziej pozytywne<br />

rezultaty.<br />

Zalózmy teraz, ze chcialbys wykonac animacje glowy odwracajacej sie do kamery. Dobrze byloby<br />

zastanowic sie najpierw, jak podzie lic cala animacje na pojedyncze ruchy. Animowanie od razu<br />

calej sekwencji jest trudne – jesli nie niemozliwe – z uwagi na mnogosc zachowan<br />

poszczególnych elementów, skladajacych sie na ruch glowy. Sam zarys glowy moze byc<br />

animowany klatka po klatce, jako ze chodzi nam o zaprezentowanie zmiany widoku od profilu<br />

do pozy frontalnej. Poszczególne elementy twarzy tworzyc beda klony symboli, odpowiednio<br />

sciskane i rozciagane w automatycznej animacji ruchu, zgrane z obrotem calej glowy. Wlosy<br />

natomiast móglbys poddac animacji ksztaltu, oddajac w ten sposób ich falowanie czy nawet<br />

lekkie opadanie w momencie, kiedy glowa nagle przestaje sie poruszac.<br />

Poznanie sposobu na laczenie róznych technik odseparowywania elementów animacji umozliwia<br />

nie tylko pokonanie wielu problemów w procesie tworzenia animacji, ale takze przyzwyczaja cie<br />

do korzystania ze zlozonych warstw i tworzenia symboli poszczególnych komponentów projektu.<br />

To z kolei ulatwia zarzadzanie animacja i pózniejsze poprawki.<br />

Niniejszy rozdzial opisuje techniki tworzenia zlozonych animacji przez laczenie i rozszerzanie<br />

podstawowych zdolnosci Flasha.<br />

Zlozone projekty<br />

17


Tworzenie animacji ruchu<br />

Rozdzial 1.<br />

Wykorzystanie automatycznego<br />

tworzenia animacji ruchu<br />

Proces automatycznego tworzenia animacji<br />

ruchu (Motion Tweening) umozliwia zmiane<br />

dowolnych wlasciwosci klonu symbolu,<br />

np. jego umiejscowienia, rozmiaru, obrotu<br />

w przestrzeni, koloru, czy przezroczystosc.<br />

Z uwagi na wszechstronnosc, technika ta<br />

znajduje zastosowanie przy rozwiazywaniu<br />

róznorodnych problemów zwiazanych<br />

z animacja, podstawa wiekszosci proje któw we<br />

Flashu. Jako ze automatyczna animacja ruchu<br />

ma wiele wspólnego z wlasciwosciami klonu<br />

symbolu, mozna przyjac, ze tak naprawde jest<br />

to animacja samego klonu. Niezaleznie od tego,<br />

czy na scenie faktycznie odbywa sie konkretny<br />

ruch, zmiany klonów pomiedzy poszczególnymi<br />

ujeciami kluczowymi wymagaja zastosowania<br />

automatycznej animacji ruchu. Jesli przyjmiesz,<br />

ze jest to animacja klonu, latwiej bedzie ci<br />

zdecydowac, kiedy wykorzystac animacje<br />

ruchu, kiedy animacje ksztaltu, a kiedy animacje<br />

klatka po klatce.<br />

Tworzenie<br />

plynnie zapetlonych animacji<br />

Petle animacji sa wazne, poniewaz umozliwiaja<br />

tworzenie ciaglego ruchu przy zdefiniowanych<br />

jedynie kilku ujeciach kluczowych.<br />

Wykorzystuje sie je jako elementy interfejsu,<br />

w postaci obracajacych sie przycisków,<br />

przewijanych menu czy cyklicznych ruchów<br />

w postaci maszerujacej postaci, trzepoczacych<br />

skrzydel motyla lub wirujacej planety. Zeby<br />

zachowac plynnosc takiej zapetlonej animacji,<br />

trzeba upewnic sie, ze zarówno pierwsza, jak<br />

i ostatnia klatka kluczowa sa identyczne, lub<br />

prawie identyczne, tak by miec wrazenie<br />

ciaglosci ruchu.<br />

Rozwazymy teraz sposób wykonania dwóch<br />

najpopularniejszych typów zapetlonej animacji:<br />

grafiki przewijanej i grafiki animowanej po<br />

zamknietej sciezce.<br />

Rys. 1.1. Piec obiektów umiejscowionych<br />

na scenie tak, jak moglyby wygladac<br />

w poczatkowym momencie przewijania<br />

od prawej do lewej. Obiektami moga byc<br />

przyciski lub proste grafiki<br />

Rys. 1.2. Zgrupuj poszczególne obiekty,<br />

poslugujac sie poleceniem Modify/Group<br />

Pierwsza grupa<br />

Druga grupa<br />

Rys. 1.3. Utwórz okreslony wzór, kopiujac<br />

i wklejajac grupe<br />

18


Zlozone projekty<br />

Rys. 1.4. Powyzsza grupa sklada sie jedynie<br />

z dwóch obiektów. Utwórz kolejne grupy,<br />

zeby calosc wykraczala poza scene<br />

Rys. 1.5. Utwórz grupe z calego wzoru ulozenia<br />

elementów<br />

Rys. 1.6. Druga powtarzajaca sie grupa zostaje<br />

przeniesiona w miejsce, które na poczatku<br />

zajmowala pierwsza<br />

Grafika przewijana jest powszechnym<br />

elementem interfejsu, majacym zastosowanie<br />

chocby w prezentowaniu opcji menu. Technike<br />

ta mozesz równiez wykorzystac do tworzenia<br />

animacji tla, odgrywanej nieustannie<br />

w oczekiwaniu na okreslone dzialanie<br />

uzytkownika.<br />

W celu stworzenia<br />

grafiki przewijanej:<br />

1. Utwórz elementy, które maja byc przewijane<br />

po scenie, a nastepnie rozmiesc je tak, jak<br />

moglyby wygladac w dowolnym momencie<br />

(rys. 1.1).<br />

2. Zaznacz wszystkie elementy i wybierz<br />

Modify/Group (rys. 1.2).<br />

3. Skopiuj grupe do schowka, a nastepnie<br />

wklej kopie zaraz obok oryginalu – tak, zeby<br />

calosc tworzyla ciag powtarzajacych sie<br />

elementów. Na przyklad, jesli twoje<br />

elementy sa przewijane od prawej do lewej,<br />

umiesc nowa grupe na prawo od oryginalu<br />

(rys. 1.3).<br />

Zwykle przewijane elementy sa wieksze niz<br />

rozmiar sceny, ale jesli twoja pierwsza grupa<br />

jest mniejsza, to bedziesz musial powielic ja<br />

wiecej niz raz, zeby uzyskac powtarzajacy<br />

sie wzór, rozciagajacy sie poza scene<br />

(rys. 1.4).<br />

4. Zaznacz wszystkie utworzone grupy<br />

i zgrupuj je w jedna calosc (rys. 1.5). Dzieki<br />

temu bedziesz mógl ja animowac.<br />

5. Utwórz ujecie kluczowe w pózniejszym<br />

punkcie na osi czasu.<br />

6. Zaznacz grupe z ostatniego ujecia<br />

kluczowego i przesun ja tak, zeby druga<br />

powtarzajaca sie grupa elementów byla<br />

przyporzadkowana pierwszej. Kiedy<br />

przesuwasz grupe, posluguj sie linia jej<br />

zaznaczenia, zeby dopasowac jej pozycje<br />

(rys. 1.6).<br />

7. Utwórz automatyczna animacje dla<br />

przygotowanych ujec kluczowych.<br />

Tworzenie animacji ruchu<br />

19


Rozdzial 1.<br />

Tworzenie animacji ruchu<br />

8. Wstaw nowe ujecie kluczowe dokladnie<br />

przed ostatnim ujeciem, które nastepnie usun<br />

(rys. 1.7). W rezultacie uzyskasz ladnie<br />

zapetlona animacje, która nie polega jedynie<br />

na ciaglym odtwarzaniu dwóch<br />

identycznych klatek.<br />

Sciezka ruchu w warstwie wzorcowej (Guide<br />

Layer) pozwala na uzyskanie plynnego ruchu<br />

wzdluz sciezki, od punktu poczatkowego do<br />

koncowego. Jesli punkt koncowy sciezki bedzie<br />

odpowiadal poczatkowemu, uzyskasz petle „bez<br />

szwów” i wlasciwie zamknieta sciezke ruchu.<br />

W celu stworzenia<br />

zamknietej sciezki ruchu:<br />

1. Utwórz symbol graficzny i umiesc jego klon<br />

w obrebie sceny (rys. 1.8).<br />

2. Utwórz warstwe wzorcowa, klikajac ikone<br />

Add Guide Layer ponizej warstw. Pojawi<br />

sie nowa warstwa, a pierwsza stanie sie<br />

warstwa podporzadkowana (rys. 1.9).<br />

3. W warstwie wzorcowej narysuj elipse.<br />

4. Wybierz narzedzie strzalki (Arrow)<br />

z ustawionym modyfikatorem przyciagania<br />

(Snap), a nastepnie umiesc punkt srodkowy<br />

klonu na sciezce symbolizowanej przez<br />

elipse (rys. 1.10).<br />

Usuwamy ostatnie ujecie<br />

kluczowe z klatki 15.<br />

Tworzy nowe ujecie kluczowe<br />

Rys. 1.7. Utwórz nowe ujecie kluczowe<br />

(u góry) i usun ostatnie ujecie kluczowe<br />

(u dolu)<br />

Rys. 1.8. Klon symbolu graficznego<br />

umieszczamy w obrebie sceny. Tworzymy<br />

automatyczna animacje wzdluz sciezki<br />

Warstwa<br />

wzorcowa<br />

Warstwa<br />

podporzadkowana<br />

Rys. 1.9. Sciezka ruchu bedzie sie znajdowac<br />

w warstwie prowadzacej, powyzej warstwy<br />

Layer 1<br />

Klon symbolu Ziemi<br />

Punkt srodkowy<br />

Sciezka ruchu<br />

Rys. 1.10. Punkt przyciagania klonu symbolu<br />

Ziemi zostaje przylozony do sciezki ruchu<br />

20


Zlozone projekty<br />

Rys. 1.11. Pozycje Ziemi w klatce 1. i klatce 14.<br />

w warstwie Layer 1 sa identyczne<br />

Rys. 1.12. Punkt srodkowy Ziemi w srodkowym<br />

ujeciu kluczowym zostal umiejscowiony na<br />

drugim wierzcholku elipsy<br />

Ziemia w ujeciu<br />

kluczowym 7.<br />

5. Dodaj klatki do obydwu warstw i utwórz<br />

nowe ujecie kluczowe w ostatniej klatce<br />

warstwy podporzadkowanej. Zeby otrzymac<br />

zapetlona animacje, zarówno pierwsze, jak<br />

i ostatnie ujecie kluczowe musza byc<br />

identyczne (rys. 1.11).<br />

6. Zaznacz srodkowa klatke w warstwie<br />

podporzadkowanej i utwórz nowe ujecie<br />

kluczowe. W tym ujeciu klon powinien<br />

znajdowac sie po przeciwnej stronie elipsy –<br />

przesun go (rys. 1.12).<br />

7. Zaznacz wszystkie klatki pomiedzy trzema<br />

ujeciami kluczowymi i z palety Frame<br />

wybierz Motion Tweening. Twój klon<br />

wedruje teraz wzdluz sciezki wyznaczonej<br />

przez elipse. Niestety, zamiast wykonac<br />

pelne okrazenie, po prostu wraca do punktu<br />

wyjscia (rys. 1.13).<br />

Tworzenie animacji ruchu<br />

Ziemia w ujeciach<br />

kluczowych 1. i 14.<br />

Rys. 1.13. Ziemia porusza sie w ta i z powrotem<br />

po tym samym odcinku elipsy<br />

21


Rozdzial 1.<br />

Tworzenie animacji ruchu<br />

8. Chwyc klon w ostatnim ujeciu kluczowym<br />

warstwy podporzadkowanej i przesun go<br />

w poblize klonu z ujecia srodkowego,<br />

uwazajac, by punkt srodkowy pozostawal<br />

caly na sciezce (rys. 1.14). Flash<br />

automatycznie animuje dwa klony,<br />

wybierajac najbardziej bezposrednia sciezke,<br />

tak wiec skracajac odleglosc pomiedzy<br />

dwoma ostatnimi ujeciami kluczowymi<br />

z dolnego odcinka elipsy, zmuszasz program<br />

do wykorzystania wlasnie tego odcinka.<br />

Teraz twój klon powedruje wzdluz obu stron<br />

elipsy (rys. 1.15).<br />

Wskazówka<br />

• Ten sam efekt zapetlenia mozesz równiez<br />

otrzymac, usuwajac niewielki fragment<br />

sciezki. Tworzac przerwe, uzyskujesz<br />

w rzeczywistosci otwarta sciezke z punktami<br />

poczatkowym i koncowym, okreslajaca ruch<br />

twojego klonu (rys. 1.16).<br />

Korzystanie<br />

z wielu warstw podporzadkowanych<br />

Pojedyncza warstwa wzorcowa moze<br />

oddzialywac na wiecej, niz jedna warstwe<br />

podporzadkowana, umozliwiajac odtwarzanie<br />

kilku animacji na tej samej sciezce. Jest to<br />

swietny sposób na budowanie zlozonych<br />

animacji, wykorzystujacych wiele obiektów<br />

poruszajacych sie w tym samym kierunku,<br />

np. maszerujacy zolnierze, krwinki<br />

przeplywajace przez arterie, wystrzeliwane raz<br />

za razem kule czy zrywajace sie do ucieczki<br />

stado bydla. Podczas, gdy poszczególne klony<br />

moga objawiac drobne róznice w zachowaniu,<br />

ty – opierajac sie na warstwie wzorcowej –<br />

zawsze zachowujesz kontrole nad ich glównym<br />

kierunkiem ruchu.<br />

Dla przykladu, liscie powiewajace wzdluz sceny<br />

moga byc animowane wszystkie<br />

z wykorzystaniem tylko jednej warstwy<br />

wzorcowej. Warstwa ta okresla glówny<br />

kierunek wiatru, a przy tym poszczególne liscie<br />

zachowuja pewna odrebnosc w sposobie<br />

przemieszczania sie, okreslona w oddzielnych<br />

warstwach podporzadkowanych.<br />

Ziemia w ujeciu<br />

kluczowym 14.<br />

Ziemia w ujeciu kluczowym 1.<br />

Rys. 1.14. Trzy ujecia kluczowe Ziemi.<br />

Pierwszy klon jest ustawiony blizej<br />

srodkowego klonu w górnej czesci elipsy,<br />

podczas gdy ostatni klon znalazl sie w poblizu<br />

srodkowego klonu w dolnej czesci elipsy<br />

Rys. 1.15. Ziemia porusza sie wokól<br />

zamknietej sciezki<br />

Rys. 1.16. Niewielka przerwa tworzy<br />

poczatkowy i koncowy punkt dla twojej<br />

sciezki ruchu<br />

Ziemia w ujeciu<br />

kluczowym 7.<br />

Punkt poczatkowy<br />

Punkt<br />

koncowy<br />

Ziemia w ostatnim ujeciu<br />

kluczowym znajduje sie<br />

w punkcie koncowym sciezki<br />

22


Zlozone projekty<br />

Rys. 1.17. Zaznaczenie warstwy<br />

podporzadkowanej (u góry) i wstawienie nowej<br />

warstwy automatycznie przeksztalca utworzona<br />

warstwe w warstwe podporzadkowana<br />

Przeciagnij<br />

warstwe Layer 2<br />

ponizej warstwy<br />

wzorcowej<br />

Rys. 1.18. Zwykla warstwa (Layer 2) moze zostac<br />

przeksztalcona w warstwe podporzadkowana<br />

przez przeciagniecie ponizej warstwy wzorcowej<br />

Zmieniajac sciezke w warstwie wzorcowej,<br />

wplywasz na zachowanie jednoczesnie<br />

wszystkich lisci. Takie wykorzystanie<br />

pojedynczej sciezki do zarzadzania wieloma<br />

warstwami jest przykladem sposobu, w jaki<br />

mozesz budowac cale zlozone animacje –<br />

w naszym przypadku powiewajace liscie –<br />

z bardzo prostych elementów: jednej warstwy<br />

wzorcowej i jednego symbolu liscia.<br />

W celu przyporzadkowania<br />

drugiej warstwy podporzadkowanej<br />

warstwie wzorcowej:<br />

1. Zaznacz pierwsza warstwe<br />

podporzadkowana i kliknij ikone Insert<br />

Layer. Nad pierwsza warstwa<br />

podporzadkowana pojawi sie druga<br />

(rys. 1.17).<br />

lub<br />

Mozesz wykorzystac inny sposób, klikajac<br />

istniejaca zwykla warstwe i przeciagajac ja<br />

ponizej warstwy podporzadkowanej. Teraz<br />

ta warstwa stanie sie warstwa<br />

podporzadkowana (rys. 1.18).<br />

Aby okreslic<br />

punkt srodkowy obiektu<br />

w drugiej warstwie podporzadkowanej:<br />

1. Utwórz druga warstwe podporzadkowana<br />

i wprowadz klon, który chcesz<br />

automatycznie animowac (rys. 1.19).<br />

Tworzenie animacji ruchu<br />

Klon<br />

w warstwie<br />

leaf 2<br />

Klon<br />

w warstwie<br />

leaf 1<br />

Sciezka ruchu<br />

Rys. 1.19. Klon umieszczony na scenie<br />

w warstwie leaf 2<br />

23


Rozdzial 1.<br />

Tworzenie animacji ruchu<br />

2. Zaznacz klon w drugiej warstwie<br />

podporzadkowanej. Wybierz Modify/<br />

Transform/Edit Center (rys. 1.20). W<br />

obrebie klonu pojawi sie bialy krzyzyk,<br />

wskazujacy aktualny punkt srodkowy<br />

(rys. 1.21).<br />

3. Przeciagnij krzy zyk w nowe miejsce.<br />

4. Usun zaznaczenie klonu, klikajac w obrebie<br />

sceny.<br />

5. Zaznacz ponownie klon. Nowy punkt<br />

srodkowy pojawi sie w miejscu, które przed<br />

chwila okresliles (rys. 1.22).<br />

6. Poslugujac sie narzedziem strzalki<br />

(Arrow Tool) z aktywnym modyfikatorem<br />

przyciagania (Snap to Objects), przeciagnij<br />

punkt srodkowy klonu nad poczatek sciezki<br />

w warstwie wzorcowej (rys. 1.23).<br />

7. Utwórz nowe ujecie kluczowe w ostatniej<br />

klatce. Nowo utworzony klon w ostatnim<br />

ujeciu kluczowym zachowa punkt srodkowy<br />

klonu edytowanego.<br />

8. Teraz przeciagnij klon z ostatniego ujecia<br />

kluczowego nad koniec sciezki w warstwie<br />

wzorcowej. Automatyczna animacja ruchu<br />

w drugiej warstwie podporzadkowanej<br />

przebiega wzdluz tej samej sciezki, co<br />

animacja w warstwie pierwszej. Jednak<br />

nowy punkt srodkowy klonu w drugiej<br />

warstwie podporzadkowanej okresla sposób<br />

prowadzenia obiektu po sciezce (rys. 1.24).<br />

Rys. 1.20. Zaznacz klon w drugiej warstwie<br />

podporzadkowanej i wybierz<br />

Modify/Transform/Edit Center<br />

Punkt srodkowy<br />

Rys. 1.21. Edytowany punkt srodkowy liscia<br />

Nowy punkt<br />

srodkowy<br />

Rys. 1.22. Nowy punkt srodkowy liscia<br />

Lisc wysrodkowany<br />

Lisc<br />

przesuniety<br />

Sciezka ruchu<br />

Rys. 1.24. Dwie automatyczne animacje,<br />

przebiegajace wzdluz tej samej sciezki. Drugi lisc<br />

jest prowadzony inaczej, co stanowi efekt<br />

przesuniecia jego punktu srodkowego<br />

Rys. 1.23. Punkt srodkowy liscia – tutaj<br />

zaznaczony – przylaczono do sciezki<br />

24


Zlozone projekty<br />

Klon w warstwie leaf 2<br />

Klon w warstwie leaf 1<br />

Rys. 1.25. Lisc w warstwie leaf 2 zaczyna<br />

przemieszczac sie po sciezce ruchu zaraz po lisciu<br />

w warstwie leaf 1<br />

Ostatnie ujecie kluczowe przesuniete<br />

z klatki 13. do klatki 9.<br />

Zaznacz<br />

klatki 10 - 13<br />

Przekonwertuj ujecia<br />

kluczowe na zwykle klatki<br />

Rys. 1.26. Przesun ostatnie ujecie kluczowe<br />

w warstwie leaf 1 w poblize pierwszego ujecia<br />

kluczowego (u góry). Zaznacz klatki<br />

nieprawidlowej animacji (w srodku), a nastepnie<br />

przekonwertuj wszystkie ujecia kluczowe na<br />

zwykle klatki (u dolu)<br />

Róznicowanie umiejscowienia<br />

w czasie animacji w drugiej warstwie<br />

podporzadkowanej:<br />

1. Przeciagnij pierwsze ujecie kluczowe<br />

w drugiej warstwie podporzadkowanej<br />

do pózniejszego punktu na osi czasu.<br />

Sekwencja automatycznej animacji ruchu<br />

dla tej warstwy bedzie zaczynac sie po<br />

wystartowaniu pierwszej animacji, ale obie<br />

i tak zakoncza sie w tym samym momencie<br />

(rys. 1.25).<br />

2. Przeciagnij ostatnie ujecie kluczowe<br />

w pierwszej warstwie podporzadkowanej do<br />

wczesniejszego punktu na osi czasu. Ujecie<br />

kluczowe zostanie przesuniete, jednak zaraz<br />

za nim pojawi sie nowe, psujac sekwencje<br />

animacji ruchu.<br />

3. Przekonwertuj ujecia kluczowe w zwy kle<br />

klatki, wybierajac polecenie Insert/Clear<br />

keyframe (rys. 1.26). Pozostalo tylko<br />

dopasowac do siebie poszczególne<br />

sekwencje ruchu w warstwie wzorcowej.<br />

4. Popraw zgranie w czasie animacji ruchu,<br />

przesuwajac pierwsze i ostatnie ujecie<br />

kluczowe w obydwu warstwach<br />

podporzadkowanych.<br />

Wskazówki<br />

• Mozesz urozmaicac animacje przez<br />

rozmieszczanie klonów w dowolnych<br />

punktach wzdluz sciezki w warstwie<br />

wzorcowej. Punkty te niekoniecznie musza<br />

lezec dokladnie na poczatku czy koncu<br />

sciezki. Animacja ruchu i tak bedzie<br />

funkcjonowac.<br />

• Bardziej zlozone efekty osiagniesz,<br />

korzystajac z animowanych klonów<br />

symboli, przemieszczajacych sie wzdluz<br />

sciezki ruchu. Petla animacji<br />

przyporzadkowana do konkretnego symbolu<br />

nie przeszkadza mu jednoczesnie poruszac<br />

sie zgodnie z osia czasu w warstwie<br />

wzorcowej.<br />

Tworzenie animacji ruchu<br />

25


Rozdzial 1.<br />

Tworzenie animacji ruchu<br />

W celu miejscowego zróznicowania<br />

animacji zbudowanej na kilku warstwach<br />

podporzadkowanych:<br />

1. Przejdz do trybu edycji symbolu<br />

graficznego, który wykorzystujesz na<br />

sciezce ruchu.<br />

2. Zaznacz reprezentacje symbolu w oknie<br />

i dokonaj konwersji na symbol graficzny.<br />

W ten sposób tworzysz symbol graficzny<br />

w obrebie innego symbolu, co pozwala<br />

równiez na wykonanie animacji ruchu<br />

w obrebie tego symbolu.<br />

3. Utwórz zapetlona automatyczna animacje<br />

ruchu (rys. 1.27).<br />

4. Wyjdz z trybu edycji symbolu i odtwórz<br />

film, zeby zobaczyc, w jaki sposób animacja<br />

ruchu symbolu integruje sie z glówna<br />

animacja na scenie (rys. 1.28).<br />

Rys. 1.27. Animowany symbol graficzny<br />

liscia, falujacego w góre i w dól<br />

Rys. 1.28. Odtwórz animacje i zobacz,<br />

jak liscie podazaja wzdluz sciezki ruchu,<br />

jednoczesnie wykonujac wlasne ruchy,<br />

okreslone w dodatkowej animacji osobno<br />

dla kazdego z nich<br />

26


Zlozone projekty<br />

Klatka, w której<br />

startuje animacja<br />

Opcje<br />

odtwarzania<br />

Rys. 1.29. Parametr First ustalono na wartosc 4<br />

(u góry), co sprawia, ze petla animacji liscia<br />

bedzie odtwarzana z rozpoczeciem klatki 4.<br />

Pozostale opcje odtwarzania zawarte w menu<br />

rozwijanym to Play Once (odtwórz jednokrotnie)<br />

i Single Frame (pojedyncze ujecie)<br />

Wskazówki<br />

• Na palecie Instance ustaw odpowiednio<br />

parametr odtwarzania w opcji Behavior oraz<br />

parametr opcji First, aby okreslic sposób<br />

odtwarzania animowanych klonów symboli<br />

graficznych (rys. 1.29). Jesli poszczególne<br />

petle animacji beda rozpoczynac sie<br />

w róznych ujeciach, to unikniesz ich<br />

wzajemnego zsynchronizowania wzgledem<br />

siebie (rys. 1.30).<br />

• Obracanie twoich klonów na tym etapie<br />

pracy dodatkowo podkresla zlozonosc<br />

animacji, czyniac ja jeszcze bardziej<br />

interesujaca i spontaniczna.<br />

Poeksperymentuj z obracaniem klonów<br />

poruszajacych sie wzdluz sciezki ruchu.<br />

Tworzenie animacji ruchu<br />

Rys. 1.30. Trzy klony tego samego symbolu graficznego, z róznymi ustawieniami opcji<br />

odtwarzania First. Petla animacji motyla na rysunku po lewej rozpoczyna sie w klatce 1.<br />

Skrzydla zamykaja sie. Petla animacji motyla w srodku startuje w klatce 4. Skrzydla sa<br />

juz zamkniete i zaczynaja sie otwierac. Motyl po prawej otwiera skrzydla – ta petla<br />

animacji rozpoczyna sie w klatce 10<br />

27


Rozdzial 1.<br />

Tworzenie animacji ksztaltu<br />

Wykorzystanie automatycznego<br />

tworzenia animacji ksztaltu<br />

Animowanie ksztaltu jest technika pozwalajaca<br />

tworzyc amorficzne przemiany, niemozliwe<br />

do osiagniecia z wykorzystaniem takich<br />

transformacji klonów symboli, jak rotacja,<br />

skalowanie czy przekrzywianie. Wypelnienie<br />

(Fill), obwiednia (Outline), gradient<br />

(Gradient) i przezroczystosc (Alpha) sa<br />

atrybutami animowanego ksztaltu.<br />

Flash tworzy animacje ksztaltu w sposób, który<br />

jest mozliwie najprostsza droga do celu. Metoda<br />

ta jednak objawia sie czasami nieoczekiwanymi<br />

rezultatami, w rodzaju nakladajacych sie na<br />

siebie ksztaltów czy pojawiajacych sie<br />

niespodziewanie, a nastepnie laczacych sie ze<br />

soba dziur (rys. 1.31). Takie niepozadane efekty<br />

sa zwykle wynikiem tworzenia ujec kluczowych<br />

zawierajacych ksztalty zbyt zlozone do<br />

animowania wszystkich naraz. Podobnie jak<br />

w przypadku automatycznej animacji ruchu, tak<br />

tez i tutaj, dzielenie skomplikowanej sekwencji<br />

animacji ksztaltu na prostsze komponenty,<br />

a nastepnie separowanie ich w osobnych<br />

warstwach, zaowocuje o wiele lepszymi<br />

przejsciami. Wskazniki zmiany ksztaltu<br />

(Shape Hints) umozliwiaja programowi<br />

okreslenie odpowiadajacych sobie punktów<br />

pierwszego i drugiego ksztaltu. Niekiedy<br />

wprowadzenie posrednich ujec kluczowych<br />

i, co za tym idzie, stanów posrednich, moze<br />

usprawnic skomplikowana animacje. Jesli nawet<br />

sklada sie z wielu elementów, latwiej wtedy<br />

zarzadzac kazdym z nich.<br />

Korzystanie ze wskazników<br />

zmiany ksztaltu<br />

Wskazniki zmiany ksztaltu pozwalaja<br />

programowi przyporzadkowac poszczególne<br />

punkty jednego ksztaltu odpowiadajacym im<br />

punktom drugiego. Wprowadzajac wiecej<br />

wskazników zmiany ksztaltu, zyskujesz lepsza<br />

kontrole nad przebiegiem animacji ksztaltu.<br />

Dziura<br />

Ksztalty przejsciowe<br />

Rys. 1.31. Próba przeksztalcenia slowa<br />

„flash” w slowo „shape”. Zwróc uwage na<br />

rozproszenia pomiedzy „s” i „p”, a takze<br />

dziure, która pojawia sie miedzy „h” i „e”<br />

28


Zlozone projekty<br />

Rys. 1.32. Zaznacz pierwsze ujecie kluczowe<br />

animacji ksztaltu i wybierz Modify/Transform/<br />

Add Shape Hint<br />

Pierwszy wskaznik<br />

zmiany ksztaltu<br />

W celu dodania<br />

wskaznika zmiany ksztaltu:<br />

1. Zaznacz pierwsze ujecie kluczowe<br />

automatycznej animacji ksztaltu. Wybierz<br />

Modify/Transform/Add Shape Hint<br />

(rys. 1.32). W srodku twojego ksztaltu<br />

pojawi sie litera otoczona czerwonym<br />

pierscieniem (rys. 1.33).<br />

2. Przesun pierwszy wskaznik zmiany ksztaltu<br />

do punktu w obrebie twojego ksztaltu.<br />

Upewnij sie, ze dla narzedzia strzalki<br />

(Arrow Tool) uaktywniles modyfikator<br />

Snap to Objects, bowiem tylko wtedy<br />

mozliwe bedzie przyciaganie zaznaczenia<br />

do wierzcholków i krawedzi.<br />

3. Zaznacz ostatnie ujecie kluczowe sekwencji<br />

animacji ksztaltu i przesun pasujaca litere,<br />

otoczona pierscieniem, do odpowiedniego<br />

punktu koncowego ksztaltu. Przeniesiony<br />

wlasnie wskaznik zostanie podswietlony na<br />

zielono, a pierwszy wskaznik – na zólto, co<br />

bedzie oznaczac, ze obydwa wskazniki<br />

umiejscowiono prawidlowo (rys. 1.34).<br />

4. Kontynuuj dodawanie wskazników –<br />

pamietajac, ze moze ich byc najwyzej 26 –<br />

az uzyskasz pozadana animacje ksztaltu<br />

(rys. 1.35).<br />

Tworzenie animacji ksztaltu<br />

Rys. 1.33. Pierwszy wskaznik zmiany ksztaltu<br />

pojawia sie w srodku sceny, w pierwszym ujeciu<br />

kluczowym<br />

„Poprzeczka” litery T plynnie<br />

zaweza sie, tworzac I<br />

Rys. 1.34.<br />

Odpowiadajacy<br />

pierwszemu –<br />

wskaznik zmiany<br />

ksztaltu<br />

w ostatnim ujeciu<br />

kluczowym<br />

Rys. 1.35. Zmiana „T” w „I”<br />

z wykorzystaniem wskazników zmiany<br />

ksztaltu (po lewej) i bez nich (po prawej)<br />

Tutaj T,<br />

zmieniajac sie<br />

w I, przechodzi<br />

niepotrzebne<br />

przeobrazenia<br />

29


Rozdzial 1.<br />

Tworzenie animacji ksztaltu<br />

Wskazówki<br />

• Wskazniki rozmieszczaj zgodnie z ruchem<br />

wskazówek zegara lub w przeciwnym<br />

kierunku. Flash lepiej interpretuje<br />

rozmieszczanie sekwencyjne, niz<br />

rozrzucanie punktów po calej scenie.<br />

• Wskazniki zmiany ksztaltu musza byc<br />

rozmieszczane na krawedziach lub po<br />

rogach ksztaltu. Jesli dodasz wskaznik po<br />

prostu wewnatrz lub na zewnatrz ksztaltu,<br />

pozostanie on podswietlony na czerwono<br />

i program go zignoruje.<br />

• Jesli chcesz obejrzec animacje bez<br />

wskazników zmiany ksztaltu, wybierz<br />

View/Show Shape Hints. Opcja zostanie<br />

odznaczona i wskazniki beda ukryte.<br />

• Jesli przesuwasz cala animacje ksztaltu<br />

poleceniem Edit Multiple Frames,<br />

pamietaj, ze bedziesz musial ponownie<br />

ustawiac wszystkie wskazniki zmiany<br />

ksztaltu. Niestety, nie jest mozliwe<br />

przesuwanie wszystkich wskazników<br />

jednoczesnie.<br />

W celu usuniecia<br />

wskaznika zmiany ksztaltu:<br />

1. Przeciagnij niepotrzebny wskaznik poza<br />

scene. Odpowiadajacy mu wskaznik<br />

w innym ujeciu kluczowym zostanie<br />

usuniety automatycznie.<br />

W celu usuniecia<br />

wszystkich wskazników<br />

zmiany ksztaltu:<br />

1. Wybierz Modify/Transform/Remove<br />

All Hints.<br />

30


Zlozone projekty<br />

Pierwsze<br />

ujecie kluczowe<br />

Trzecie<br />

ujecie kluczowe<br />

Rys. 1.36. Zlozona animacja ruchu wymaga<br />

wielu posrednich ujec kluczowych<br />

Ksztalty laczace<br />

Rys. 1.37. Bezposrednia zmiana „Z” w „S”<br />

prowadzi do wypaczenia ksztaltu litery<br />

Rys. 1.38. Ksztalt posredni<br />

Drugie<br />

ujecie kluczowe<br />

Ostatnie<br />

ujecie kluczowe<br />

Rys. 1.39. „Z” bez niespodzianek przechodzi<br />

w posredni ksztalt (w srodku), a pózniej nastepuje<br />

juz tylko plynna przemiana w „S”<br />

Korzystanie<br />

z posrednich ujec kluczowych<br />

Dodawanie posrednich ujec kluczowych<br />

wprowadza do skomplikowanej animacji stany<br />

posrednie, które umozliwiaja tworzenie<br />

prostszych i latwiejszych w zarzadzaniu zmian.<br />

Pomysl o tym, jak o automatycznej animacji<br />

ruchu. Zalózmy, ze chcesz zaprojektowac<br />

animacje przedstawiajaca ruch kuli zmierzajacej<br />

od lewego górnego rogu sceny, przez prawy<br />

górny róg, do lewego dolnego i stamtad do<br />

prawego dolnego rogu (rys. 1.36). Nie<br />

wystarczy wprowadzenie tylko d wóch ujec<br />

kluczowych, jednego z kula w górnym lewym<br />

rogu i drugiego, przedstawiajacego ja w<br />

prawym dolnym rogu sceny, a nastepnie<br />

oczekiwanie, ze Flash tak po prostu utworzy<br />

animacje obiektu zygzakujacego po scenie.<br />

Trzeba dolaczyc do sekwencji dodatkowe u jecia<br />

kluczowe – tak, aby program mógl animowac<br />

kule etapami. I ta sama zasada obowiazuje przy<br />

animacji ksztaltu. Korzystajac z posrednich ujec<br />

kluczowych, uzyskasz bardziej dramatyczny<br />

efekt przejscia jednego obiektu w drugi.<br />

W celu utworzenia<br />

posredniego ujecia kluczowego:<br />

1. Przyjrzyj sie, jak nieudanie przebiega<br />

animacja ksztaltu przedstawiajaca przejscie<br />

litery „Z” w litere „S” (rys. 1.37).<br />

2. Wprowadz ujecie kluczowe w posrednim<br />

punkcie sekwencji animacji.<br />

3. W nowo utworzonym ujeciu kluczowym<br />

poddaj edycji ksztalt, zamieniajac go w cos<br />

w rodzaju schodka, który pózniej zamieni<br />

sie w ostateczny ksztalt (rys. 1.38). Cala<br />

animacja opiera sie teraz na mniejszych<br />

zmianach, dajac lepszy rezultat w postaci<br />

bardziej plynnego przejscia (rys. 1.39).<br />

Tworzenie animacji ksztaltu<br />

31


Rozdzial 1.<br />

Tworzenie animacji ksztaltu<br />

Niekiedy jednak dolaczenie posrednich ujec<br />

kluczowych nie wystarcza i wtedy trzeba sie<br />

dodatkowo posluzyc wskaznikami zmiany<br />

ksztaltu. Nizej podaje trzy sposoby na dodanie<br />

wskazników do animacji ksztaltu, w której<br />

wykorzystano posrednie ujecia kluczowe.<br />

W celu uzycia<br />

wskazników zmiany ksztaltu<br />

z wieloma ujeciami kluczowymi:<br />

1. Zaznacz posrednie ujecie kluczowe i dodaj<br />

wskazniki zmiany ksztaltu, tak jak by to<br />

bylo pierwsze ujecie kluczowe.<br />

Pamietajac o znaczeniu kolorów<br />

podswietlenia, zwróc uwage które wskazniki<br />

naleza do poszczególnych sekwencji<br />

animacji. Zólty oznacza wskaznik dla<br />

pierwszego ujecia kluczowego, a zielony –<br />

odpowiednio, ostatniego (rys. 1.40).<br />

lub<br />

Wstaw nowe ujecie kluczowe, zaraz przy<br />

drugim ujeciu kluczowym, i zacznij<br />

dodawac wskazniki zmiany ksztaltu.<br />

Nowe ujecie kluczowe pozwala dodawac<br />

kolejne wskazniki bez obawy o nakladanie<br />

sie wskazników z poprzedniej sekwencji<br />

(rys. 1.41).<br />

lub<br />

Utwórz nowa warstwe (powielajaca<br />

posrednie i ostatnie ujecia kluczowe<br />

animacji ksztaltu), w której nastepnie dodaj<br />

kolejne sekwencje animacji ksztaltu.<br />

Kopiowanie posredniego ujecia kluczowego<br />

pozwala trzymac wskazniki zmiany ksztaltu<br />

w oddzielnych warstwach, co równiez<br />

pomaga uniknac nakladajacych sie<br />

wskazników (rys. 1.42).<br />

Koncowy wskaznik<br />

zmiany ksztaltu,<br />

odpowiadajacy<br />

wskaznikowi<br />

z pierwszego ujecia<br />

kluczowego<br />

Rys. 1.40. To posrednie ujecie kluczowe<br />

zawiera dwie grupy wskazników zmiany<br />

ksztaltu. Niektóre stanowia wskazniki<br />

koncowego ksztaltu dla pierwszej animacji,<br />

inne odnosza sie do poczatkowego ksztaltu<br />

drugiej animacji<br />

Wskazniki zmiany<br />

ksztaltu w warstwie<br />

Layer 2<br />

Poczatkowy<br />

wskaznik ksztaltu<br />

dla siódmego<br />

ujecia<br />

kluczowego<br />

Rys. 1.41.<br />

Wskaznik<br />

zmiany<br />

ksztaltu<br />

w nowej<br />

warstwie<br />

Rys. 1.42. Warstwa Layer 2 oddziela<br />

poczatkowe wskazniki zmiany ksztaltu,<br />

nalezace do animacji ksztaltu z klatek 7 – 15,<br />

od koncowych wskazników zmiany ksztaltu,<br />

przynaleznych do animacji z klatek 1 – 7<br />

32


Zlozone projekty<br />

Rys. 1.43. Podczas przeksztalcania „F” w „D”<br />

na obrzezach pierwszego ksztaltu pojawia sie<br />

dziura<br />

Rys. 1.44. Dziure oraz ksztalty wypelnione<br />

umieszczono w dwóch osobnych warstwach<br />

Korzystanie z warstw<br />

dla uproszczenia zmian ksztaltu<br />

Funkcja automatycznego tworzenia animacji<br />

ksztaltu umozliwia kreowanie bardzo zlozonych<br />

animowanych sekwencji w obrebie pojedynczej<br />

warstwy, ale poleganie tylko na tym sposobie<br />

prowadzi czasem do zupelnie<br />

nieprzewidywalnych rezultatów. Korzystaj<br />

z warstw do rozdzielania skomplikowanych<br />

ksztaltów, a nastepnie twórz zlozone, ale<br />

prostsze animacje ksztaltu.<br />

Na przyklad, kiedy animujemy przemiane litery<br />

„F” w litere „D”, na krawedziach pierwszego<br />

ksztaltu pojawia sie dziura z koncowego<br />

ksztaltu (rys. 1.43). Wydzielenie dziury<br />

w literze „D” i potraktowanie jej jako bialego<br />

ksztaltu pozwala uzyskac kontrole nad tym,<br />

kiedy i jak sie ona pojawi. Wstaw nowa<br />

warstwe i utwórz druga animacje dla dziury.<br />

Animacja powstala z polaczenia tych dwóch<br />

z pewnoscia da o wiele lepsze efekty (rys. 1.44).<br />

Tworzenie animacji ksztaltu<br />

33


Animowanie masek<br />

Rozdzial 1.<br />

Animowanie masek<br />

Maskowanie jest prostym sposobem na<br />

selektywne odkrywanie czesci warstwy lub<br />

warstw lezacych ponizej. Wymaga to<br />

przeksztalcenia jednej warstwy w warstwe<br />

maski i warstw lezacych ponizej – w warstwy<br />

maskowane.<br />

Dodajac animacje do warstwy maski czy warstw<br />

maskowanych, albo do wszystkich naraz, mozesz<br />

tworzyc dynamiczne maski, które poruszaja sie,<br />

zmieniaja ksztalt, odkrywaja poruszajace sie<br />

obrazki w rezultacie mozesz wykroczyc daleko<br />

poza proste, statyczne obrazki, pokazywane jak<br />

przez judasza. Animowane maski pozwalaja<br />

osiagac takie zlozone efekty, jak poruszajace sie<br />

reflektory, soczewki powiekszajace obrazy czy<br />

tez cos w rodzaju promieni rentgenowskich,<br />

które ukazuja bardziej skomplikowane detale,<br />

kiedy padaja na maskowany obszar. Dzieki<br />

animowanym maskom jest mozliwe takze<br />

uzyskanie kinowych efektów nachodzenia jednej<br />

sceny na druga, czy nawet efektu przyslony, kiedy<br />

to jedna scena znika z ekranu, przyjmujac ksztalt<br />

kurczacego sie okregu i zostawiajac tym samym<br />

kolejna scene na ekranie.<br />

Wstawianie warstw nad maskami i pod nimi<br />

pozwala na jeszcze wieksza zlozonosc<br />

animowanych masek. Przykladowo, ksztalt<br />

wypelniony gradientem alfa da efekt powolnego<br />

rozplyniecia sie ostrych krawedzi maski<br />

w miekkim swietle reflektora.<br />

W celu animowania warstwy maski:<br />

1. W warstwie Layer 1 utwórz obrazek<br />

stanowiacy tlo, ewentualnie zaimportuj<br />

bitmape.<br />

2. Wstaw nowa warstwe powyzej pierwszej<br />

warstwy.<br />

3. Zaznacz górna warstwe i wybierz Modify/<br />

Layer. W polu Type wybierz opcje Mask.<br />

Teraz zaznacz dolna warstwe i wybierz<br />

ponownie Modify/Layer. W polu Type<br />

zaznacz opcje Masked. Górna warstwa<br />

tworzy od tej chwili warstwe maski, a dolna<br />

warstwe maskowana (rys. 1.45).<br />

Warstwa maskowana<br />

Warstwa maski<br />

Rys. 1.45. Warstwa Layer 2 jest warstwa<br />

maski, a warstwa Layer 1 – warstwa<br />

maskowana<br />

34


Zlozone projekty<br />

Animacja ksztaltu<br />

w warstwie Layer 2<br />

Nurkujaca dziewczyna<br />

w warstwie Layer 1<br />

4. W warstwie maski utwórz automatyczna<br />

animacje ruchu lub animacje ksztaltu<br />

(rys. 1.46).<br />

5. W warstwie maskowanej wstaw<br />

odpowiednia ilosc klatek, pasujaca do liczby<br />

klatek animacji w warstwie maski.<br />

6. Zablokuj obie warstwy i ocen efekt<br />

zastosowania animowanej maski na obrazie<br />

w warstwie maskowanej (rys. 1.47).<br />

Rys. 1.46. Animacja ksztaltu, przedstawiajaca<br />

wijaca sie linie, znajduje sie w warstwie maski.<br />

Zdjecie nurkujacej dziewczyny umieszczono<br />

w warstwie maskowanej<br />

Animowanie masek<br />

Rys. 1.47. Animacja ksztaltu<br />

odkrywa zdjecie nurkujacej dziewczyny<br />

35


Rozdzial 1.<br />

Animowanie masek<br />

Wskazówki<br />

• Umiesc nieznacznie rózniace sie miedzy<br />

soba kopie obrazu w zwyklej warstwie,<br />

ponizej warstwy maski i warstw<br />

maskowanych. Animowana maska bedzie<br />

sie teraz zachowywac jak rodzaj filtra<br />

odslaniajacego obraz lezacy ponizej. Dla<br />

przykladu: do warstwy maskowanej wstaw<br />

jasny obraz, a do zwyklej warstwy<br />

znajdujacej sie pod nia – ciemniejsza wersje<br />

tego samego obrazka. Maska zamieni sie<br />

w reflektor oswietlajacy obraz (rys. 1.48).<br />

Poeksperymentuj z innymi kombinacjami<br />

róznych kopii jednego obrazu, np. ostra<br />

i rozmyta, rysunkiem w skali szarosci oraz<br />

kolorowym – czy obrazem rozbarwianym<br />

(rys. 1.49).<br />

• Umiesc w warstwie maski animacje<br />

rozszerzajacego sie prostokata, który<br />

zakrywa scene, nasladujac w ten sposób<br />

kinowy efekt nakladania sie obrazów<br />

(rys. 1.50).<br />

Rys. 1.48. Poruszajacy sie reflektor<br />

umieszczony w warstwie maski (spotlight)<br />

odkrywa zdjecie witrazu z warstwy<br />

maskowanej (bitmap). Ciemniejsza kopia<br />

zdjecia umieszczona zostala w zwyklej<br />

warstwie lezacej ponizej (dark bitmap)<br />

Maska<br />

Obraz<br />

w warstwie<br />

bikers<br />

Animacja<br />

ksztaltu<br />

Obraz 1<br />

Obraz 2<br />

Rys. 1.50. Warstwa maski zawiera duza animacje<br />

ksztaltu, która zakrywa cala scene (u góry).<br />

W efekcie uzyskuje sie kinowy efekt nalozenia<br />

obrazów, zachodzacy miedzy obrazem w warstwie<br />

maskowanej i obrazem znajdujacym sie<br />

w warstwie zwyklej<br />

Rys. 1.49. Poruszajace sie pionowe ksztalty<br />

z warstwy maski (u góry) odkrywaja zdjecie<br />

kolarzy umieszczone w warstwie maskowanej.<br />

Kopia zdjecia wstawiona do lezacej najnizej<br />

zwyklej warstwy jest lekko przesunieta, co<br />

daje efekt zafalowania obrazu (u dolu)<br />

36


Zlozone projekty<br />

Rys. 1.51. Ksztalty w warstwie mask<br />

W celu animowania<br />

warstwy maskowanej:<br />

1. Majac dwie warstwy, przeksztalc górna<br />

w warstwe maski, a dolna – w warstwe<br />

maskowana.<br />

2. Narysuj wypelniony ksztalt (lub ksztalty)<br />

w warstwie maski (rys. 1.51).<br />

Figury te wyznacza obszar, przez który<br />

bedzie widoczna twoja animacja<br />

umieszczona w warstwie maskowanej.<br />

3. W warstwie maskowanej utwórz<br />

automatyczna animacje ksztaltu lub<br />

animacje ruchu, odtwarzana w obrebie<br />

ksztaltu w warstwie maski (rys. 1.52).<br />

4. Zablokuj obie warstwy i zobacz efekt<br />

animowanej maski pojawiajacej sie zza<br />

warstwy maski (rys. 1.53).<br />

Obraz zamku<br />

przemieszczajacego<br />

sie pod maska<br />

Animowanie masek<br />

Rys. 1.52. Animacja ruchu w warstwie<br />

maskowanej (Layer 1) jest odtwarzana<br />

w obrebie ksztaltów w warstwie maski<br />

Rys. 1.53. Obraz zamku przesuwa sie pod<br />

maska. Kolor tla jest kolorem sceny<br />

37


Rozdzial 1.<br />

Animowanie masek<br />

Wskazówka<br />

• Prezentowana technika jest uzyteczna<br />

alternatywa dla poslugiwania sie<br />

automatyczna animacja ksztaltu w celu<br />

animowania krawedzi i podobnych typów<br />

obiektów, które rosna, kurcza sie czy<br />

wypelniaja. Na przyklad, wyobraz sobie<br />

animacje przedstawiajaca dopalajacy sie lont<br />

bomby (rys. 1.54). Utwórz maske lontu,<br />

a nastepnie animacje warstwy maskowanej,<br />

która stopniowo robi sie coraz mniejsza,<br />

przypominajac wlasnie kurczacy sie lont<br />

(rys. 1.55).<br />

Wszystkie wypelnienia w warstwie maski Flash<br />

widzi jako ksztalty kryjace, nawet jesli uzyjesz<br />

przezroczystego wypelnienia lub gradientu.<br />

Wszystkie maski maja wiec ostre krawedzie.<br />

Zeby uzyskac miekszy obrys, umiesc<br />

wypelnienie gradientowe z przezroczystym<br />

srodkiem nad maska lub pod nia – tak, aby<br />

ukryc jej krawedzie.<br />

W celu uzyskania miekkich<br />

krawedzi maski:<br />

1. Utwórz warstwe maski i warstwe<br />

maskowana.<br />

2. W warstwie maskowanej umiesc lub narysuj<br />

obraz stanowiacy tlo.<br />

3. W warstwie maski narysuj elipse.<br />

4. Skopiuj elipse.<br />

5. Wstaw nowa warstwe i umiesc ja miedzy<br />

warstwa maski i warstwa maskowana.<br />

Ta nowa warstwa zostanie przeksztalcona<br />

w warstwe maskowana.<br />

6. Wybierz Edit/Paste in Place. W nowej<br />

warstwie maskowanej pojawi sie nowa<br />

elipsa, która zostanie umieszczona dokladnie<br />

pod elipsa w górnej warstwie maski<br />

(rys. 1.56).<br />

Rys. 1.54. Lont jest coraz krótszy<br />

Maska<br />

Kurczacy sie ksztalt<br />

w warstwie fuse fill<br />

Rys. 1.55. Lont bomby to cienka linia<br />

w warstwie maski. Animowany prostokat<br />

w warstwie maskowanej kurczy sie,<br />

wygladajac jak spalajacy sie, coraz krótszy<br />

lont<br />

Ksztalt w warstwach<br />

ellipse 1 i ellipse 2<br />

Obraz<br />

w warstwie<br />

background<br />

Rys. 1.56. Ta sama<br />

elipsa pojawia sie<br />

zarówno<br />

w warstwie maski<br />

(ellipse 1), jak<br />

i w górnej warstwie<br />

maskowanej<br />

(ellipse 2). Zdjecie<br />

kobiety<br />

umieszczono<br />

w dolnej warstwie<br />

maskowanej<br />

(background)<br />

38


Zlozone projekty<br />

Alfa = 100%<br />

Alfa = 0<br />

Rys. 1.57. Gradient kolowy z przezroczystym<br />

srodkiem, umieszczony w górnej warstwie<br />

maskowanej<br />

Rys. 1.58. Ostateczny wyglad maski o miekkich<br />

krawedziach<br />

Maska<br />

Gradient kolowy<br />

z przezroczystym<br />

srodkiem<br />

Obraz tla<br />

7. Wypelnij wklejona elipse gradientem<br />

kolowym, definiujac jego srodek jako<br />

przezroczysty i obrzeza jako kryjace, w tym<br />

samym kolorze co scena (rys. 1.57).<br />

8. Zablokuj wszystkie trzy warstwy i ocen<br />

efekt maskowania (rys. 1.58).<br />

Warstwa maski pozwala ci widziec poprzez<br />

obszar wyznaczony przez elipse. Górna<br />

warstwa maskowana kryje krawedzie elipsy<br />

– w wyniku tworzenia stopniowego<br />

zaciemnienia w kierunku srodka. Dolna<br />

warstwa maskowana zawiera obraz tla<br />

(rys. 1.59).<br />

Miekkie krawedzie tworzone przy uzyciu<br />

przezroczystych gradientów kolowych spisuja<br />

sie dobrze w przypadku masek kolowych, jesli<br />

jednak ksztalt maski staje sie bardziej<br />

skomplikowany, trzeba uciec sie do dokonania<br />

poprawek na samym ksztalcie.<br />

W celu uzyskania miekkich<br />

krawedzi maski o zlozonym ksztalcie:<br />

1. Utwórz warstwe maski i warstwe<br />

maskowana.<br />

2. Umiesc lub narysuj obrazek w warstwie<br />

maskowanej.<br />

3. W warstwie maski narysuj jakis<br />

skomplikowany ksztalt.<br />

4. Skopiuj narysowany ksztalt.<br />

5. Wstaw nowa warstwe maskowana pomiedzy<br />

warstwe maski i pierwsza warstwe<br />

maskowana.<br />

Animowanie masek<br />

Rys. 1.59. Maska o zmiekczonych krawedziach<br />

stanowi kombinacje maski w górnej warstwie<br />

(warstwie maski), gradientu kolowego<br />

w srodkowej warstwie (górna warstwa<br />

maskowana) i obrazu tla, umieszczonego<br />

w dolnej warstwie (dolna warstwa maskowana)<br />

39


Rozdzial 1.<br />

6. Wybierz Edit/Paste in Place. Twój zlozony<br />

ksztalt pojawi sie w nowej warstwie<br />

maskowanej, dokladnie pod pierwotnym<br />

ksztaltem w górnej warstwie maski<br />

(rys. 1.60).<br />

7. Narysuj obrzeza wokól twojego ksztaltu,<br />

korzystajac z narzedzi Oval Tool lub<br />

Rectangle Tool (rys. 1.61).<br />

8. Obszar pomiedzy narysowanym ksztaltem<br />

a obrzezem wypelnij kolorem tla,<br />

a nastepnie usun pierwotny ksztalt. Twój<br />

zlozony ksztalt stanowi teraz „dziure”<br />

w wiekszym ksztalcie (rys. 1.62).<br />

9. Zaznacz caly ksztalt i wybierz Modify/<br />

Shape/Soften Fill Edges (rys. 1.63).<br />

Rys. 1.60.<br />

Zlozony ksztalt<br />

w górnej<br />

warstwie<br />

maskowanej,<br />

umieszczony nad<br />

obrazem w dolnej<br />

warstwie<br />

maskowanej<br />

Animowanie masek<br />

Pusty<br />

prostokat<br />

Zlozony<br />

ksztalt<br />

Rys. 1.61. Pusty prostokat narysowany<br />

wokól zlozonego ksztaltu<br />

Rys. 1.63. Wybierz Modify/Shape/Soften Fill<br />

Edges<br />

Rys. 1.62. Wypelniajac obszar pomiedzy<br />

ksztaltem i prostokatem, a nastepnie<br />

usuwajac ksztalt, tworzysz otwór<br />

40


Zlozone projekty<br />

Rys. 1.64. Okno dialogowe Soften Edges<br />

Otworzy sie okno dialogowe Soften Edges<br />

(rys. 1.64). Parametr Distance okresla<br />

grubosc miekkiej krawedzi. Parametr<br />

Number of steps ma wplyw na plynnosc<br />

przeksztalcenia ksztaltu – od kryjacego do<br />

prze zroczystego. Parametr Direction okresla<br />

kierunek, w którym bedzie postepowac<br />

zmiekczanie krawedzi.<br />

10. W polu Distance wprowadz wartosc<br />

w pikselach, a nastepnie ustal wartosc<br />

parametru Number of steps i zaznacz opcje<br />

Expand dla parametru Direction. Wszystkie<br />

krawedzie wokól twojego ksztaltu stana sie<br />

mieksze. Jako ze caly ksztalt troche sie<br />

powiekszyl, jednoczesnie zmniejsza sie<br />

otwór (rys. 1.65).<br />

11. Zablokuj wszystkie trzy warstwy i obejrzyj<br />

efekt maskowania (rys. 1.66).<br />

Rys. 1.65. Zmiekczone krawedzie powiekszaja<br />

sie kosztem „dziury”, umozliwiajacej widzenie<br />

poprzez maske w warstwie maski<br />

Animowanie masek<br />

Rys. 1.66. Miekkie krawedzie nieokraglej<br />

maski, utworzone po wybraniu polecenia<br />

Modify/Shape/Soften Edges<br />

41


Rozdzial 1.<br />

Animowanie masek<br />

Chociaz Flash umozliwia tworzenie wielu<br />

warstw maskowanych pod pojedyncza warstwa<br />

maski, to nie mozesz posiadac wiecej, niz jednej<br />

warstwy maski oddzialujacej na dowolna ilosc<br />

warstw maskowanych (rys. 1.67). W przypadku<br />

tworzenia wielu warstw maski musisz<br />

jednoczesnie kopiowac warstwy maskowane<br />

(rys. 1.68). Pojwia sie pytanie, po co wlasciwie<br />

tworzyc wiecej warstw maski? Wyobraz sobie<br />

animacje, w której dwa reflektory przesuwaja<br />

sie niezaleznie po górnej czesci obrazu<br />

(rys. 1.69). Kazdy z tych reflektorów musi<br />

zostac umieszczony na osobnej warstwie, jesli<br />

chcesz je animowac, tak wiec potrzebujesz<br />

dwóch warstw maski.<br />

W celu utworzenia<br />

wielu warstw maski:<br />

1. Umiesc obraz w warstwie maskowanej.<br />

2. Utwórz pierwsza maske w warstwie maski<br />

powyzej obrazka (rys. 1.70).<br />

3. Skopiuj swój obraz do oddzielnej warstwy<br />

maskowanej, powyzej pierwszej maski.<br />

Ksztalt w warstwie<br />

spotlight 2<br />

Ta warstwa nie funkcjonuje<br />

jako warstwa maski<br />

Rys. 1.67. Warstwy Layer 3 i Layer 2<br />

zdefiniowano jako warstwy maski, ale na<br />

warstwe Layer 1 (maskowana) oddzialuje<br />

tylko warstwa Layer 2<br />

Duplikaty warstw<br />

Rys. 1.68. Obie warstwy Layer 2 i Layer 3<br />

moga oddzialywac na warstwe Layer 1 tylko<br />

po jej skopiowaniu<br />

Pierwsza maska<br />

Druga maska<br />

Rys. 1.69. Dwa niezalezne reflektory<br />

nalozone na obraz, kazdy w osobnej<br />

warstwie maski<br />

Rys. 1.70. Pierwszy z reflektorów to animacja<br />

ruchu w warstwie maski<br />

42


Zlozone projekty<br />

Ksztalt<br />

w warstwie<br />

spotlight 1<br />

Rys. 1.71. Drugi z reflektorów jest animacja<br />

ruchu w drugiej warstwie maski, znajdujacej sie<br />

ponad skopiowana warstwa maskowana<br />

Opcja Show<br />

as Outlines<br />

Kontury<br />

warstwy<br />

spotlight 2<br />

Kontury<br />

warstwy<br />

spotlight 1<br />

Rys. 1.72. Wyswietlanie masek w postaci<br />

konturów pozwala podejrzec skrywany pod nimi<br />

obraz. Zaznacz opcje View layers as outlines<br />

w oknie Layer Properties lub kliknij ikone Show<br />

as Outlines w odpowiedniej warstwie<br />

Rys. 1.73.<br />

Dwa<br />

poruszajace<br />

sie reflektory<br />

utworzone<br />

w obrebie<br />

symbolu<br />

graficznego<br />

4. Utwórz druga maske w innej warstwie<br />

maskowanej, powyzej skopiowanego<br />

obrazka (rys. 1.71). Na kazdy z dwóch<br />

identycznych obrazków oddzialuje jedna<br />

z warstw maski, a zatem tak naprawde na<br />

twój obraz wplywajaca obie maski.<br />

Zwiekszaj ilosc warstw maski, kopiujac<br />

obrazek do nowych warstw maskowanych.<br />

Wskazówki<br />

• Zeby widziec, co odkrywaja twoje maski,<br />

uzyj wypelnienia przezroczystego lub<br />

zaznacz opcje View layers as outlines<br />

w oknie Layer Properties (rys. 1.72).<br />

• We Flashu nie jest mozliwe, zeby wiecej niz<br />

jedna warstwa maski oddzialywala na<br />

warstwe maskowana w tym samym punkcie<br />

na osi czasu, tak wiec musisz kopiowac<br />

warstwy maskowane, jak to opisano<br />

w poprzednim cwiczeniu. Jesli spróbujesz<br />

obejsc problem, tworzac symbol graficzny<br />

w kilku warstwach (rys. 1.73), a nastepnie<br />

umieszczajac klon tego symbolu w warstwie<br />

maski (rys. 1.74), program uzyje tylko<br />

warstwy jako maski (rys. 1.75). Nie inaczej<br />

bedzie w przypadku klonu klipu filmowego<br />

w warstwie maski. Warstwy maski z klonem<br />

klipu filmowego pokazuja jedynie pierwsza<br />

klatke z dolnej warstwy jako maske.<br />

Rys. 1.74. Klon<br />

animowanego<br />

symbolu<br />

graficznego<br />

znajduje sie<br />

w warstwie<br />

maski<br />

Rys. 1.75. Flash<br />

uzywa jako maski<br />

jedynie dolnej<br />

warstwy<br />

animowanego<br />

symbolu graficznego<br />

Animowanie masek<br />

43


Rozdzial 1.<br />

Tworzenie wielu masek pozwala na to, by<br />

kazda z warstw maski oddzialywala w takim<br />

samym stopniu na obrazek i animacje.<br />

W omówionym uprzednio cwiczeniu kazdy<br />

z reflektorów oddzialywal na obraz<br />

niezaleznie jeden od drugiego. Gdybys jednak<br />

chcial, aby – zamiast niezaleznego<br />

funkcjonowania – dzialanie kilku masek<br />

uzupelnialo sie wzajemnie, musisz zagniezdzic<br />

pierwsza maske wewnatrz warstwy<br />

maskowanej.<br />

Zagniezdzanie warstw maski<br />

Utwórz swoja pierwsza maske i warstwy<br />

maskowane w symbolu graficznym<br />

(rys. 1.76). Umieszczenie klonu tego<br />

symbolu w warstwie maskowanej na<br />

glównej osi czasu umozliwi ci utworzenie<br />

drugiej maski, oddzialujacej na klon<br />

(rys. 1.77). Zagniezdzajac symbol graficzny<br />

w warstwie maskowanej, mozesz tworzyc<br />

uzupelniajace sie efekty maskowania.<br />

Animowanie masek<br />

Rys. 1.76. Poruszajace sie pionowe paski<br />

maskuja zdjecie kolarzy. Ta animowana maska<br />

jest zawarta w symbolu graficznym (venetian<br />

blind animation)<br />

Rys. 1.77. Poruszajacy sie reflektor maskuje<br />

klon symbolu venetian blind animation.<br />

W efekcie uzyskuje sie dwie animowane<br />

maski, jednak jako pierwsza jest wstawiana<br />

maska venetian blinds, a dopiero po niej<br />

maska reflektora<br />

44


Praca z wideo<br />

i grafika 3D<br />

2<br />

Czesci skladowe jezyka HTML<br />

W tym rozdziale zaglebimy sie w rozwazania o mozliwosciach wykorzystania w projektach Flasha<br />

mediów tworzonych poza programem. Laczenie cyfrowego wideo lub grafiki 3D z funkcjami<br />

Flasha pozwala jeszcze bardziej rozwinac wymowe twoich dziel przy wykorzystaniu calej<br />

interaktywnosci – zaimplementowanego w programie – jezyka ActionScript, a jednoczesnie<br />

bez krepujacych ograniczen narzedzi rysunkowych. Mozesz np. tworzyc prawdziwie interaktywne<br />

filmy, importujac twoje nagrania wideo do Flasha, a nastepnie dodajac przyciski, dzwieki, grafike<br />

i na koncu eksportujac calosc w pojedynczym pliku typu QuickTime. Inny sposób polega na<br />

wykorzystaniu zaimportowanego wideo jako punktu odniesienia dla twojej, tworzonej we Flashu,<br />

animacji, ewentualnie tez ma calkowitym przeksztalceniu wideo na animacje wektorowa za<br />

pomoca odpowiednich narzedzi edycyjnych programu. Ten ostatni efekt jest czesto spotykany<br />

w animacjach Flasha na stronach internetowych, promujacych najnowsze produkcje teatralne<br />

i muzyczne. Krótkie wideoklipy czlonków zespolu sa importowane do Flasha jako grupa<br />

obrazków bitmapowych, które nastepnie zamienia sie w wektorowe i laczy z innymi grafikami<br />

oraz animacjami odtwarzanymi przy akompaniamencie muzyki.<br />

Podobnie wykorzystanie grafiki 3D moze prawdziwie wzbogacic twoje projekty Flasha. Mimo<br />

ze we Flashu nie jest mozliwe importowanie i wyswietlanie trójwymiarowych modeli, istnieja<br />

dodatkowe aplikacje, które pozwalaja korzystac z modeli w prawdziwej przestrzeni 3D,<br />

z udzialem swiatel i kamer, a potem eksportowac podobne projekty w postaci czytelnych dla<br />

Flasha obrazów wektorowych. Trójwymiarowych obiektów i animacji mozna uzywac we Flashu<br />

jako elementów interfejsu, przycisków, a nawet przewodników.<br />

Praca z wideo i grafika 3D<br />

45


Integracja Flasha i QuickTime<br />

Rozdzial 2.<br />

Integracja Flasha i QuickTime<br />

Mimo iz istnieje wiele popularnych formatów<br />

zapisu cyfrowego wideo – wsród nich<br />

QuickTime, MPEG i AVI – Flash wspiera tylko<br />

jeden z nich, QuickTime firmy Apple. Mozesz<br />

importowac filmy QuickTime do Flasha,<br />

a nastepnie dodawac do nich grafike, animacje<br />

i funkcje interaktywne. Na koniec mozna to<br />

wszystko zapisac w zintegrowanym pliku jako<br />

film QuickTime i odtwarzac w przegladarkach<br />

QuickTime Player.<br />

Sa rózne sposoby pozyskiwania sekwencji<br />

filmowych cyfrowego wideo. Mozesz krecic<br />

swoje wlasne, za pomoca cyfrowej kamery, lub<br />

konwertowac analogowe nagrania do postaci<br />

cyfrowej – za pomoca wspólpracujacych<br />

z komputerami stolów montazowych do<br />

przechwytywania obrazów. Zawsze mozna tez<br />

posluzyc sie juz zdigitalizowanymi klipami<br />

wideo, dostepnymi w komercyjnych pakietach<br />

CD-ROM.<br />

W celu zaimportowania do Flasha filmu<br />

QuickTime:<br />

1. W menu File wybierz Import. Otworzy sie<br />

okno dialogowe Import.<br />

2. Zaznacz plik QuickTime, który chcesz<br />

zaimportowac, i kliknij Open.<br />

Flash importuje plik QuickTime do twojego<br />

dokumentu i umieszcza jego klon<br />

w aktywnej warstwie (rys. 2.1). W bibliotece<br />

program umieszcza odnosnik do filmu<br />

zródlowego. Zauwaz, ze jest wyswietlana<br />

tylko pierwsza klatka filmu QuickTime.<br />

Zeby odtworzyc caly klip filmowy, os czasu<br />

w oknie Flasha musi miec wystarczajaca<br />

ilosc klatek. Po zaimportowaniu jest<br />

widoczna tylko ta czesc filmu, która<br />

odpowiada istniejacej liczbie klatek.<br />

Rys. 2.1. Importowanie filmu QuickTime<br />

powoduje umieszczenie w bibliotece<br />

odnosnika, a na scenie jego klonu,<br />

w warstwie Layer 1<br />

46


Praca z wideo i grafika 3D<br />

Rys. 2.2. Ten film QuickTime trwa 18,4 sekund.<br />

Szybkosc animacji Flasha wynosi 12 klatek na<br />

sekunde. Oznacza to, ze potrzebujesz 221 klatek<br />

do odtworzenia calego filmu (18,4 sekund<br />

pomnozone przez 12 klatek na sekunde). Klatka<br />

nr 221 bedzie zawierac ostatnie ujecie filmu<br />

QuickTime<br />

3. Wstaw taka ilosc klatek, aby mozliwe bylo<br />

odtworzenie calego filmu QuickTime. Zeby<br />

obliczyc, ile ich potrzebujesz, pomnóz<br />

dlugosc filmu (w sekundach) przez predkosc<br />

animacji twojego dokumentu Flasha<br />

(domyslnie 12 klatek na sekunde). Wynik<br />

okresla ilosc klatek, potrzebna na osi czasu<br />

do odtworzenia filmu QuickTime (rys. 2.2).<br />

4. W przypadku dodania wiekszej ilosci klatek,<br />

niz jest to potrzebne, Flash po odtworzeniu<br />

ostatniej klatki zawierajacej obraz wyswietli<br />

w oknie przekreslony prostokat (rys. 2.3).<br />

Zaznacz niepotrzebne, puste klatki i wybierz<br />

Insert/Remove Frames.<br />

Wskazówka<br />

• We Flashu jest mozliwy podglad jedynie<br />

sciezki wideo zaimportowanego pliku; jesli<br />

oryginalny plik QuickTime zawiera równiez<br />

sciezke dzwiekowa, to nie bedziesz mógl jej<br />

odsluchac w programie. Mimo to dzwiek nie<br />

ginie i bedzie slyszalny po opublikowaniu<br />

koncowej animacji Flasha w formacie<br />

QuickTime.<br />

Integracja Flasha i QuickTime<br />

Rys. 2.3. Pojawienie sie przekreslonego<br />

prostokata oznacza, ze film QuickTime dobiegl<br />

konca i nie ma juz wiecej klatek z obrazem<br />

do wyswietlenia<br />

47


Rozdzial 2.<br />

Integracja Flasha i QuickTime<br />

Zarzadzanie plikami QuickTime<br />

Zamiast dolaczania pliku zródlowego<br />

QuickTime do twojego dokumentu, jak<br />

w przypadku bitmap i dzwieków, Flash<br />

umieszcza tylko odnosnik lub sciezke dostepu.<br />

Dzieki temu dokumenty Flasha moga<br />

zachowywac niewielkie rozmiary. Trzeba<br />

jednak pamietac o zachowaniu jednakowej<br />

nazwy i umiejscowienia pliku zródlowego. Jesli<br />

przeniesiesz lub zmienisz nazwe oryginalnego<br />

pliku QuickTime, nowych i istniejacych jego<br />

klonów, w oknie dokumentu ujrzysz pusty<br />

prostokat. Oznacza to, ze program nie potrafi<br />

zlokalizowac pliku zródlowego (rys. 2.4).<br />

W celu<br />

ustawienia nowej sciezki dostepu<br />

dla zaimportowanego filmu QuickTime:<br />

1. Kliknij podwójnie ikone wideo lub okno<br />

podgladu w twojej bibliotece. Inaczej:<br />

zaznacz symbol wideo w bibliotece,<br />

a nastepnie z menu biblioteki Options<br />

wybierz Properties (rys. 2.5). Pojawi sie<br />

okno dialogowe Video Properties,<br />

wskazujac nazwe symbolu i pierwotna<br />

lokalizacje pliku QuickTime (rys. 2.6).<br />

2. Kliknij przycisk Set Path.<br />

3. Wskaz nowa lokalizacje lub zmieniona<br />

nazwe pliku QuickTime, zaznacz ja i kliknij<br />

Open. W oknie Video Properties, obok<br />

okreslenia Path, pojawi sie nowa sciezka<br />

dostepu.<br />

4. Kliknij OK. Teraz program zlokalizuje film<br />

QuickTime, a wybrane przez ciebie wideo<br />

pojawi sie w oknie wyboru.<br />

Wskazówka<br />

• Pole Name w oknie dialogowym Video<br />

Properties nie jest nazwa oryginalnego<br />

pliku QuickTime, lecz nazwa symbolu<br />

w bibliotece. Obydwie te nazwy moga byc<br />

rózne tak dlugo, jak dlugo jest poprawna<br />

sciezka dostepu do pliku QuickTime.<br />

Rys. 2.4. Pusty prostokat na scenie oznacza,<br />

ze Flash nie moze odnalezc oryginalnego<br />

filmu QuickTime, który zaimportowales.<br />

Trzeba zresetowac sciezke dostepu<br />

Rys. 2.5.<br />

W oknie<br />

Library wybierz<br />

Options/Proper<br />

ties w celu<br />

uzyskania<br />

informacji<br />

o zaznaczonym<br />

symbolu<br />

Rys. 2.6. Okno dialogowe Video Properties<br />

informuje o nazwie symbolu i lokalizacji<br />

oryginalnego pliku QuickTime<br />

48


Praca z wideo i grafika 3D<br />

Rys. 2.7. W oknie Library wybierz Options/Edit<br />

with, jesli chcesz posluzyc sie zewnetrzna<br />

aplikacja do edycji pliku QuickTime<br />

Napisy i obramowanie nalozone na film QuickTime<br />

Efekt dymu nalozony<br />

na film QuickTime<br />

Zaimportowany film<br />

QuickTime, umieszczony<br />

w dolnej warstwie<br />

Rys. 2.8. Dodaj grafike i animacje Flasha<br />

do zaimportowanego filmu QuickTime. Powyzszy<br />

przyklad ukazuje dwa animowane napisy, maske<br />

odkrywajaca obramowanie i efekt specjalny dymu<br />

ciagnacego sie za stopa skatera, stworzony za<br />

pomoca automatycznej animacji ksztaltu<br />

Flash pozwala na edycje pierwotnego pliku wideo<br />

QuickTime z wykorzystaniem odtwarzacza<br />

QuickTime Player lub innego edytora cyfrowego<br />

wideo. Zeby jednak móc posluzyc sie<br />

odtwarzaczem QuickTime Player do kopiowania,<br />

wklejania i ponownego zapisywania pliku,<br />

bedziesz musial zakupic – od firmy Apple –<br />

upgrade do wersji Pro tego programu.<br />

W celu dokonania edycji<br />

oryginalnego pliku wideo QuickTime:<br />

1. W oknie Library zaznacz symbol wideo,<br />

który chcialbys edytowac.<br />

2. Otwórz menu Options w oknie Library<br />

i wybierz Edit with QuickTime Player<br />

lub Edit with (rys. 2.7).<br />

Zostanie uruchomiona zewnetrzna aplikacja,<br />

w której oknie otworzy sie plik QuickTime.<br />

3. Dokonaj edycji pliku QuickTime i zapisz go.<br />

4. Powróc do Flasha, usun biezacy klon filmu<br />

QuickTime na scenie, a nastepnie<br />

przeciagnij nowy klon z biblioteki i obejrzyj<br />

zmiany dokonane na twoim wideo. Flash<br />

uzyje nowego pliku QuickTime, który<br />

wczesniej wyedytowales i zapisales.<br />

Kiedy juz zaimportujesz plik QuickTime do<br />

Flasha, mozesz wzbogacac go o dodatkowe,<br />

animowane elementy w rodzaju napisów czy<br />

efektów specjalnych.<br />

W celu nalozenia animacji Flasha<br />

na film QuickTime:<br />

1. Na potrzeby cwiczenia, ustaw rozmiar sceny<br />

zgodnie z rozmiarem zaimportowanego<br />

pliku QuickTime (320×240 pikseli) i umiesc<br />

okno filmu w taki sposób, zeby dokladnie<br />

pokrywal sie z obszarem sceny.<br />

2. Dodajac kolejne warstwy, utwórz<br />

animowane napisy, grafike lub efekty<br />

specjalne. rys. 2.8 pokazuje przyklad<br />

polaczenia kilku animowanych elementów<br />

z zaimportowanym plikiem QuickTime.<br />

Przejrzyj w tym miejscu pliki QuickTime<br />

oraz Flasha, znajdujace sie na dolaczonej<br />

do ksiazki plycie CD-ROM.<br />

Integracja Flasha i QuickTime<br />

49


Rozdzial 2.<br />

Integracja Flasha i QuickTime<br />

3. Po opublikowaniu filmu skomponowanego<br />

we Flashu w postaci pliku QuickTime (patrz<br />

– kolejne cwiczenia), zarówno grafiki<br />

Flasha, jak i film QuickTime beda<br />

odtwarzane jako jedna calosc.<br />

Poprzez dodanie przycisków z przypisanymi<br />

im prostymi funkcjami nawigacyjnymi, masz<br />

mozliwosc utworzenia interfejsu Flasha<br />

zdolnego do kontrolowania zawartosci pliku<br />

QuickTime.<br />

W celu utworzenia interfejsu interaktywnej<br />

kontroli:<br />

1. Utwórz cztery przyciski: odtwarzania,<br />

pauzy, przewijania do konca oraz<br />

przewijania do poczatku.<br />

2. Klony wszystkich utworzonych przycisków<br />

umiesc w nowej warstwie, znajdujacej sie<br />

nad warstwa z plikiem QuickTime (rys. 2.9).<br />

3. Kazdemu z czterech przycisków<br />

przyporzadkuj akcje poprzez zaznaczenie<br />

przycisku, a nastepnie otwarcie panelu<br />

Object Actions (rys. 2.10).<br />

υ Przyciskowi odtwarzania nadaj akcje<br />

play();<br />

υ Przyciskowi pauzy nadaj akcje stop();<br />

υ Przyciskowi przewijania do konca nadaj<br />

akcje gotoAndStop(221);<br />

υ Przyciskowi przewijania do poczatku nadaj<br />

akcje gotoAndStop(1);<br />

Wiecej informacji o panelu Object Actions<br />

znajdziesz w rozdziale 3.<br />

4. Po opublikowaniu twojego filmu Flasha jako<br />

pliku QuickTime (patrz – nastepne<br />

cwiczenie), zaprojektowane przez ciebie<br />

przyciski pozwola ci nawigowac po<br />

poszczególnych fragmentach filmu – i to bez<br />

polegania na standardowych kontrolkach<br />

odtwarzacza (rys. 2.11).<br />

Cztery klony przycisków umieszczone<br />

w warstwie nad filmem QuickTime<br />

Rys. 2.9. Dodaj klony przycisków, zeby<br />

uzytkownicy mogli sterowac twoim filmem<br />

QuickTime. Przyciski sa umieszczone<br />

w oddzielnej warstwie<br />

Kliknij i przytrzymaj, aby<br />

wybrac dowolna akcje<br />

Kliknij raz, aby rozwinac menu Basic<br />

Actions i wybrac odpowiednia akcje<br />

W tym oknie pojawia sie<br />

kod programowy akcji<br />

Rys. 2.10. Przyporzadkuj podstawowe akcje<br />

poleceniu on (release), uzywajac panelu<br />

Object Actions. Wybierz poszczególne akcje,<br />

klikajac ikone plusa lub z menu rozwijanego<br />

Basic Actions<br />

50


Praca z wideo i grafika 3D<br />

Rys. 2.11. Wyeksportowany plik QuickTime<br />

umozliwia ci porzucenie standardowego systemu<br />

kontroli odtwarzania na rzecz zaprojektowanych<br />

przez ciebie przycisków z przypisanymi<br />

im akcjami<br />

Rys. 2.12. Okno dialogowe Export QuickTime<br />

Jesli zamierzasz zintegrowac projekty Flasha<br />

z plikami QuickTime, musisz opublikowac lub<br />

wyeksportowac swój film w postaci filmu<br />

QuickTime. Chociaz mozliwe jest wyswietlanie<br />

filmów QuickTime w srodowisku Flasha,<br />

programowy odtwarzacz nie posiada funkcji<br />

odtwarzania plików QuickTime. Gdybys<br />

próbowal testowac film Flasha, zawierajacy<br />

zaimportowany plik QuickTime, za pomoca<br />

polecenia Control/Test Movie, zobaczysz tylko<br />

grafike Flasha, bez filmu QuickTime.<br />

W celu opublikowania filmu<br />

Flasha w postaci filmu QuickTime:<br />

1. Wybierz File/Export Movie. Pojawi sie<br />

okno dialogowe Export Movie.<br />

2. Okresl nazwe docelowego pliku, a nastepnie<br />

z menu rozwijanego wybierz QuickTime.<br />

Pojawi sie okno dialogowe Export<br />

QuickTime (rys. 2.12).<br />

Mozesz równiez – zamiast wykonywac<br />

dzialania z kroków 1. i 2. – wybrac File/<br />

Publish Settings. W zakladce Formats<br />

zaznacz opcje QuickTime (.mov), a usun<br />

zaznaczenie wszystkich pozostalych. Przejdz<br />

do zakladki QuickTime.<br />

3. W zakladce QuickTime ustaw nastepujace<br />

parametry:<br />

υ Dimensions: umozliwia okreslenie<br />

wysokosci i szerokosci okna (w pikselach).<br />

υ Alpha: kontroluje sposób wyswietlania<br />

elementów Flasha w filmie QuickTime.<br />

Wybierz Copy , aby uczynic scene we<br />

Flashu nieprzezroczysta. Wybierz Alphatransparent,<br />

aby uczynic scene we Flashu<br />

przezroczysta. Wybierz Auto, aby uczynic<br />

scene we Flashu przezroczysta lub<br />

nieprzezroczysta, w zaleznosci od<br />

kolejnosci rozlozenia grafik Flasha i pliku<br />

QuickTime.<br />

υ Layer: kontroluje polozenie sciezki Flasha<br />

w eksportowanym pliku QuickTime. Po<br />

wybraniu Auto uklad bedzie zgodny<br />

z ukladem warstw we Flashu.<br />

Integracja Flasha i QuickTime<br />

51


Rozdzial 2.<br />

Integracja Flasha i QuickTime<br />

υ Streaming Sound: umozliwia konwersje<br />

dowolnego dzwieku Flasha do formatu<br />

sciezki dzwiekowej QuickTime,<br />

z zastosowaniem parametrów kompresji<br />

QuickTime.<br />

υ Controller: wybierajac None, utworzysz<br />

plik QuickTime, pozbawiony<br />

standardowych dla tego formatu kontrolek<br />

odtwarzania. Opcji tej uzywa sie w<br />

przypadku zastosowania oddzielnych<br />

przycisków przygotowanych we Flashu<br />

(rys. 2.13).<br />

υ Playback: zaznacz te opcje, jesli chcesz<br />

kontrolowac sposób odtwarzania filmu.<br />

Unikaj jednak opcji Play every frame,<br />

poniewaz powoduje ona wylaczenie<br />

sciezki dzwiekowej pliku QuickTime.<br />

υ File: wybranie opcji Flatten powoduje<br />

utworzenie pojedynczego pliku<br />

zawierajacego odnosniki do wszystkich<br />

zewnetrznych mediów. Eliminuje to<br />

potrzebe zachowywania pierwotnie<br />

zaimportowanego pliku QuickTime razem<br />

z finalowym, wyeksportowanym plikiem.<br />

Opcja Flatten umozliwia ponadto<br />

utworzenie pliku zgodnego z platformami<br />

MacOS i Windows jednoczesnie.<br />

4. Kliknij OK lub Publish.<br />

Standardowe<br />

przyciski nawigacji<br />

QuickTime<br />

Przyciski nawigacji<br />

przygotowane<br />

we Flashu<br />

Rys. 2.13. Dwa filmy QuickTime,<br />

ze standardowymi kontrolkami odtwarzania<br />

(u dolu) oraz bez nich (u góry)<br />

Nie wszystkie funkcje Flasha dzialaja z filmami QuickTime<br />

Trzeba podkreslic, ze na dzien dzisiejszy<br />

jedynie funkcje Flasha – dostepne w trzeciej<br />

wersji programu – sa zgodne ze srodowiskiem<br />

QuickTime 4. Oznacza to, ze wszystkie<br />

bardziej skomplikowane funkcje interaktywne<br />

Flasha 5 nie zadzialaja poprawnie lub nawet<br />

nie zadzialaja w ogóle, po wyeksportowaniu<br />

projektu w formacie QuickTime.<br />

Co wiecej, niektóre funkcje Flasha – chociaz<br />

wystepowaly juz w wersji 3. lub wczesniejszej<br />

– moga zachowywac sie nieprzewidywalnie,<br />

jesli odtworzy sie je za pomoca QuickTime<br />

Playera. Oto kilka zauwazonych bledów:<br />

υ Akcja getURL przypisywana do ujec<br />

kluczowych nie daje zadnego efektu.<br />

υ Akcja loadMovieNum nie funkcjonuje.<br />

υ Kursor nie zawsze przyjmuje postac<br />

raczki podczas przesuwania go nad<br />

aktywnym obszarem przycisku.<br />

υ Maskowanie filmu QuickTime nie dziala.<br />

Jesli ostateczna postacia twojego dziela ma<br />

byc plik Qu ickTime, powinienes miec na<br />

uwadze powyzsze ograniczenia.<br />

52


Praca z wideo i grafika 3D<br />

Opcja eksportowania filmu (File/Export<br />

Movie) umozliwia wybranie jego koncowego<br />

formatu pomiedzy QuickTime i AVI. Mimo iz<br />

obydwa standardy sa formatami „filmowymi”,<br />

ostateczne rezultaty wybrania jednego lub<br />

drugiego sa rózne.<br />

Format QuickTime umozliwia zintegrowanie<br />

elementów przygotowanych we Flashu z<br />

filmem QuickTime – poprzez umieszczenie<br />

ich na oddzielnej sciezce. Elementy Flasha<br />

zachowuja swoja funkcjonalnosc oraz<br />

informacje wektorowa, sa wiec tym samym<br />

niezalezne od rozdzielczosci.<br />

Eksportowanie pliku w formacie AVI objawia<br />

sie rasteryzacja wszystkich elementów<br />

utworzonych we Flashu i przeksztalceniem ich<br />

w liniowy film, pozbawiony jakiejkolwiek<br />

interaktywnosci. W takim przypadku<br />

wszystkie przyciski staja sie jedynie prostymi<br />

elementami graficznymi w okreslonej<br />

rozdzielczosci (rys. 2.14). Uzyj tej opcji<br />

eksportowania, jesli chcesz stworzyc prosty<br />

film Flasha, niewymagajacy najnowszych<br />

wersji odtwarzacza QuickTime.<br />

QuickTime i AVI<br />

Rys. 2.14. Format QuickTime (u góry)<br />

umieszcza elementy Flasha na osobnej<br />

sciezce, zachowujac wektorowe informacje<br />

o zawartosci pliku. Format AVI (u dolu)<br />

laczy grafike Flasha z obrazem wideo,<br />

w wyniku czego informacje wektorowe<br />

zostaja utracone. Rekompresja oryginalnego<br />

zaimportowanego pliku QuickTime prowadzi<br />

jednoczesnie do pogorszenia jakosci obrazu<br />

Integracja Flasha i QuickTime<br />

53


Rotoskopia<br />

Rozdzial 2.<br />

Rotoskopia<br />

Rotoskopia jest tradycyjna technika<br />

animatorska, polegajaca na przetwarzaniu<br />

prawdziwego filmu w sekwencje animacji.<br />

Nazwa procesu pochodzi od nazwy urzadzenia,<br />

rotoskopu, który wyswietlal film na desce<br />

rysunkowej. Animator mógl wtedy latwo<br />

odrysowac kontury aktora, klatka po klatce,<br />

uzyskujac naturalny obraz ruchu, trudny do<br />

osiagniecia w przypadku rysowania z glowy.<br />

Mozesz posluzyc sie Flashem do importowania<br />

i wyswietlania filmów QuickTime, a nastepnie<br />

siegnac do techniki rotoskopii.<br />

W celu<br />

skopiowania sekwencji ruchu<br />

z filmu QuickTime:<br />

1. Zaimportuj plik QuickTime, a nastepnie<br />

rozszerz listwe czasowa, aby mogla<br />

pomiescic caly film (rys. 2.15).<br />

2. Dodaj nowa warstwe.<br />

3. Zacznij odrysowywac aktorów lub akcje<br />

w nowej warstwie i ujeciu kluczowym 1.,<br />

korzystajac z dowolnego narzedzia<br />

rysunkowego (rys. 2.16).<br />

4. Dodaj puste ujecie kluczowe, wybierajac<br />

Insert/Blank Keyframe. Puste ujecie<br />

kluczowe pojawi sie w klatce 2.<br />

5. Odrysuj aktorów lub akcje w utworzonym<br />

przed chwila pustym ujeciu kluczowym.<br />

Rys. 2.15. Najlepszy do odrysowywania film<br />

QuickTime jest pelen dramatycznej akcji,<br />

z wyraznie oddzielonym od tla pierwszym<br />

planem<br />

Zablokuj warstwe z filmem QuickTime, zeby<br />

zabezpieczyc ja przed przypadkowym przesunieciem<br />

Ten ogólny rysunek cwiczacej na trapezie<br />

akrobatki sporzadzono dzieki narzedziu<br />

Pencil Tool z parametrem Smooth<br />

Rys. 2.16. Przybliz widok obszaru, który<br />

chcialbys przerysowac i uzyj<br />

zaimportowanego pliku QuickTime<br />

jako szablonu<br />

54


Praca z wideo i grafika 3D<br />

Rys. 2.17. Przerysowanie tej akrobatki da<br />

w efekcie warstwe z ujeciami kluczowymi,<br />

zawierajacymi rysunki odzwierciedlajace<br />

sekwencje jej ruchów<br />

6. Kontynuuj proces dodawania pustych ujec<br />

kluczowych i odrysowywania, dopóki<br />

sekwencja nie bedzie kompletna (rys. 2.17).<br />

7. Usun warstwe zawierajaca film QuickTime,<br />

zeby obejrzec odrysowana animacje<br />

(rys. 2.18). W tym przykladzie uzyskujemy<br />

ostatecznie bardzo szkicowy obraz akcji,<br />

jednakze sam mozesz odwzorowac znacznie<br />

wiecej szczególów, w zaleznosci od<br />

pozadanego efektu koncowego.<br />

Wskazówka<br />

• Jesli chcesz miec bardziej przejrzysty<br />

podglad filmu QuickTime, który<br />

przerysowujesz, uzyj opcji Show Layers<br />

as Outlines w aktywnej warstwie,<br />

ewentualnie wykorzystaj pólprzezroczysty<br />

kolor do rysowania.<br />

Rotoskopia<br />

Rys. 2.18. Kiedy bedziesz odtwarzal<br />

przerysowana animacje, zwróc uwage na<br />

naturalnosc ruchów, nawet jesli sam rysunek<br />

jest malo dokladny<br />

55


Rozdzial 2.<br />

Rotoskopia<br />

Niekiedy film QuickTime, który chcialbys<br />

odrysowac, zawiera zbyt wiele klatek, co czyni<br />

proces przerysowywania nudnym, a sama<br />

animacje nawet zbyt plynna. Mozesz<br />

zredukowac ilosc klatek filmu QuickTime na<br />

listwie czasowej Flasha – poprzez ograniczenie<br />

liczby klatek odtwarzanych w ciagu sekundy.<br />

W celu<br />

zmniejszenia liczby dostepnych klatek:<br />

1. Wybierz Modify/Movie, ewentualnie kliknij<br />

podwójnie pole Frame Rate ponizej listwy<br />

czasowej (rys. 2.19).<br />

2. Pojawi sie okno dialogowe Movie<br />

Properties. W polu Frame Rate wpisz 6,<br />

a nastepnie kliknij OK (rys. 2.20).<br />

3. Teraz film QuickTime bedzie liczyl dwa<br />

razy mniej klatek niz poprzednio (rys. 2.21).<br />

Zamkniecie tej samej dlugosci filmu w<br />

mniejszej ilosci klatek odbije sie na jego<br />

plynnosci, ale jednoczesnie bedziesz mial<br />

mniej do rysowania.<br />

Wskaznik Frame Rate<br />

Rys. 2.19. Wskaznik Frame Rate pokazuje<br />

wartosc 12.0 fps (klatek na sekunde). Kliknij<br />

wskaznik dwukrotnie, a otworzy sie okno<br />

Movie Properties<br />

Rys. 2.20. Okno dialogowe Movie Properties<br />

z widoczna zmniejszona wartoscia<br />

wskaznika fps<br />

Rys. 2.21. Przy ustawieniu 12.0 fps (po lewej), sekwencja ruchu akrobatki<br />

konczy sie na klatce 78. Po ograniczeniu wartosci fps do 6.0 (po prawej),<br />

ten sam punkt koncowy animacji znajduje sie w klatce 39<br />

56


Praca z wideo i grafika 3D<br />

Rys. 2.22. Ustawienie parametru Frame Rate na<br />

wartosc 8.0 fps i wykorzystanie tylko 14 klatek<br />

ogranicza liczbe eksportowanych bitmap<br />

Symulowanie wideo<br />

Poniewaz Flash nie potrafi wyswietlac filmów<br />

QuickTime w swojej wewnetrznej przegladarce,<br />

dla symulowania efektu wideo konieczne jest<br />

skorzystanie z sekwencji obrazów<br />

bitmapowych, przy czym kazdy jest<br />

umieszczony w osobnym ujeciu kluczowym.<br />

W zasadzie chodzi o utworzenie animacji klatka<br />

po klatce z uzyciem bitmap. Chociaz proces taki<br />

jest pracochlonny i raczej niezbyt nowoczesny,<br />

to efekty moga zadziwic. Gdy pracujesz<br />

z sekwencjami bitmap od poczatku do konca<br />

we Flashu, twojej kreatywnosci nie hamuje<br />

ograniczona funkcjonalnosc przegladarki<br />

QuickTime Player. Masz pelny dostep do<br />

interaktywnych narzedzi Flasha. Mozesz<br />

maksymalnie wykorzystac narzedzia do<br />

rysowania i tworzenia animacji, które przydaja<br />

sie np. do przeksztalcania bitmap w ksztalty<br />

wektorowe (przez odrysowywanie). Wszystko<br />

to pomaga zachowac minimalny rozmiar pliku<br />

i skalowanie – niezalezne od rozdzielczosci<br />

obrazu.<br />

W celu<br />

przeksztalcenia filmu QuickTime<br />

w animowana sekwencje bitmap:<br />

1. Zaimportuj plik QuickTime.<br />

2. Zwróc uwage, ze importujesz dokladnie tyle<br />

obrazów, ile klatek liczy film, tak wiec<br />

postaraj sie nie przesadzic z rozmiarem<br />

animacji. Zmniejsz odpowiednio predkosc<br />

odtwarzania klatek (Frame Rate), dzieki<br />

czemu ograniczysz ogólna ilosc obrazów<br />

i jednoczesnie ulatwisz sobie zarzadzanie<br />

nimi (rys. 2.22).<br />

3. Ustaw rozmiar sceny w taki sposób, aby<br />

odpowiadal wielkosci okna<br />

zaimportowanego filmu QuickTime.<br />

4. Wybierz File/Export Movie. Pojawi sie<br />

okno dialogowe Export Movie, pozwalajace<br />

wybrac format pliku i folder docelowy.<br />

Symulowanie wideo<br />

57


Rozdzial 2.<br />

5. Utwórz nowy folder, klikajac ikone Utwórz<br />

nowy folder, wpisz nazwe dla<br />

eksportowanych plików z obrazami,<br />

a nastepnie z menu rozwijanego Zapisz jako<br />

typ wybierz Bitmap Sequence (rys. 2.23).<br />

Na koniec kliknij Zapisz. Flash<br />

wyeksportuje serie obrazów bitmapowych,<br />

dodajac jednoczesnie do nazw plików<br />

rozszerzenie w postaci numerka. To<br />

umozliwia pogrupowanie obrazów ze soba.<br />

Symulowanie wideo<br />

Rys. 2.23. Okno dialogowe Export Movie.<br />

Menu rozwijane Zapisz jako typ pozwala<br />

wybrac docelowy format pliku<br />

58


Praca z wideo i grafika 3D<br />

Rys. 2.24. Okno dialogowe z zapytaniem o import<br />

calej sekwencji. Kliknij Yes<br />

Kazde ujecie kluczowe<br />

zawiera jedna bitmape<br />

Czternascie pojedynczych<br />

bitmap jest zapisywanych<br />

w bibliotece<br />

6. Otwórz nowy plik Flasha i zaimportuj<br />

pierwszy z utworzonych przed momentem<br />

obrazów. Program rozpozna, ze ten pierwszy<br />

obrazek jest czescia sekwencji (rys. 2.24),<br />

a nastepnie zapyta, czy chcesz dokonac<br />

importu calej sekwencji. Kliknij Yes. Kazda<br />

z bit map zostanie umieszczona w nowym<br />

ujeciu kluczowym i zgrupowana<br />

z pozostalymi w aktywnej warstwie<br />

(rys. 2.25).<br />

Wskazówka<br />

• Jesli chcialbys wykorzystac pliki filmowe<br />

w innych formatach (AVI lub MPEG),<br />

musisz posluzyc sie zewnetrzna aplikacja<br />

do wygenerowania sekwencji bitmap,<br />

ewentualnie aplikacja, która dokona<br />

konwersji tych plików do formatu<br />

QuickTime.<br />

Rys. 2.25. Po tym, jak juz zaimportujesz serie<br />

bitmap, kazdy obraz jest umieszczany<br />

w oddzielnym ujeciu kluczowym i automatycznie<br />

zapisywany w bibliotece<br />

Symulowanie wideo<br />

59


Rozdzial 2.<br />

Kiedy do symulowania wideo uzywa sie<br />

sekwencji bitmap, rozmiar pliku znaczaco<br />

wzrasta, osiagajac czasem wielkosc, która jest<br />

nie do przyjecia. Jednym ze sposobów<br />

poradzenie sobie z tym problemem jest<br />

konwersja bitmap na rysunki wektorowe za<br />

pomoca polecenia Trace Bitmap. Dodatkowo<br />

uzycie tej techniki moze wzbogacic nasza prace<br />

o ciekawe efekty wizualne. Przykladowo,<br />

zmniejszajac liczbe kolorów, osiagniesz efekt<br />

posteryzacji, a usuwajac – po dokonaniu<br />

konwersji – elementy tla, uzyskasz podnoszacy<br />

dramaturgie efekt sylwetkowy.<br />

Rys. 2.26. Okno dialogowe Trace Bitmap<br />

Symulowanie wideo<br />

W celu dokonania konwersji bitmap<br />

w uproszczone rysunki wektorowe:<br />

1. Zaznacz pierwsze na scenie ujecie kluczowe<br />

lub bitmape.<br />

2. Wybierz Modify/Trace Bitmap. Otworzy<br />

sie okno dialogowe Trace Bitmap<br />

(rys. 2.26). Parametry okna decyduja<br />

o dokladnosci konwersji obrazu<br />

bitmapowego.<br />

υ Color Threshold (wartosc z przedzialu 1<br />

do 200): kontroluje poziom tolerancji<br />

w czasie ustalania, czy sasiadujace piksele<br />

sa w jednakowym, czy róznym kolorze.<br />

Flash porównuje wartosci RGB dwóch<br />

sasiadujacych obszarów i jesli róznica jest<br />

mniejsza niz wartosc parametru, to<br />

program przyjmuje, ze maja jednakowa<br />

barwe. Oznacza to, ze im mniejsza wartosc<br />

parametru Color Threshold, tym wiecej<br />

kolorów zostanie prawidlowo<br />

zreprodukowanych.<br />

υ Minimum Area (wartosc z przedzialu 1<br />

do 1000): kontroluje wielkosc obszaru,<br />

dla którego Flash dokona przeliczenia<br />

kolorów.<br />

υ Curve Fit: kontroluje gladkosc konturów<br />

wokól ksztaltów.<br />

υ Corner Threshold: decyduje o tym, czy<br />

rogi beda gladkie, czy kanciaste.<br />

60


Praca z wideo i grafika 3D<br />

Rys. 2.27. Taki efekt jest rezultatem ustawienia<br />

parametrów Color Threshold na 150 oraz<br />

Minimum Area na 50<br />

Zaokraglony prostokat maskuje przeksztalcone bitmapy<br />

3. Po przekonwertowaniu pierwszego obrazu,<br />

zaznacz bitmape w kolejnym ujeciu<br />

kluczowym i uzyj polecenia Modify/Trace<br />

Bitmap. Powtarzaj te czynnosc do<br />

momentu, kiedy cala sekwencja obrazów<br />

zostanie przeksztalcona (rys. 2.27).<br />

4. Jesli trzeba, dodawaj, usuwaj lub zmieniaj<br />

ksztalt i kolory w poszczególnych ujeciach<br />

kluczowych, korzystajac przy tym z narzedzi<br />

zaznaczenia i rysowania, dostepnych<br />

w przyborniku (rys. 2.28).<br />

Zajrzyj na plyte CD dolaczona do ksiazki –<br />

znajdziesz tam gotowy plik do powyzszego<br />

cwiczenia, z przykladowa modyfikacja tego<br />

krótkiego wideo.<br />

Wskazówki<br />

• Polecenie Trace Bitmap z menu Modify nie<br />

posiada domyslnego skrótu klawiaturowego,<br />

ale mozesz stworzyc wlasny, wybierajac<br />

Edit/Keyboard Shortcuts. Uzywajac skrótu<br />

klawiaturowego dla tego polecenia oraz<br />

klawisza >, znacznie ulatwis z sobie proces<br />

konwersji dlugiej sekwencji bitmap.<br />

• Uwazaj, zeby nie ustalic zbyt niskiej<br />

wartosci parametru Color Threshold.<br />

Bitmapa zawierajaca niepotrzebnie duzo<br />

ksztaltów nie bedzie plynnie animowana,<br />

a dodatkowo wielkosc pliku zwiekszy sie,<br />

czesto przekraczajac nawet rozmiar samej<br />

bitmapy.<br />

Symulowanie wideo<br />

Animowane, przypadkowe<br />

linie symuluja rysy<br />

na tasmie filmowej<br />

Tlo w przeksztalconych<br />

bitmapach zostalo<br />

usuniete<br />

Rys. 2.28. Usuniecie tla z kazdej<br />

przekonwertowanej bitmapy umozliwia<br />

eksperymentowanie z bardziej dynamicznym,<br />

animowanym drugim planem. W powyzszym<br />

przykladzie zamaskowano serie przeksztalconych<br />

obrazów i dodano dzwiek, a takze inne<br />

animowane elementy<br />

61


Rozdzial 2.<br />

Symulowanie wideo<br />

Sekwencje przeksztalconych bitmap, mimo<br />

iz maja postac ksztaltów wektorowych, ciagle<br />

potrafia zajmowac duzo miejsca, dlatego nalezy<br />

zastanowic sie nad tym, jak je maksymalnie<br />

wyzyskac.<br />

Skopiuj ujecia kluczowe zawierajace<br />

przekonwertowana do postaci wektorowej<br />

animacje i wklej je do symbolu graficznego<br />

lub symbolu klipu filmowego. Umozliwia to<br />

traktowanie ich jako pojedynczych klonów,<br />

a co za tym idzie – latwiej nimi manipulowac.<br />

Ponizej wymieniono kilka sposobów na to,<br />

by jeden symbol przekonwertowanej animacji<br />

przypominal kilka róznych klipów (rys. 2.29).<br />

Sposoby wykorzystania zwektoryzowanej<br />

animacji:<br />

1. Staraj sie, aby twoje symulowane sekwencje<br />

wideo byly krótkie i mialy niewielkie<br />

rozmiary. Zwykle potrzeba jedynie kilku<br />

klatek (mniej niz dziesiec) do zasugerowania<br />

okreslonego ruchu, kiedy skupiasz uwage na<br />

najbardziej dramatycznej akcji<br />

wykonywanej przez glówna postac.<br />

lub<br />

Modyfikuj klony, zmieniajac parametry<br />

jasnosci odcienia czy przezroczystosci.<br />

Powtórzenia grafik w róznych wariacjach<br />

kolorystycznych przywodza na mysl<br />

techniki malarskie Warhola, jednoczesnie<br />

pozwalajac zaoszczedzic na wielkosci pliku.<br />

lub<br />

Przeksztalcaj klony, odbijajac je w pionie<br />

lub poziomie, obracajac i skalujac.<br />

Powiekszona animacja, przypominajaca<br />

lustrzane odbicie, moze posluzyc za<br />

kontrastujace tlo.<br />

lub<br />

Twórz animacje ruchu klonów. Dodaj scenie<br />

wyrazu, wprawiajac w ruch cos, co juz sie<br />

porusza. Na przyklad, animowanie klonów<br />

sekwencji przedstawiajacej akrobate<br />

skaczacego do wody moze dac w efekcie<br />

kilka odmian takiego skoku.<br />

Pierwszy klon symbolu<br />

zwektoryzowanego klipu wideo<br />

Drugi klon tego samego symbolu, odbity,<br />

powiekszony i rozpoczynajacy sie w innym ujeciu<br />

Rys. 2.29. Zwektoryzowany pojedynczy klip<br />

wideo, przedstawiajacy krecacego plytami<br />

didzeja, zreprodukowano na scenie<br />

dwukrotnie. Klon w tle odbito w poziomie,<br />

powiekszono i uczyniono przezroczystym.<br />

Klon na pierwszym planie przesuwa sie<br />

wzdluz sceny, a w pewnym momencie zostaje<br />

zapetlony. Okregi sa dodatkowymi<br />

animowanymi elementami<br />

lub<br />

Niektóre klony moga pozostawac<br />

statyczne w kilku klatkach, podczas gdy<br />

z innych mozna przygotowac zapetlone<br />

animacje, zaczynajace sie w róznych<br />

klatkach. W panelu Instance masz do<br />

wyboru trzy opcje (Loop, Play Once<br />

i Single Frame) – przyporzadkuj kazda<br />

z nich innemu klonowi na scenie, dzieki<br />

czemu unikniesz zsynchronizowania ich<br />

ze soba.<br />

62


Praca z wideo i grafika 3D<br />

Rys. 2.30. Seria obrazów wektorowych<br />

zaimportowanych do Flasha. Trójwymiarowy<br />

model wyrenderowany jako obraz wektorowy<br />

w Swift 3D (po lewej) oraz animacja<br />

wyrenderowana jako seria obrazów wektorowych<br />

w programie Vecta 3D (po prawej)<br />

Symulowanie grafiki 3D<br />

Podobnie jak w przypadku odtwarzania wideo,<br />

grafika 3D we Flashu tylko „udaje” prawdziwa<br />

przestrzen, jako ze w programie nie<br />

zaimplementowano wsparcia dla korzystania<br />

z trójwymiarowych modeli. Jednak z pomoca<br />

innych aplikacji, a takze przy odrobinie<br />

cierpliwosci i pomyslowosci, mozna<br />

przygotowac wektorowe wersje mo deli 3D<br />

i stworzyc iluzje ruchu w przestrzeni.<br />

Przydatne programy<br />

Istnieja dwa rodzaje aplikacji pozwalajace tworzyc<br />

trójwymiarowe obrazy dla Flasha. Pierwsza grupe<br />

reprezentuja programy w rodzaju Illustrate!<br />

Davida Goulda czy Vecta3D firmy IdeaWorks3D.<br />

Obydwa sa pluginami do programu 3D Studio<br />

Max, standardu w dziedzinie aplikacji do<br />

modelowania 3D, renderingu i animacji. Zarówno<br />

Illustrate!, jak i Vecta3D eksportuja utworzone<br />

w 3D Studio Max obrazy w postaci wektorowej,<br />

zrozumialej dla Flasha. Przygotowane w ten<br />

sposób obrazy przypominaja troche historyjki<br />

obrazkowe rysowane na tradycyjnym papierze.<br />

Drugi rodzaj programów, jak Swift 3D firmy<br />

Electric Rain Inc. lub Dimensions firmy Adobe<br />

Systems Inc., to samodzielne aplikacje, ze<br />

specjalnymi narzedziami do generowania modeli<br />

3D i animacji. Swift 3D umozliwia import<br />

modeli oraz tworzenie ich za pomoca obiektów<br />

podstawowych i wyciagania tekstu. Adobe<br />

Dimensions nie pozwala importowac gotowych<br />

modeli, ale za to ma wlasne narzedzia do<br />

wyciagania tekstu, obracania obiektów<br />

i mapowania obrazów na obiektach. Ponadto<br />

równiez Vecta 3D jest dostepna w formie<br />

samodzielnego programu, z funkcjami<br />

importowania modeli 3D i wyciagania tekstu.<br />

Obydwa rodzaje aplikacji generuja pojedyncze<br />

obrazy wektorowe lub serie takich obrazów, które<br />

mozna potem latwo przeniesc do Flasha i umiescic<br />

w oddzielnych ujeciach kluczowych (rys. 2.30).<br />

W zasadzie wiec caly proces nie rózni sie zbytnio<br />

od importowania sekwencji bitmap symulujacych<br />

wideo, z ta róznica, ze konwersji do postaci<br />

wektorowej dokonano wczesniej.<br />

Symulowanie grafiki 3D<br />

63


Rozdzial 2.<br />

Symulowanie grafiki 3D<br />

W celu<br />

wykonania animowanego napisu 3D<br />

z wykorzystaniem Flasha<br />

i zewnetrznej aplikacji:<br />

1. Za pomoca odpowiedniego programu 3D<br />

utwórz wyciagniety tekst i wyeksportuj<br />

w postaci pliku wektorowego<br />

akceptowanego przez Flasha (rys. 2.31).<br />

2. Przekonwertuj kazda z liter w symbol<br />

graficzny, a nastepnie wykonaj animacje<br />

ruchu kazdego z klonów, aby zakonczyc<br />

proces.<br />

Jesli nie potrzeba ci zlozonych modeli 3D,<br />

a jedynie prostego obiektu, sprawiajacego<br />

wrazenie przemieszczania sie w przestrzeni,<br />

skorzystaj z dostepnych we Flashu narzedzi<br />

do animacji (klatka po klatce, automatyczna<br />

animacja ruchu i ksztaltu) do uzyskania<br />

pozadanego efektu. Ostatecznie otrzymasz<br />

znacznie mniejszy plik i szybszy czas<br />

przenoszenia pliku.<br />

Upraszczajac ruch obiektu, mozesz rozlozyc<br />

jego przestrzennosc na plaskie, pojedyncze<br />

powierzchnie, które potem mozna animowac.<br />

Przykladowo, prosty, obracajacy sie szescian<br />

sklada sie z prostokatów cyklicznie<br />

zmieniajacych swój ksztalt. Proces<br />

odwzorowania tej sekwencji zamyka sie<br />

w zdefiniowaniu ujec kluczowych.<br />

W celu utworzenia obiektu obracajacego sie<br />

w przestrzeni:<br />

1. Przygotuj w ujeciu kluczowym 10. szescian<br />

w postaci dwu zlaczonych, wypelnionych<br />

prostokatów, z widoczna na srodku<br />

krawedzia (rys. 2.32).<br />

W zachowaniu perspektywy pomoze ci<br />

„szablon” z szescianu przygotowanego<br />

w programie 3D i zaimportowanego<br />

do Flasha.<br />

Obraz wektorowy<br />

dociera<br />

do Flasha<br />

w postaci grup<br />

Kazda z grup jest<br />

konwertowana do<br />

postaci symbolu<br />

i umieszczana<br />

w oddzielnej<br />

warstwie, dajac<br />

mozliwosc<br />

animowania kazdej<br />

z liter<br />

Siatka<br />

modelu<br />

w Adobe<br />

Dimensions<br />

Rys. 2.31. Adobe Dimensions generuje<br />

wyciagniety tekst (u góry). Flash importuje<br />

pocieniowany obraz w postaci grup<br />

(w srodku), które mozna animowac<br />

w srodowisku programu (u dolu)<br />

Rys. 2.32. Szescian jest tu przedstawiony<br />

w postaci dwóch polaczonych prostokatów<br />

64


Praca z wideo i grafika 3D<br />

Szescian bedzie sie obracal lewoskretnie, wiec<br />

powierzchnia najpierw jest widoczna jako duza<br />

(ujecie kluczowe 1.), by potem przyjac postac<br />

niewielkiego wycinka (ujecie kluczowe 20.)<br />

Rys. 2.33. Ustaw jedna pozycje obracajacego sie<br />

szescianu w ujeciu kluczowym 1<br />

Ta powierzchnia zaczyna byc widoczna<br />

w ujeciu kluczowym 1. jako maly wycinek<br />

2. Utwórz ujecie kluczowe w klatce 1.,<br />

z prostokatami ukazujacymi wieksza<br />

powierzchnie lewej scianki (rys. 2.33).<br />

3. Utwórz ujecie kluczowe w klatce 20,<br />

z prostokatami ukazujacymi wieksza<br />

powierzchnie prawej scianki (rys. 2.34).<br />

4. Wykonaj animacje ksztaltu dla wszystkich<br />

trzech ujec kluczowych (rys. 2.35).<br />

Wypelnione prostokaty zmieniaja ksztalt,<br />

dajac wrazenie szescianu obracajacego sie<br />

w przestrzeni.<br />

Powyzsza technika ma zastosowanie takze przy<br />

bardziej zlozonych rotacjach, o ile potrafisz<br />

okreslic, jak poszczególne powierzchnie sie<br />

poruszaja i zmieniaja ksztalt. W przypadku<br />

pochylonego szescianu, kiedy to widoczne sa<br />

trzy powierzchnie w miejsce dwóch, trzeba<br />

umiescic te trzy powierzchnie w oddzielnych<br />

warstwach i przygotowac trzy animacje ksztaltu<br />

(rys. 2.36).<br />

Symulowanie grafiki 3D<br />

Rys. 2.34. Ustaw kolejna pozycje obracajacego<br />

sie szescianu w ujeciu kluczowym 20<br />

Górna<br />

powierzchnia<br />

Boczna<br />

powierzchnia<br />

Frontowa<br />

powierzchnia<br />

Rys. 2.35. Automatyczna animacja ksztaltu<br />

pozwala uzyskac plynne przejscia pomiedzy<br />

ksztaltami prostokatów<br />

Rys. 2.36. Powierzchnie szescianu – boczna,<br />

frontowa i górna – umieszczono w osobnych<br />

warstwach dla efektywniejszego animowania ich<br />

ksztaltu. Ujecie kluczowe na koncu umozliwia<br />

znikniecie ksztaltowi z „górnej” warstwy<br />

65


Rozdzial 2.<br />

66


Czesc 2.<br />

Zrozumiec ActionScript<br />

67


Rozdzial 3.<br />

68


Poslugiwanie sie<br />

jezykiem ActionScript<br />

3<br />

Czesci skladowe jezyka HTML<br />

ActionScript jest nazwa wewnetrznego jezyka skryptowego Flasha, uzywanego do projektowania<br />

skryptów przypisywanych pózniej do klipów filmowych, przycisków i ujec kluczowych. Jezyk ten<br />

mozna wykorzystac do tworzenia zlozonych narzedzi do nawigacji w projektach filmowych<br />

Flasha, przycisków reagujacych na wskaznik myszy, a nawet do tworzenia gier zrecznosciowych<br />

czy efektownych witryn reklamowych o dynamicznie aktualizowanej zawartosci. W tym rozdziale<br />

nauczysz sie poslugiwac jezykiem ActionScript do tworzenia interaktywnych funkcji na potrzeby<br />

twoich projektów. Przypomina to troche nauke gramatyki jezyka obcego: najpierw poznajesz<br />

zasady laczenia rzeczowników z czasownikami oraz dodawania przymiotników i przyimków;<br />

potem rozszerzasz swoje umiejetnosci komunikacji i poslugiwania sie mowa, przyswajajac kolejne<br />

zasób leksykalny. Rozdzial niniejszy pomoze ci opanowac podstawy ActionScript i wyposazy<br />

w znajomosc slownictwa opisujacego akcje Flasha.<br />

Jesli poslugiwales sie juz jezykiem JavaScript, to z pewnoscia zauwazysz pewne podobienstwa<br />

pomiedzy tymi dwoma jezykami. W zasadzie ActionScript bazuje na jezyku JavaScript, który jest<br />

popularnym, zorientowanym obiektowo jezykiem programowania, uzywanym do projektowania<br />

interaktywnych witryn internetowych. Jednak skrypty JavaScript z zalozenia kontroluja prace<br />

przegladarek, natomiast ActionScript wplywa na zachowanie poszczególnych elementów filmu<br />

Flasha, przez co istnieje kilka róznic pomiedzy tymi jezykami. Jednak podstawowa skladnia,<br />

sposób zarzadzania obiektami i funkcjami w obu przypadkach pozostaja jednakowe.<br />

Nawet jesli nigdy jeszcze nie zetknales sie z jezykiem JavaScript, sledzac ten rozdzial, przekonasz<br />

sie, ze programowanie we Flashu jest latwe. Zapoznasz sie z logika obiektów, a takze dowiesz sie,<br />

jak paleta akcji pomaga zautomatyzowac proces programowania, dajac ci wieksza elastycznosc<br />

w tworzeniu coraz bardziej zaawansowanych skryptów.<br />

Poslugiwanie sie jezykiem ActionScript<br />

69


Obiekty i klasy<br />

Rozdzial 3.<br />

Obiekty i klasy<br />

Sercem jezyka ActionScript sa obiekty oraz<br />

klasy. Obiektami moga byc dowolne typy<br />

danych, np. dzwiek, klip filmowy, lancuch<br />

znaków lub wartosci liczbowe, które tworzysz<br />

we Flashu i wykorzystujesz do kontrolowania<br />

filmu. Dla przykladu, obiekt daty jest uzywany<br />

do podawania informacji o czasie i dacie,<br />

a obiekt tablicowy sluzy do manipulowania<br />

danymi zgromadzonymi w okreslonym<br />

porzadku. Wszystkie tworzone przez ciebie<br />

obiekty naleza do wiekszej grupy zbiorczej,<br />

zwanej klasa. We Flashu zaimplementowano<br />

szereg klas mozliwych do wykorzystania<br />

w twoich filmach. Owe predefiniowane klasy<br />

takze okreslane sa mianem obiektów, jednak<br />

maja nazwy pisane wielka litera. Na przyklad<br />

obiekt Kolor jest klasa, na podstawie której<br />

tworzy sie róznokolorowe obiekty. Nauka<br />

programowania w ActionScript sprowadza sie<br />

do zrozumienia dzialania poszczególnych<br />

obiektów oraz ich klas, a nastepnie<br />

wykorzystania ich do wzajemnej interakcji<br />

oraz interakcji z uzytkownikiem.<br />

W realnym swiecie znane nam sa takie obiekty,<br />

jak krowa, drzewo czy osoba (rys. 3.1). Obiekty<br />

we Flashu moga przyjmowac rózne postaci – od<br />

widzialnych przedmiotów, w rodzaju wirujacej<br />

kuli, do bardziej abstrakcyjnych koncepcji, np.<br />

daty, fragmentów danych lub odczytywania<br />

informacji wprowadzanych z klawiatury.<br />

Niezaleznie jednak od ich materialnosci czy<br />

abstrakcyjnosci, obiekty Flasha sa<br />

wszechstronne, poniewaz kiedy juz raz je<br />

utworzysz, mozna uzywac ich w róznych<br />

kontekstach. Zanim jednak bedziesz mógl uzyc<br />

obiektów, musisz nauczyc sie je identyfikowac,<br />

a robi sie to, po prostu nazywajac je – jak<br />

w realnym swiecie. Zalózmy wiec, ze masz<br />

przed soba troje ludzi: Adama, Betty i Zeke’a.<br />

Wszyscy oni stanowia obiekty, które odrózniaja<br />

imiona. Wszyscy tez naleza do jednej wiekszej<br />

grupy znanej jako ludzie. Mozna powiedziec,<br />

ze Adam, Betty i Zeke sa klonami klasy ludzi<br />

(rys. 3.2). W jezyku ActionScript, klony oraz<br />

obiekty sa synonimami i nazwy te sa uzywane<br />

w tej ksiazce zamiennie.<br />

Rys. 3.1. Obiektami w realnym swiecie moga<br />

byc np. krowa, drzewo czy osoba<br />

Klasa ludzi<br />

Adam Betty Zeke<br />

Rys. 3.2. Adam, Betty i Zeke to trzy obiekty<br />

klasy ludzi. Oczywiscie we Flashu nie ma<br />

takiej klasy (co nie znaczy, ze nie mozna jej<br />

stworzyc), jednak ta analogia pozwala pojac<br />

znaczenie obiektów<br />

70


Poslugiwanie sie jezykiem ActionScript<br />

Adam<br />

Wzrost = 69<br />

Waga = 140<br />

Plec = M<br />

Kolor wlosów<br />

= czarne<br />

Rys. 3.3. Adam, Betty i Zeke sa obiektami<br />

ludzkimi z róznymi wlasciwosciami. Wlasciwosci<br />

odrózniaja obiekty tej samej klasy<br />

Wskazówka<br />

Betty<br />

Wzrost = 68<br />

Waga = 135<br />

Plec = K<br />

Kolor wlosów<br />

= czarne<br />

Klasa ludzi<br />

Wzrost<br />

Waga<br />

Plec<br />

Kolor wlosów<br />

Zeke<br />

Wzrost = 66<br />

Waga = 188<br />

Plec = M<br />

Kolor wlosów =<br />

brazowe<br />

Wlasciwosci<br />

• Pomysl o obiektach jak o rzeczownikach,<br />

o wlasciwosciach jak o przymiotnikach<br />

i o metodach jak o czasownikach – to<br />

ulatwia sprawe. Wlasciwosci opisuja<br />

obiekty, podczas gdy metody to akcje,<br />

które obiekty wykonuja.<br />

Metody i wlasciwosci<br />

Kazdy obiekt w danej klasie (np. Zeke z klasy<br />

ludzie) wyróznia sposród innych obiektów w tej<br />

klasie nie tylko jego nazwa. Kazdy czlowiek jest<br />

inny pod wzgledem wielu cech, które czynia go<br />

niepowtarzalnym, np. wzrostu, wagi, plci czy<br />

koloru wlosów. W obiektowo zorientowanych<br />

jezykach programowania mówimy, ze obiekty<br />

i klasy maja wlasciwosci. Wzrost, waga plec<br />

i kolor wlosów, sa wlasciwosciami klasy ludzi<br />

(rys. 3.3). We Flashu, kazda z predefiniowanych<br />

klas posiada swój zestaw wlasciwosci<br />

pozwalajacych zindywidualizowac<br />

poszczególne obiekty. I tak klasa String ma<br />

tylko jedna wlasciwosc, nazywana lenght,<br />

która okresla ilosc znaków zawartych w danym<br />

obiekcie, czyli lancuchu znaków. Klasa<br />

MovieClip (klip filmowy) natomiast ma wiele<br />

wlasciwosci, np. _height (wysokosc), _width<br />

(szerokosc) i _rotation (kat obrotu), które<br />

wskazuja na wymiary i orientacje konkretnego<br />

obiektu-klipu filmowego. Definiujac i<br />

zmieniajac wlasciwosci obiektów, kontrolujesz<br />

ich postac .<br />

Ponadto ludzie moga wykonywac rózne<br />

czynnosci. Zeke moze biegac, spac lub<br />

rozmawiac. W zargonie obiektowym mówimy,<br />

ze obiekt posiada metody, które na niego<br />

wplywaja . Kazda z predefiniowanych klas ma<br />

swój wlasny zestaw metod. Przykladowo, klasa<br />

Sound (dzwiek) posiada metode setVolume,<br />

pozwalajaca ustalic poziom dzwieku, a klasa<br />

Date (data) metode getDay, która zwraca dzien<br />

tygodnia. Kiedy uzywamy metody obiektu,<br />

mówimy, ze ta metoda zostala wywolana,<br />

ewentualnie obiekt wywoluje metode.<br />

Zrozumienie zwiazków pomiedzy obiektami,<br />

klasami, wlasciwosciami i metodami jest wazne.<br />

Definiowanie obiektów, tak aby metody<br />

i wlasciwosci jednego oddzialywaly na metody<br />

i wlasciwosci drugiego, jest sposobem, w jaki<br />

we Flashu tworzymy interaktywne elementy .<br />

Kluczem do rozwijania zasobu slownictwa<br />

jezyka ActionScript jest poznanie wlasciwosci<br />

i metod poszczególnych klas.<br />

Metody i wlasciwosci<br />

71


Rozdzial 3.<br />

Pisanie wedlug regul skladni<br />

Pisanie wedlug regul skladni<br />

Podobnie jak w przypadku kazdego innego<br />

jezyka obcego, jesli chcesz ukladac slowa<br />

w zdania, musisz poznac reguly gramatyki.<br />

W jezyku ActionScript tez istnieja okreslone<br />

konwencje, pozwalajace ukladac obiekty,<br />

wlasciwosci i metody w wyrazenia, a te z kolei<br />

w funkcje i skrypty. Poszczególne obiekty,<br />

wlasciwosci i metody laczy sie za pomoca<br />

kropek, opisujac w ten sposób konkretny obiekt<br />

lub proces. Oto przyklad:<br />

Zeke.weight = 188;<br />

Betty.weight = 135;<br />

Pierwsze wyrazenie przyporzadkowuje wartosc<br />

188 wadze (weight) Zeke’a. Drugie wyrazenie<br />

przyporzadkowuje wartosc 135 wadze Betty.<br />

Kropka oddziela nazwe obiektu od wlasciwosci<br />

(weight) (rys. 3.4).<br />

Betty.shirt.color = gray;<br />

To wyrazenie wskazuje, ze obiekt Betty jest<br />

polaczony z obiektem shirt (koszula). Z kolei<br />

obiekt shirt posiada wlasciwosc color (barwa),<br />

której przyporzadkowano wartosc gray (szary).<br />

Zwróc uwage, ze w skladni ActionScript uzywa<br />

sie wielu kropek do ustalania hierarchii<br />

obiektów. Kiedy mamy do czynienia z kilkoma<br />

obiektami polaczonymi w taki sposób, zwykle<br />

latwiej jest czytac wyrazenie od tylu. Mozna<br />

wiec zinterpretowac to tak: „Szary jest kolorem<br />

bluzki Betty”.<br />

Zeke.run ();<br />

To wyrazenie oznacza, ze obiekt Zeke<br />

wywoluje metode run. Nawiasy stojace za<br />

slowem run wskazuja, ze jest to metoda, a nie<br />

wlasciwosc. Mozesz nazywac taka konstrukcje<br />

nastepujaco: rzeczownik-kropka-czasownik<br />

(rys. 3.5). Metody czesto beda posiadaly<br />

argumenty, podawane w nawiasach<br />

i decydujace o sposobie wykonania metody.<br />

Na przyklad:<br />

Zeke.run (fast);<br />

Adam.run (slow);<br />

Waga Betty = 135 Waga Zeke = 188<br />

Rys. 3.4. Hipotetyczna wlasciwosc weight<br />

opisuje Betty i Zeke’a. We Flashu,<br />

wlasciwosci obiektów moga byc ustalane<br />

i modyfikowane za pomoca jezyka<br />

ActionScript<br />

Adam.run ()<br />

Mouse.hide ()<br />

Rys. 3.5. Zastosowanie kropki powoduje,<br />

ze obiekty wywoluja metody. Tak jak<br />

hipotetyczna metoda run moglaby sprawic,<br />

ze obiekt Adam zacznie biegac, tak<br />

prawdziwa metoda Flasha hide(),<br />

zastosowana do obiektu Mouse, powoduje,<br />

ze wskaznik myszy staje sie niewidoczny<br />

72


Poslugiwanie sie jezykiem ActionScript<br />

W obu wyrazeniach obiekty Zeke i Adam<br />

wywoluja metode run (bieg), jednak w kazdym<br />

przypadku metoda posiada inny argument, co<br />

oznacza, ze czynnosc biegania bedzie wygladac<br />

w rózny sposób: Zeke bedzie biegl szybko,<br />

podczas gdy Adam – powoli.<br />

Kazda metoda bedzie korzystac z wlasnego<br />

zestawu argumentów. Rozwaz na przyklad<br />

podstawowa akcje Flasha<br />

gotoAndPlay("Scene 1",20)<br />

(gotoAndPlay jest metoda nalezaca do klasy<br />

MovieClip jak tez niezalezna akcja Flasha).<br />

Argumenty w nawiasach (”Scene1”,20) odnosza<br />

sie do konkretnej sceny i numeru klatki, tak<br />

wiec odtwarzacz przeskoczy do sceny 1 i klatki<br />

20, a nastepnie rozpocznie odtwarzanie filmu.<br />

Wskazówka<br />

• Kropka zastepuje ukosnik z poprzednich<br />

wersji Flasha. Chociaz mozna wciaz uzywac<br />

ukosnika, lepiej poslugiwac sie kropka,<br />

poniewaz jest bardziej kompatybilna<br />

z nowymi typami akcji.<br />

Pisanie wedlug regul skladni<br />

73


Rozdzial 3.<br />

Wiecej o interpunkcji<br />

Wiecej o interpunkcji<br />

Zastosowanie kropki umozliwia tworzenie<br />

zaleznosci pomiedzy obiektami, wlasciwosciami<br />

i metodami. Dodatkowe znaki interpunkcyjne<br />

pozwalaja na wiecej kombinacji z pojedynczymi<br />

wyrazeniami.<br />

Srednik<br />

Srednika uzywa sie do zaznaczenia konca<br />

jednego wyrazenia i poczatku nastepnego. Znak<br />

ten spelnia podobna funkcje, co kropka<br />

w zdaniu: oddziela dwie idee, jedna od drugiej.<br />

Oto przyklad:<br />

stopAllSounds ();<br />

play ();<br />

Sredniki oddzielaja wyrazenia, tak wiec<br />

najpierw wylaczany jest dzwiek, a potem<br />

rozpoczyna sie odtwarzanie filmu. Kazdy skrypt<br />

jest wykonywany w kolejnosci od góry do dolu,<br />

podobnie jak zestaw instrukcji czy przepis<br />

kuchenny.<br />

Wskazówka<br />

• Dla Flasha zrozumiale sa poszczególne<br />

wyrazenia, nawet jesli nie uzywasz<br />

sredników do ich oddzielania. Dobrym<br />

zwyczajem jest jednak stosowanie tych<br />

znaków w kodzie skryptu.<br />

Klamry<br />

Klamry sa kolejnym znakiem<br />

interpunkcyjnym czesto stosowanym<br />

w kodzie ActionScript. Sluza do grupowania<br />

poszczególnych skryptów w bloki. Na<br />

przyklad, kiedy przyporzadkowujesz akcje<br />

przyciskom, akcje te sa zapisywane<br />

w klamrach wyrazenia on (release).<br />

on (release) {<br />

}<br />

stopAllSounds ();<br />

play ();<br />

W powyzszym przykladzie obie akcje,<br />

stopAllSounds oraz play, sa<br />

wykonywane po zwolnieniu klawisza<br />

myszki. Zwróc uwage na sposób<br />

rozmieszczenia klamer w kolejnych liniach,<br />

ulatwiajacych odczytanie powiazanych ze<br />

soba wyrazen jezyka ActionScript. Wazne<br />

jest, aby po klamrze zamykajacej blok akcji<br />

on (jak ró wniez po onClipEvent) nie<br />

stawiac srednika, poniewaz Flash<br />

zinterpretuje to jako blad.<br />

74


Poslugiwanie sie jezykiem ActionScript<br />

Rys. 3.6. Ikonowe menu w prawym dolnym rogu<br />

dokumentu Flasha otwiera palete akcji dzieki<br />

przyciskowi Show Actions<br />

Przyciski „plus” i „minus” dodaja<br />

lub usuwaja ze skryptu akcje<br />

Przycisk Show Actions<br />

Lista narzedzi zawierajaca akcje<br />

zorganizowane w kategorie<br />

Blok edycji<br />

parametrów<br />

Okno skryptu<br />

Rys. 3.7. Paleta akcji w trybie Normal<br />

Przyciski strzalek<br />

pozwalaja zmieniac<br />

uklad wyrazen<br />

Menu rozwijane<br />

opcji<br />

Ikona zmiany<br />

rozmiaru palety<br />

Paleta akcji<br />

Paleta akcji to okno dialogowe Flasha, dajace<br />

dostep do predefiniowanych klas i obiektów<br />

ActionScript, oraz ulatwiajace pisanie wlasnych<br />

skryptów. Akcje tworzy sie, usuwa i edytuje<br />

w jednym z dwóch trybów, Normal lub Expert,<br />

w zaleznosci od stopnia zaawansowania. Paleta<br />

akcji pozwala na pewna automatyzacje procesu<br />

pisania skryptów, np. wstawiajac automatycznie<br />

znaki interpunkcyjne w rodzaju sredników czy<br />

klamer.<br />

We Flashu nazwa palety akcji jest widoczna<br />

w rzeczywistosci jako Object Actions lub<br />

Frame Actions, w zaleznosci od rodzaju<br />

elementu, który jest aktualnie zaznaczony.<br />

Jednak zawartosc palety nie zmienia sie, tak<br />

wiec w tekscie odwolujemy sie do niego zawsze<br />

jako do palety akcji.<br />

W celu wywolania palety akcji:<br />

1. Wybierz Windows/Actions.<br />

lub<br />

W ikonowym menu w prawym dolnym rogu<br />

okna kliknij przycisk Show Actions<br />

(rys. 3.6). W zaleznosci od aktualnego<br />

zaznaczenia, pojawi sie paleta Frame<br />

Actions lub Object Actions.<br />

lub<br />

Kliknij podwójnie ujecie kluczowe, lub<br />

przytrzymujac wcisniety klawisz Alt, kliknij<br />

podwójnie klon na scenie. W efekcie pojawi<br />

sie paleta Frame Actions lub Object<br />

Actions, pozwalajac na przypisanie ujeciu<br />

kluczowemu lub klonowi odpowiedniego<br />

skryptu (rys. 3.7).<br />

Paleta akcji<br />

75


Rozdzial 3.<br />

Paleta akcji<br />

Tryb Normal<br />

Tryb Normal palety akcji udostepnia trzy sekcje<br />

okna i kilka sposobów wpisywania wyrazen<br />

jezyka ActionScript.<br />

Tryb Expert<br />

Ten tryb przeznaczony jest dla doswiadczonych<br />

programistów, którzy nie potrzebuja pomocy<br />

udostepnianej w trybie Normal. Tryb Expert<br />

umozliwia swobodne wpisywanie kodu,<br />

podobnie jak wpisywanie tekstu w edytorze<br />

(rys. 3.8).<br />

Wskazówki<br />

• Kazdy skrypt zachowuje swój wlasny tryb,<br />

co oznacza, ze jesli np. utworzysz jedna<br />

akcje danego ujecia kluczowego w trybie<br />

Normal, a inna akcje dla kolejnego ujecia<br />

kluczowego w trybie Expert, paleta akcji<br />

bedzie zmieniac tryb pracy w zaleznosci od<br />

tego, które ujecie kluczowe zostanie<br />

zaznaczone.<br />

• Badz ostrozny, przelaczajac tryby podczas<br />

pisania skryptów. Zmiana trybu z Expert<br />

na Normal wyzwala proces ponownego<br />

formatowania kodu skryptu, który<br />

wprowadza dodatkowe odstepy i obszary<br />

pustej przestrzeni. Program nie pozwoli ci<br />

na przejscie z trybu Expert do trybu<br />

Normal dopóki wpisany kod nie bedzie<br />

wolny od bledów.<br />

Rys. 3.8. Paleta akcji w trybie Expert<br />

76


Poslugiwanie sie jezykiem ActionScript<br />

Rys. 3.9. Menu opcji na palecie akcji umozliwia<br />

wybór pomiedzy trybami Normal i Expert<br />

W celu wybrania trybu<br />

pomiedzy Normal i Expert:<br />

1. Majac otwarta palete akcji, kliknij ikone<br />

zwróconego w prawo trójkata w prawym<br />

górnym rogu palety. Otworzy sie menu<br />

rozwijane opcji palety (rys. 3.9).<br />

2. Z menu wybierz tryb Normal Mode<br />

(Ctrl+N) lub Expert Mode (Ctrl+E).<br />

Wskazówka<br />

• Palete akcji mozna ustawic tak, zeby<br />

automatycznie otwierala sie w okreslonym<br />

trybie. Z menu Edit wybierz Preferences.<br />

W zakladce General okna dialogowego<br />

Preferences, z listy rozwijanej Mode<br />

wybierz odpowiednio Normal Mode lub<br />

Expert Mode (rys. 3.10).<br />

Paleta akcji<br />

Rys. 3.10. W zakladce General okna dialogowego<br />

Preferences mozna zmienic domyslny tryb pracy<br />

palety akcji<br />

Tabela 3.1. Róznice pomiedzy trybami Expert Mode i Normal Mode<br />

Cecha Tryb Normal Mode Tryb Expert Mode<br />

Bezposrednie wprowadzanie tekstu Nie Tak<br />

Blok okreslania parametrów Tak Nie<br />

Kategoria Basic Actions na liscie<br />

narzedzi<br />

Tak<br />

Przycisk „minus” Tak Nieaktywny; zaznacz wyrazenie i nacisnij<br />

klawisz Delete<br />

Przyciski „w góre” i „w dól” Tak Nieaktywne; do zmiany rozmieszczenia<br />

wyrazen uzyj polecen Copy, Cut i Paste<br />

Nie<br />

77


Rozdzial 3.<br />

Paleta akcji<br />

W celu dodania akcji<br />

w trybie Normal Mode:<br />

1. Zaznacz klon lub ujecie kluczowe, w którym<br />

chcesz wprowadzic akcje. Na liscie narzedzi<br />

kliknij pozycje Basic Actions, aby ja<br />

rozwinac.<br />

2. Kliknij podwójnie wybrana akcje, a pojawi<br />

sie ona w oknie skryptu (rys. 3.11).<br />

lub<br />

1. Zaznacz klon lub ujecie kluczowe, w którym<br />

chcesz wprowadzic akcje. Na liscie narzedzi<br />

kliknij pozycje Basic Actions, aby ja<br />

rozwinac.<br />

2. Zaznacz akcje i przeciagnij ja do okna<br />

skryptu lub jednego z wolnych pól bloku<br />

edycji parametrów (rys. 3.12). Wybrana<br />

akcja pojawi sie na liscie akcji lub w bloku<br />

okreslania parametrów.<br />

lub<br />

1. Zaznacz klon lub ujecie kluczowe, w którym<br />

chcesz wprowadzic akcje. Kliknij przycis k<br />

„plus” nad lista narzedzi i wybierz akcje<br />

z grupy rozwijanych menu (rys. 3.13).<br />

Akcja pojawi sie w oknie skryptu.<br />

lub<br />

1. Zaznacz klon lub ujecie kluczowe, w którym<br />

chcesz wprowadzic akcje. Posluz sie<br />

skrótami klawiaturowymi wymienionymi<br />

w menu rozwijanym przycisku „plus”,<br />

naciskajac najpierw klawisz Esc.<br />

2. Wpisz dwuliterowy skrót odpowiadajacy<br />

wybranej akcji. Akcja ta pojawi sie w oknie<br />

skryptu. Pelna liste skrótów poszczególnych<br />

akcji znajdziesz w dodatku C.<br />

Rys. 3.11. Dodaj akcje, wybierajac wyrazenie<br />

z listy narzedzi<br />

Rys. 3.12. Dodaj akcje, przeciagajac<br />

wyrazenie do listy akcji po prawej. Wyglad<br />

wskaznika zmienia sie na chwile, pokazujac<br />

miejsce, w którym zamierzasz upuscic akcje<br />

Rys. 3.13. Dodaj akcje, wybierajac ja z menu<br />

rozwijanego przycisku „plus”<br />

78


Poslugiwanie sie jezykiem ActionScript<br />

Rys. 3.14. Przesun wyrazenie stopAllSounds ()<br />

za pomoca przycisków-strzalek (u góry) – lub<br />

przeciagajac je w nowe miejsce (u dolu). Gruba<br />

pozioma linia wskazuje miejsce, w którym<br />

znajdzie sie wyrazenie po upuszczeniu<br />

W celu edycji akcji<br />

w trybie Normal Mode:<br />

1. Zaznacz akcje i zmien jej polozenie na liscie<br />

akcji za pomoca przycisków-strzalek<br />

„w góre” i „w dól” – lub po prostu<br />

przeciagajac ja w nowe miejsce (rys. 3.14).<br />

2. Zaznacz akcje i uzyj przycisku „minus” lub<br />

nacisnij klawisz Delete w celu usuniecia jej<br />

z listy akcji.<br />

3. Wprowadz odpowiednie wartosci w pustych<br />

polach, polach wyboru i menu rozwijanych<br />

bloku okreslania parametrów, aby zmienic<br />

argumenty dla zaznaczonej akcji. Lista akcji<br />

wyswietla akcje z ustalonymi w ten sposób<br />

parametrami (rys. 3.15).<br />

Wskazówki<br />

• Akcje mozna przeciagac bezposrednio do<br />

pól parametrów lub na liste akcji.<br />

• Tworzac skrypt, zawsze mozesz poslugiwac<br />

sie znanymi poleceniami edycji, jak Copy,<br />

Cut i Paste (Kopiuj, Wytnij, Wklej). Jesli<br />

jednak wklejasz skopiowany skrypt, nowy<br />

pojawi sie nie w miejscu zaznaczenia, jak<br />

w edytorach tekstu, lecz zaraz za nim.<br />

• Przytrzymanie klawisza Shift podczas<br />

zaznaczania umozliwia selekcje wiecej niz<br />

jednej akcji do skopiowania (Copy) lub<br />

wyciecia (Cut).<br />

Paleta akcji<br />

Rys. 3.15. Blok edycji parametrów pozwala na<br />

zmiane parametrów zaznaczonej akcji. Akcja Go<br />

To posiada dwa pola parametrów, menu<br />

rozwijane oraz pole wyboru, które wszystkie<br />

razem wplywaja na sposób dzialania akcji.<br />

Wprowadzenie wartosci 10 w polu Frame<br />

i zaznaczenie pola Go to and Play zmieni<br />

wyrazenie na liscie akcji i spowoduje<br />

przeniesienie punktu rozpoczecia odtwarzania<br />

do klatki 10<br />

79


Rozdzial 3.<br />

W celu<br />

zmodyfikowania sposobu wyswietlania<br />

palety akcji:<br />

1. Jesli chcesz zmienic rozmiar<br />

poszczególnych okienek palety, przeciagnij<br />

pionowy pasek podzialu lub kliknij go<br />

podwójnie, ewentualnie kliknij przycisk<br />

strzalki, rozdzielajacy liste narzedzi od okna<br />

skryptu (rys. 3.16).<br />

2. Klikniecie ikony trójkata w prawym dolnym<br />

rogu palety akcji zwija lub rozciaga blok<br />

edycji parametrów (rys. 3.17).<br />

Przeciaganie pionowego<br />

paska podzialu<br />

Pionowy<br />

pasek<br />

podzialu<br />

Paleta akcji<br />

Pionowy pasek podzialu przy calkowicie<br />

rozciagnietym oknie skryptu<br />

Rys. 3.16. Zmiana rozmiaru okien palety<br />

akcji przez przeciagniecie (u góry) lub<br />

klikniecie pionowego paska podzialu. Okno<br />

skryptu moze zostac rozszerzone (w srodku)<br />

lub powiekszone do szerokosci palety (u dolu)<br />

Zwija blok edycji parametrów<br />

Rys. 3.17. Paleta akcji z widocznym blokiem<br />

edycji parametrów<br />

80


Poslugiwanie sie jezykiem ActionScript<br />

Wiemy juz, ze obiekty, metody i wlasciwosci<br />

sa podstawowymi komponentami jezyka<br />

ActionScript. Jakie jednak zachodza relacje<br />

pomiedzy nimi a kategoriami akcji,<br />

wypelniajacymi okno narzedzi palety akcji?<br />

Czym charakteryzuja sie poszczególne<br />

kategorie? W trybie Normal Mode akcje<br />

sa zorganizowane hierarchicznie, w szesciu<br />

kategoriach: Basic Actions (podstawowe<br />

akcje), Actions (akcje), Operators<br />

(operatory), Functions (funkcje), Properties<br />

(wlasciwosci) i Objects (obiekty). Nie które<br />

z nich dziela sie na podkategorie akcji. Nizej<br />

znajdziesz krótka charakterystyke<br />

poszczególnych kategorii:<br />

υ Basic Actions to zbiór podstawowych<br />

akcji, z reguly odpowiedzialnych za<br />

nawigacje, np. play(). W kategorii tej<br />

znajdziesz akcje przydatne do odtwarzania<br />

róznych klatek filmu, wczytywania filmów<br />

z dowolnego miejsca w sieci Internet czy<br />

chociazby akcje ladowania dokumentów<br />

HTML do przegladarki internetowej.<br />

υ Zbiór Actions zawiera – oprócz elementów<br />

poprzedniej kategorii – takze bardziej<br />

zlozone akcje, sluzace do kontrolowania<br />

filmu. W sklad tej kategorii wchodza akcje<br />

potrzebne do okreslania zmiennych,<br />

wyrazen (formul laczacych zmienne) i<br />

wyrazen warunkowych. Znajdziesz tu<br />

równiez akcje dzialajace z klipami<br />

filmowymi, jak startDrag – akcje<br />

powodujaca „przyczepienie” klipu<br />

filmowego do wskaznika myszki, akcje<br />

warunkowe takie jak if, ifFrameLoaded<br />

oraz petle (takie jak for, do while itp.).<br />

Generalnie, z akcji tej kategorii czesto<br />

korzysta sie przy ustawianiu<br />

i modyfikowaniu obiektów, a takze<br />

porównywaniu i wywolywaniu ich<br />

wlasciwosci i metod.<br />

Kategorie akcji<br />

υ Operators jest kategoria stanowiaca zbiór<br />

operatorów umozliwiajacych tworzenie<br />

zlozonych wyrazen z wyrazen prostszych<br />

Sa tu zarówno powszechne operatory<br />

matematyczne, w rodzaju dodawania (+)<br />

i odejmowania (–), jak i operatory do<br />

budowania zlozonych wyrazen z lancuchów<br />

tekstowych .<br />

υ Functions to zbiór akcji, np. hitTest<br />

(akcja wykrywa kolizje dwóch klipów<br />

filmowych), które zwracaja wartosc, oparta<br />

na dostarczonych wczesniej danych<br />

(przykladem moze byc funkcja obliczajaca<br />

kwadrat swojego argumentu. Jako argument<br />

jest podawana wartosc liczbowa, natomiast<br />

wartosc zwracana przez funkcje jest<br />

kwadratem tej wielkosci). W takiej postaci<br />

funkcje stanowia czesc wiekszych wyrazen.<br />

Nazwa funkcji – w momencie obliczania<br />

przez ActionScript wyrazenia – zostaje<br />

zastapiona przez wartosc zwracana.<br />

υ Properties to zbiór wlasciwosci klipu<br />

filmowego, które mozna modyfikowac<br />

lub oceniac, np. _rotation. Mozna tutaj<br />

znalezc wlasciwosci lokalne, odnoszace sie<br />

do konkretnego obiektu (takie jak<br />

_rotation), oraz wlasciwosci globalne,<br />

majace wplyw na caly film (np.<br />

_quality).<br />

υ Objects jest zbiorem obiektów wraz z ich<br />

metodami i wlasciwosciami, np.<br />

selection.getFocus().<br />

Paleta akcji<br />

81


Rozdzial 3.<br />

Uzywanie obiektów<br />

Uzywanie obiektów<br />

Skoro wiesz juz, czym sa obiekty, a takze jak<br />

poslugiwac sie paleta akcji, zaczniemy pisac<br />

skrypt z uzyciem wlasnie obiektów, jak równiez<br />

wywolywania metod lub deklarowania<br />

i przyporzadkowywania wlasciwosci.<br />

Flash udostepnia predefiniowane klasy,<br />

nazywane „obiektami”. Tak naprawde sa wiec<br />

dwie definicje obiektów. Array, Boolean,<br />

Color i wszystkie inne obiekty wyswietlane<br />

w kategorii Objects na liscie narzedzi sa<br />

okreslane mianem obiektów, poniewaz stanowia<br />

predefiniowane klasy. Obiektami w ogólnym<br />

znaczeniu sa tez ciagle pojedyncze klony danej<br />

klasy. Zatem obiekt Array powinien byc<br />

wlasciwie nazywany klasa Array, a z niej samej<br />

mozna utworzyc obiekt. W tekscie odwolujemy<br />

sie do pojecia predefiniowanych klas, piszac<br />

o obiektach i podajac ich nazwy pisane wielka<br />

litera, jako ze tak wlasnie zostaly uszeregowane<br />

na liscie narzedzi palety akcji. Klasy te<br />

posiadaja metody oraz wlasciwosci,<br />

pozwalajace kontrolowac rózne aspekty filmów<br />

Flasha, np. klipy filmowe, dzwiek, dane, czas<br />

czy funkcje matematyczne. Mozesz takze<br />

tworzyc wlasne klasy poprzez laczenie kilku<br />

predefiniowanych klas i akcji z funkcjami<br />

(zobacz – rozdzial 11. „Sterowanie przeplywem<br />

informacji”).<br />

Predefiniowane klasy<br />

Predefiniowane klasy znajduja sie w kategorii<br />

Objects palety akcji (rys. 3.18). Zeby móc<br />

posluzyc sie klasa, najpierw musisz stworzyc jej<br />

klon, nadajac mu nazwe. Robi sie to podobnie,<br />

jak w przypadku tworzenia klonu symbolu.<br />

Musisz utworzyc klon klasy, jesli chcesz ja<br />

wykorzystac w skrypcie, a robi sie to przez<br />

nadanie jej nazwy. Do nadania klonowi klasy<br />

unikalnej nazwy uzywa sie akcji set<br />

variable.<br />

Adam = new Human ();<br />

myColor = new Color ();<br />

Rys. 3.18. Predefiniowane klasy Flasha sluza<br />

do kontrolowania róznych aspektów danych<br />

82


Poslugiwanie sie jezykiem ActionScript<br />

Powyzsze wyrazenia sluza do utworzenia<br />

nowych obiektów, którymi pózniej mozna<br />

manipulowac. Operator new umieszczony przed<br />

nazwa klasy, jak widac w przykladzie powyzej,<br />

jest nazywany funkcja konstruktora<br />

(constructor function). Funkcja new stanowi<br />

specjalny rodzaj funkcji, uzywany do tworzenia<br />

nowych klonów klas.<br />

Kolejny krok polega na wywolaniu metody<br />

obiektu, ewentualnie zadeklarowaniu<br />

i przyporzadkowaniu nowych wlasciwosci.<br />

Metode mozesz wywolac wybierajac akcje<br />

evaluate i wpisujac wyrazenie z kropka:<br />

myColor.setRGB(0x00CC33)<br />

Powyzsze wyrazenie wywoluje metode setRGB,<br />

która zmienia kolor skojarzony z obiektem<br />

myColor .<br />

Wskazówka<br />

• Kilka obiektów Flasha, jak obiekty Key,<br />

Math i Mouse, nie posiadaja funkcji<br />

konstruktora. Oznacza to, ze nie mozemy<br />

utworzyc ich klonu. Do ich metod<br />

i wlasciwosci mozesz odwolywac sie,<br />

podajac nazwe obiektu i po kropce nazwe<br />

wlasciwosci lub metody, np.:<br />

Mouse.hide();<br />

Math.sin(argument);<br />

Zeby dowiedziec sie, czy dany obiekt<br />

potrzebuje funkcji konstruktora, wystarczy<br />

spojrzec do kategorii Objects na liscie<br />

narzedzi. Te, które jej nie posiadaja,<br />

nie wyswietla jej wsród swoich metod<br />

i wlasciwosci.<br />

Uzywanie obiektów<br />

83


Rozdzial 3.<br />

Uzywanie obiektów<br />

Na poczatek zobaczysz, jak uzywac akcji<br />

set variable, new i evaluate do<br />

konstruowania i poslugiwania sie nowymi<br />

obiektami. W kolejnych rozdzialach zaznajomisz<br />

sie z konkretnymi typami obiektów, wlasciwosci<br />

i metod, a takze dowiesz sie, jak uzywac ich<br />

do kontrolowania twoich filmów Flasha.<br />

Ponizsze cwiczenia demonstruja sposób<br />

tworzenia klonu obiektu Date i wprowadzania<br />

zmiennej podajacej aktualna date.<br />

W celu utworzenia obiektu:<br />

1. Wyselekcjonuj ujecie kluczowe.<br />

2. Otwórz palete akcji w trybie Normal Mode.<br />

Z listy narzedzi lub menu przycisku „plus”<br />

wybierz Actions/set variable. W oknie<br />

skryptu pojawi sie nowe wyrazenie,<br />

a w bloku edycji parametrów ujrzysz puste<br />

pola (rys. 3.19).<br />

3. W polu Variable wpisz wybrana przez<br />

ciebie nazwe obiektu (rys. 3.20).<br />

4. Umiesc wskaznik myszy w polu Value.<br />

Wybierz Objects/Date/new Date lub<br />

przeciagnij pozycje new Date do pola<br />

Value. W polu Value pojawi sie funkcja<br />

konstruktora new Date (rys. 3.21).<br />

5. Usun podswietlone argumenty znajdujace<br />

sie w nawiasach przy funkcji konstruktora<br />

new Date. Zaznacz pole wyboru<br />

Expression, widoczne obok pola Value<br />

(rys. 3.22). W oknie skryptu zobaczysz, ze<br />

zniknal cudzyslów widoczny wczesniej<br />

wokól funkcji konstruktora new Date.<br />

Oznacza to, ze Flash bedzie traktowal<br />

zawartosc pola Value jako wyrazenie, a nie<br />

jako lancuch znaków (czyli tekst). Okno<br />

skryptu pokazuje cale wyrazenie, tworzace<br />

klon obiektu Date o nazwie myDate. Masz<br />

wiec juz klon twojego nowego obiektu,<br />

który jest gotowy do uzycia (rys. 3.23).<br />

Wywolanie funkcji konstruktora new Date<br />

bez argumentów powoduje, ze nowo<br />

utworzony obiekt daty bedzie przechowywal<br />

aktualny czas, tj. czas odczytany z zegara<br />

systemowego.<br />

Rys. 3.19. Akcja set variable wymaga<br />

zadeklarowania zmiennej i podania wartosci<br />

Rys. 3.20. Wpisz myDate jako nazwe obiektu<br />

Rys. 3.21. Funkcja konstruktora new Date<br />

posiada nastepujace argumenty: year (rok),<br />

month (miesiac), date (data), hour (godzina),<br />

min (minuta), sec (sekunda), ms<br />

(milisekunda)<br />

Rys. 3.22. Funkcja konstruktora new Date,<br />

bez dodatkowych argumentów, nie przypisuje<br />

okreslonych wlasciwosci obiektowi myDate<br />

Rys. 3.23. Pelne wyrazenie tworzy z obiektu<br />

typu Date nowy obiekt, nazwany myDate<br />

84


Poslugiwanie sie jezykiem ActionScript<br />

Rys. 3.24. Wprowadz mydisplay jako nazwe<br />

zmiennej i nie zaznaczaj pola Expression<br />

W celu wywolania metody obiektu:<br />

1. Kontynuujemy poprzednie cwiczenie. Na<br />

palecie akcji wybierz Actions/set variable.<br />

Ponizej pierwszego wyrazenia pojawi sie<br />

nastepne.<br />

2. W polu Variabl e wpisz nazwe zmiennej<br />

(rys. 3.24).<br />

3. W polu Value wpisz nazwe obiektu Date,<br />

który utworzyles w poprzednim cwiczeniu<br />

(czyli myDate ).<br />

4. Nie przesuwajac wskaznika myszy znad<br />

pola Value, wybierz Objects/Date/getDate.<br />

Zaznacz pole wyboru Expression<br />

(rys. 3.25). W polu Value, zaraz za<br />

obiektem myDate pojawi sie metoda<br />

getDate.<br />

Rys. 3.25. W zmiennej mydisplay przechowywana<br />

jest informacja, odczytywana przez metode<br />

getDate z obiektu myDate<br />

Pole wyboru Expression<br />

Zaznaczenie pola Expression<br />

powoduje usuniecie cudzyslowów<br />

z pola Value (lub Variable) i tym<br />

samym zamiane tzw. lancucha<br />

znakowego na wyrazenie. Lancuch<br />

znakowy jest za wsze zamkniety<br />

w cudzyslowie i reprezentuje<br />

okreslony zbiór znaków – cyfr, liter<br />

lub symboli – inaczej mozna<br />

powiedziec, ze lancuch znakowy to<br />

tekst. Natomiast wyrazenie jest<br />

wzorem (czy raczej formula), który<br />

moze zawierac zmienne, funkcje oraz<br />

cyfry, lic zby i operatory. Zanim<br />

zostanie okreslone, co reprezentuje<br />

dane wyrazenie, Flash musi je<br />

najpierw zinterpretowac, tj. podstawic<br />

za zmienne i funkcje odpowiednie<br />

wartosci, a takze wykonac na calosci<br />

dzialania zgodne z logika uzytych<br />

operatorów. Na przyklad, lancuch<br />

znakowy ”3+2” stanowi tylko grupe<br />

trzech znaków, 3+2. Z drugiej strony,<br />

wyrazenie 3+2 oznacza 5. Wiecej na<br />

temat wyrazen i zmiennych dowiesz<br />

sie z czesci V, „Przetwarzanie<br />

informacji”.<br />

Uzywanie obiektów<br />

85


Rozdzial 3.<br />

Uzywanie obiektów<br />

Kompletne wyrazenie przypisuje zmiennej<br />

mydisplay aktualny dzien miesiaca (jest to<br />

wartosc liczbowa od 1 do, w zaleznosci od<br />

miesiaca i roku, 28, 29, 30 lub 31).<br />

Informacja podawana przez te metode<br />

nazywa sie wartoscia zwracana.<br />

5. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij w obrebie sceny, aby utworzyc<br />

pusta selekcje. Na palecie Text Options,<br />

z menu rozwijanego wybierz Dynamic<br />

Text, a w polu Variable wpisz nazwe<br />

zmiennej podajacej aktualna date<br />

(mydisplay) (rys. 3.26).<br />

Pole dynamicznego tekstu wyswietla<br />

wartosc zmiennej w czasie odtwarzania<br />

filmu. Wiecej o dynamicznym tekscie<br />

dowiesz sie z rozdzialu 10.<br />

• Przetestuj swój film, wybierajac<br />

Control/Test movie. Flash tworzy klon<br />

obiektu Date, a nastepnie obiekt ten<br />

wywoluje metode getDate. Wartosc<br />

zwracana (dzien miesiaca) jest podstawiana<br />

za zmienna o nazwie mydisplay. Wartosc<br />

tej zmiennej widac w polu tekstowym na<br />

scenie.<br />

Wskazówka<br />

• W powyzszym cwiczeniu uzyles akcji set<br />

variable, która przyporzadkowuje<br />

zmiennej wartosc (w tym przypadku wartosc<br />

ta zostala zwrócona przez metode obiektu<br />

typu Date). Bylo to niezbedne do<br />

zobaczenia efektów dzialania metody,<br />

poniewaz metoda zwracala wartosc<br />

i nalezalo w jakis sposób ja odzyskac.<br />

Metody, które nie zwracaja zadnej wartosci,<br />

nie potrzebuja, aby przypisywac im zmienna<br />

(jej przypisanie nie bedzie mialo zadnego<br />

efektu). Na przyklad metoda start()<br />

obiektu Sound po prostu rozpoczyna<br />

odtwarzanie pliku muzycznego. W tym<br />

przypadku do wywolania metody mozesz<br />

uzyc akcji evaluate.<br />

Rys. 3.26. Pole tekstowe po lewej zostalo<br />

zamienione na pole dynamicznego tekstu<br />

(Dynamic Text) za pomoca zmiennej<br />

mydisplay<br />

Symbole i klasy<br />

Symbole nie sa klasami. Nie sa nawet<br />

obiektami. To prawda, ze klip<br />

filmowy jest jednoczesnie symbolem<br />

i obiektem, ale to jedyny wyjatek,<br />

i chyba tez zródlo calego zamieszania.<br />

Grafiki, przyciski, dzwieki, bitmapy<br />

i klipy wideo QuickTime – to<br />

wszystko symbole pojawiajace sie<br />

w bibliotece. Jednak nie sa to obiekty<br />

ani klasy, a to dlatego, ze nie<br />

posiadaja metod i wlasciwosci, które<br />

mozna kontrolowac za pomoca jezyka<br />

ActionScript. Tymczasem przyciski<br />

wykonuja okreslone dzialania nie<br />

dlatego, ze posiadaja metody, ale<br />

dlatego, ze ty przyporzadkowujesz<br />

konkretne skrypty ich klonom.<br />

Istnieje jednak pewna analogia<br />

pomiedzy klasami i symbolami.<br />

Symbole stanowia zawartosc<br />

biblioteki (utworzona lub<br />

zaimportowana), która mozna<br />

wielokrotnie wykorzystywac.<br />

W swoich filmach uzywasz jedynie<br />

klonów lub kopii poszczególnych<br />

symboli. W przypadku klas, jak<br />

mogles sie przekonac, tez uzywa sie<br />

tylko klonów, tworzonych na ich<br />

podstawie na potrzeby projektu.<br />

86


Poslugiwanie sie jezykiem ActionScript<br />

Rys. 3.27. Komentarze towarzyszace kolejnym<br />

fragmentom skryptu pomagaja uwypuklic ich<br />

znaczenie<br />

Rys. 3.28. Podwójny ukosnik sygnalizuje<br />

wprowadzanie komentarza w polu definiowania<br />

etykiety ujecia (Label)<br />

• Ukosników uzywa sie takze do<br />

sygnalizowania komentarzy wpisywanych<br />

w oknie palety Frame. Kiedy wiec<br />

zmodyfikujesz ujecie, wpisz odpowiedni<br />

tekst, zaczynajac linie od ukosników (//),<br />

co zasygnalizuje programowi, ze linia ta<br />

zawiera komentarz, a nie nazwe ujecia<br />

(rys. 3.28).<br />

Stosowanie komentarzy<br />

Podczas tworzenia zlozonych skryptów<br />

powinienes pamietac o dolaczaniu objasnien<br />

(komentarzy), które pozwola tobie<br />

i wspóltwórcom projektu pamietac o zadaniach<br />

poszczególnych fragmentów kodu. Komentarze<br />

pomagaja zachowac porzadek w czasie prac nad<br />

poszczególnymi czesciami skryptu (rys. 3.27).<br />

W celu dolaczenia komentarza:<br />

1. Na palecie akcji wybierz Actions/comment.<br />

W polu Comment, w bloku edycji<br />

parametrów, wprowadz tekst komentarza.<br />

2. Tylko w trybie Expert Mode, w oknie<br />

skryptu wpisz dwa ukosniki (//). Wprowadz<br />

tekst komentarza za ukosnikami.<br />

3. Jesli chcesz zawrzec w komentarzu tekst,<br />

który ma kilka linijek, to otwierasz blok<br />

komentarza wpisujac /* a zamykasz<br />

wpisujac */:<br />

//To jest komentarz, który miesci sie<br />

w jednej linijce<br />

/* To jest tekst komentarza, który nie miesci<br />

sie w jednej linijce, wiec trzeba uzyc<br />

otwarcia i zamkniecia bloku komentarza */<br />

Komentarze sa zaznaczane innym niz reszta<br />

skryptu kolorem, wiec latwo je zlokalizowac.<br />

Wskazówki<br />

• Jesli wprowadzasz dlugi komentarz, zapisz<br />

go w kilku kolejnych liniach lub skorzystaj<br />

z bloku ko mentarza. Dzieki temu nie<br />

bedziesz musial przewijac okna skryptu,<br />

zeby odnalezc koniec tekstu.<br />

• Nie zwracaj uwagi na ilosc komentarzy. Nie<br />

sa one kompilowane wraz z reszta skryptu,<br />

wiec nie maja wplywu na szybkosc<br />

wykonywania programu. Co wiecej, linie<br />

komentarzy nie sa dolaczane do<br />

eksportowanych plików SWF, wiec nie<br />

powoduja zwiekszania ich rozmiarów.<br />

Stosowanie komentarzy<br />

87


Rozdzial 3.<br />

88


Czesc 3.<br />

Zarzadzanie czasem i informacja<br />

89


Rozdzial 4.<br />

90


Zaawansowane przyciski<br />

i interakcja z uzytkownikiem<br />

4<br />

Czesci skladowe jezyka HTML<br />

Wykorzystanie Flasha do tworzenia grafiki i animacji to tylko polowa zabawy. Mozesz jeszcze<br />

wprowadzic interakcje z uzytkownikiem za pomoca przycisków i jezyka ActionScript,<br />

pozwalajacych mu sprawowac kontrole nad owa grafika i animacja. Interaktywnosc ma zasadnicze<br />

znaczenie w nawigowaniu po sieci i witrynach komercyjnych, jak równiez w procesie tworzenia<br />

gier, internetowych samouczków czy czegokolwiek innego, co wymaga od uzytkownika<br />

dokonywania wyborów.<br />

Co czyni film interaktywnym? Interaktywnosc opiera sie na obustronnej komunikacji pomiedzy<br />

uzytkownikiem i filmem. W przypadku filmu Flasha, uzytkownik moze reagowac wykonaniem<br />

akcji polegajacej na przesunieciu wskaznika myszy, kliknieciu jej przycisku czy nacisnieciu<br />

okreslonego klawisza na klawiaturze. Akcja taka wywola odpowiedz ze strony filmu, który z kolei<br />

moze zazadac od uzytkownika wykonania kolejnego dzialania. To wlasnie reakcja uzytkownika<br />

na rzeczy dziejace sie na ekranie – we Flashu nazywane zdarzeniami – wprowadza do projektu<br />

interaktywnosc. Do zarzadzania zdarzeniami – Flash uzywa kombinacji skryptów akcji<br />

przypisywanych do ujec, klonów przycisków i obiektów, grupujac je w wyrazeniach nazywanych<br />

manipulatorami zdarzen.<br />

W tym rozdziale na poczatek zajmujemy sie symbolami przycisków i ich bardziej<br />

zaawansowanymi zastosowaniami. Nauczysz sie powiekszac funkcjonalnosc tych elementów,<br />

tworzac niewidzialne przyciski, sekwencje animacji klonów przycisków, jak równiez w pelni<br />

animowane przyciski. Omówimy tez zagadnienia zwiazane z tworzeniem bardziej zlozonych<br />

przycisków, w rodzaju menu rozwijanych, zawierajacych rózne zdarzenia zwiazane z obsluga<br />

myszy, opcje sledzenia i klipy filmowe. Na koniec zobaczysz, w jaki sposób nadzorowac reakcje<br />

uzytkownika poslugujacego sie klawiatura za posrednictwem zdarzen klawiaturowych<br />

powiazanych z klonami przycisków i obiektem Key. Oprócz zdarzen zwiazanych z obsluga myszy<br />

oraz zdarzen klawiaturowych, istnieje jeszcze jeden typ zdarzen – filmowe, które sa tez bardzo<br />

wazne dla kontrolowania interakcji z uzytkownikiem. Jako ze zdarzenia filmowe sa zwiazane<br />

z klipami filmowymi, omówimy je w rozdziale 5., którego tresc koncentruje sie wlasnie na klipach<br />

filmowych oraz poslugiwaniu sie listwa czasowa.<br />

Przyciski i interakcja z uzytkownikiem<br />

91


Rozdzial 4.<br />

Niewidzialne przyciski<br />

Niewidzialne przyciski<br />

W programie Flash mozna zdefiniowac cztery<br />

specjalne ujecia kluczowe symbolu przycisku,<br />

które opisuja wyglad przycisku i sposób jego<br />

reakcji na ruch mysza. Sa to stany przycisku – o<br />

nazwach Up, Over, Down i Hit. Stan Up<br />

okresla wyglad przycisku w momencie, kiedy<br />

wskaznik myszy jest poza jego granicami. Over<br />

ukazuje wyglad przycisku w momencie, kiedy<br />

wskaznik myszy znajduje sie bezposrednio nad<br />

przyciskiem. W stanie Down okresla sie wyglad<br />

przycisku w momencie, kiedy wskaznik myszy<br />

znajduje sie nad przyciskiem i wcisnieto klawisz<br />

myszy. Ostatni stan, Hit, okresla aktywny<br />

obszar przycisku (rys. 4.1).<br />

Mozesz zwiekszyc elastycznosc przycisków<br />

Flasha, definiujac tylko niektóre stany.<br />

Zostawiajac puste ujecia kluczowe we<br />

wszystkich stanach, z wyjatkiem stanu Hit,<br />

otrzymasz w rezultacie niewidzialny przycisk.<br />

Niewidzialny przycisk posiada tylko stan Hit,<br />

definiujacy obszar reagujacy na wskaznik<br />

myszy (rys. 4.2). Tego typu przyciski sa<br />

szczególne uzyteczne przy tworzeniu<br />

zlozonych, uniwersalnych obszarów aktywnych,<br />

którym mozna przypisac konkretne akcje.<br />

Mozna umieszczac klony niewidzialnych<br />

przycisków nad obszarem grafiki, co oznacza,<br />

ze wlasciwie dowolny element sceny moze<br />

posluzyc za przycisk. Na przyklad, jesli<br />

utworzyles kilka bloków tekstowych, które<br />

uzytkownik ma przeczytac jeden po drugim,<br />

móglbys zrobic tak, zeby klikniecie mysza<br />

jednego z nich otwieralo kolejny akapit. Zamiast<br />

wiec tworzyc oddzielne przyciski dla kazdego<br />

bloku tekstowego, przygotuj tylko jeden<br />

niewidzialny przycisk i dopasuj jego klony do<br />

kazdego z bloków. Przypisz akcje wszystkim<br />

klonom niewidzialnego przycisku, umieszczonym<br />

nad obszarami bloków tekstowych (rys. 4.3).<br />

Kiedy przeciagniesz klon niewidzialnego<br />

przycisku na scene, pojawi sie obszar aktywny,<br />

przedstawiony w postaci przezroczystego<br />

niebieskiego ksztaltu, pozwalajacy precyzyjnie<br />

umiescic przycisk na scenie. Wybierz Control/<br />

Enable Simple Buttons, a przycisk zniknie.<br />

Rys. 4.1. Cztery ujecia kluczowe symbolu<br />

przycisku<br />

Rys. 4.2. Niewidzialny przycisk uzyskasz<br />

definiujac tylko stan Hit<br />

Dwa klony tego samego symbolu<br />

niewidzialnego przycisku<br />

Rys. 4.3. Klony niewidzialnego przycisku<br />

umieszczone nad blokami tekstowymi<br />

92


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.4. Symbol niewidzialnego przycisku.<br />

Prostokatny ksztalt w ujeciu kluczowym Hit<br />

definiuje obszar aktywny przycisku<br />

W celu<br />

utworzenia niewidzialnego przycisku:<br />

1. Z menu Insert wybierz New Symbol.<br />

Pojawi sie okno dialogowe Symbol<br />

Properties.<br />

2. Wpisz nazwe przycisku i w polu Behavior<br />

zaznacz opcje Button. Kliknij OK.<br />

W bibliotece zostanie utworzony nowy<br />

symbol przycisku i uruchomi sie tryb edycji<br />

symbolu.<br />

3. Zaznacz ujecie kluczowe Hit.<br />

4. Z menu Insert wybierz Keyframe .<br />

Wówczas zostanie utworzone nowe ujecie<br />

kluczowe, odpowiadajace stanowi Hit.<br />

5. Majac zaznaczone ujecie kluczowe Hit,<br />

narysuj uniwersalny ksztalt, który posluzy<br />

jako obszar aktywny twojego<br />

niewidzialnego przycisku (rys. 4.4).<br />

6. Powróc do glównej listwy czasowej.<br />

7. Tak jak w przypadku kazdego symbolu<br />

przycisku, przeciagnij klon symbolu<br />

z biblioteki na scene. Przezroczysty<br />

niebieski ksztalt, który pojawil sie na scenie,<br />

oznacza stan Hit (obszar aktywny) twojego<br />

niewidzialnego przycisku.<br />

8. Przesun, wyskaluj i obróc klon<br />

niewidzialnego przycisku, aby pokrywal sie<br />

z wybrana grafika.<br />

9. Na palecie Actions przypisz akcje klonowi<br />

przycisku. Kiedy wybierzesz Control/<br />

Enable Simple Buttons, przezroczysty<br />

niebieski obszar zniknie, ale wskaznik<br />

przyjmie postac raczki, wskazujac tym<br />

samym na obecnosc przycisku.<br />

Niewidzialne przyciski<br />

93


Rozdzial 4.<br />

Niewidzialne przyciski<br />

Etykietki narzedziowe czy pojawiajace sie<br />

komunikaty takze mozna tworzyc za pomoca<br />

niewidzialnych przycisków. Wystarczy<br />

przygotowac taka krótka informacje w stanie<br />

Over niewidzialnego przycisku, a nastepnie<br />

rozmiescic klony wszedzie tam, gdzie<br />

informacja ma sie pojawiac (rys. 4.5).<br />

W celu utworzenia<br />

etykietki narzedziowej<br />

z niewidzialnymi przyciskami:<br />

1. Utwórz niewidzialny przycisk w sposób<br />

przedstawiony w poprzednim cwiczeniu.<br />

2. Zaznacz stan Over i wstaw nowe ujecie<br />

kluczowe.<br />

3. W stanie Over dodaj grafike, która<br />

wyswietla informacje o konkretnym<br />

elemencie pojawiajacym sie na scenie lub<br />

w filmie (rys. 4.6).<br />

4. Powróc do glównej listwy czasowej filmu<br />

i rozmiesc klony niewidzialnego przycisku<br />

w potrzebnych punktach.<br />

Wskazówki<br />

• Zachowaj ostroznosc, kiedy obracasz lub<br />

skalujesz klon, poniewaz dzialania te maja<br />

wplyw takze na stan Over przycisku<br />

(rys. 4.7).<br />

• Musisz miec swiadomosc tego, w jaki<br />

sposób niewidzialne przyciski sa<br />

umieszczane w warstwach, a takze pamietac,<br />

ze zachowuja porzadek okreslony stosem.<br />

Przycisk znajdujacy sie nad innym<br />

przyciskiem jest wobec niego nadrzedny<br />

i w rezultacie dezaktywuje przypisana<br />

mu akcje.<br />

Rys. 4.5. Stan Over tego niewidzialnego<br />

przycisku zawiera dymek z instrukcja<br />

skorzystania ze slowniczka. Mozna<br />

wykorzystac kilka klonów do zaznaczenia<br />

róznych slów<br />

Rys. 4.6. Jezeli dla<br />

niewidzialnego<br />

przycisku<br />

zdefiniujesz tylko<br />

stan Over, bedzie<br />

sie on pojawial<br />

tylko wtedy, kiedy<br />

wskaznik myszy<br />

spocznie na<br />

aktywnym obszarze<br />

Rys. 4.7. Klon umieszczony nad slowami<br />

„muscle contraction” zostal rozciagniety.<br />

Spowodowalo to takze rozciagniecie stanu<br />

Over przycisku w podobny sposób<br />

94


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Animowane przyciski<br />

Skoro przyciski sa rodzajem symbolu, to<br />

znaczy, ze mozna je animowac – tak jak kazdy<br />

inny klon symbolu. Wprawienie przycisków<br />

w ruch stwarza mozliwosc projektowania<br />

poruszajacych sie menu czy elementów<br />

interfejsu, które oczywiscie reaguja na wskaznik<br />

myszy i wykonuja przypisane im akcje.<br />

Rys. 4.8. Akcja przypisana do tego klonu<br />

przycisku w ksztalcie balonika powoduje przejscie<br />

do etykiety happy birthday i rozpoczecie<br />

odtwarzania<br />

Sekwencje animacji<br />

ruchu klonu przycisku<br />

Rys. 4.9. Ten balonik unosi sie i opada<br />

w niekonczacej sie petli animacji<br />

Akcja<br />

gotoAndPlay(1)<br />

W celu wykonania automatycznej animacji<br />

ruch przycisku:<br />

1. Z menu Insert wybierz New Symbol<br />

i utwórz symbol przycisku.<br />

2. Powróc do glównej listwy czasowej<br />

i przeciagnij klon przycisku na scene.<br />

3. Zaznacz klon i otwórz palete akcji w trybie<br />

Normal Mode. Przypisz akcje twojemu<br />

klonowi (rys. 4.8).<br />

4. Utwórz animacje ruchu, tak samo, jak<br />

dla zwyklego klonu symbolu graficznego.<br />

Wstaw nowe ujecia kluczowe, przesun<br />

poszczególne klony lub dokonaj ich<br />

transformacji, a nastepnie wybierz<br />

Motion Tween w palety Frames.<br />

5. Na koncu animacji ruchu dodaj akcje<br />

gotoAndPlay(1). Flash utworzy<br />

niekonczaca sie petle animacji dla twojego<br />

przycisku (rys. 4.9).<br />

Animowane przyciski<br />

95


Rozdzial 4.<br />

6. Utwórz na listwie czasowej punkt,<br />

do którego akcja przypisana do klonu<br />

przycisku przenosi uzytkownika.<br />

7. Przetestuj swój film. W czasie odtwarzania<br />

animacji klon przycisku jest aktywny<br />

i reaguje na wskaznik myszy.<br />

Wskazówka<br />

• Animowane klony przycisków uzywaja akcji<br />

przypisanych do pierwszego ujecia<br />

kluczowego sekwencji animacji ruchu<br />

(rys. 4.10). Dobrym pomyslem jest najpierw<br />

przypisanie akcji do klonu przycisku,<br />

a dopiero potem wykonanie animacji. W ten<br />

sposób wszystkie wstawiane pózniej ujecia<br />

kluczowe beda zawierac ten sam klon,<br />

z tymi samymi akcjami.<br />

Akcje przypisane do klonu przycisku w tym<br />

ujeciu kluczowym beda obowiazywac do<br />

nastepnego ujecia kluczowego<br />

Rys. 4.10. Akcje przypisane animowanym<br />

klonom. W sekwencji animacji wykonywane<br />

sa akcje przypisane do pierwszego klonu<br />

Animowane przyciski<br />

96


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Klon klipu<br />

filmowego<br />

z motylem rezyduje<br />

w pojedynczej<br />

klatce na glównej<br />

listwie czasowej<br />

Wszystkie 10 klatek<br />

symbolu klipu<br />

filmowego wciaz<br />

moga byc<br />

odtwarzane<br />

Rys. 4.11. Klipy filmowe posiadaja niezalezne<br />

listwy czasowe<br />

Animowane przyciski<br />

i symbol klipu filmowego<br />

Animowane przyciski wyswietlaja animacje<br />

w jednym z trzech pierwszych ujec kluczowych<br />

(Up, Over i Down) symbolu przycisku.<br />

Na przyklad, przycisk móglby wirowac<br />

w momencie „najechania” na niego<br />

wskaznikiem myszy, jako ze stan Over zawiera<br />

animacje wirujacego przycisku. Ale jak<br />

wpasowac animacje w jedno tylko ujecie<br />

kluczowe symbolu przycisku? Odpowiedzia<br />

jest wykorzystanie klipu filmowego.<br />

Klipy filmowe stanowia specjalny rodzaj<br />

symbolu, który umozliwia przechowywanie<br />

animacji odtwarzanych, niezaleznie od ich<br />

polozenia czy liczby klatek zajmowanych przez<br />

klon symbolu. Jest to mozliwe dlatego, ze listwa<br />

czasowa klipu filmowego jest niezalezna od<br />

pozostalych listew, lacznie z listwami<br />

czasowymi innych klipów, jak równiez glównej<br />

listwy czasowej, w której klip moze rezydowac.<br />

Nie zaleznosc ta oznacza, ze w przypadku<br />

wprowadzenia do sceny klonu symbolu, beda<br />

odtwarzane wszystkie klatki animacji klipu<br />

filmowego, niezaleznie od jej umiejscowienia.<br />

Umieszczenie klonu klipu filmowego w ujeciu<br />

kluczowym symbolu przycisku sprawia, ze klip<br />

filmowy bedzie odtwarzany za kazdym razem<br />

po wyswietleniu tego ujecia kluczowego.<br />

Opisane zagadnienia to podstawy dzialania<br />

animowanych przycisków.<br />

Rozwazmy przyklad motyla trzepocacego<br />

skrzydlami. Animacja taka moglaby zajmowac<br />

dziesiec klatek w symbolu klipu filmowego.<br />

Jednak wstawienie klonu tego filmu do innego<br />

filmu na scenie, majacego tylko jedna klatke,<br />

wciaz pozwala ogladac animacje motyla<br />

w calosci (rys. 4.11). Wlasciwosc ta jest<br />

uzyteczna w projektowaniu cyklicznych<br />

animacji odtwarzanych niezaleznie od tego,<br />

co dzieje sie na glównej listwie czasowej.<br />

Animacje mrugajacych oczu, na przyklad,<br />

mozna umiescic w obrebie twarzy w postaci<br />

klipu filmowego. I wtedy cokolwiek dzialoby<br />

sie z twarza – jesli w ogóle cos by sie dzialo –<br />

oczy beda caly czas mrugac.<br />

Przyciski i symbol klipu filmowego<br />

97


Rozdzial 4.<br />

Przyciski i symbol klipu filmowego<br />

Klip filmowy jest unikalny pod jeszcze jednym<br />

wzgledem – jest obiektem Flasha, co oznacza,<br />

ze posiada metody i wlasciwosci, które mozesz<br />

kontrolowac za pomoca jezyka ActionScript.<br />

W kolejnych rozdzialach powiemy o tym<br />

wiecej, a na razie zobaczmy, w jaki sposób<br />

uzywa sie klipów filmowych w kontekscie<br />

przycisków.<br />

W celu utworzenia klipu filmowego:<br />

1. Z menu Insert wybierz New Symbol.<br />

Otworzy sie okno dialogowe Symbol<br />

Properties.<br />

2. Wpisz jakas opisowa nazwe dla twojego<br />

symbolu klipu filmowego, a nastepnie<br />

w opcji Behavior zaznacz pozycje Movie<br />

Clip i kliknij OK (rys. 4.12). Uruchomiony<br />

zostanie tryb edycji symbolu.<br />

3. Na listwie czasowej klipu filmowego<br />

przygotuj wybrana grafike i animacje<br />

(rys. 4.13).<br />

4. Powróc do glównej sceny. Twój klip<br />

filmowy bedzie przechowywany<br />

w bibliotece w postaci symbolu i bedziesz<br />

mógl wprowadzic go do sceny jako klon<br />

(rys. 4.14).<br />

Wskazówka<br />

• Nowe klony klipów filmowych sa<br />

automatycznie odtwarzane, poczynajac od<br />

pierwszej klatki. Dotyczy to takze klonów<br />

na róznych scenach. Wyobraz sobie, na<br />

przyklad, animacje klipu filmowego<br />

przedstawiajacego wskazówke zegara<br />

wykonujaca pelny obrót, a startujaca na<br />

godzinie dwunastej. Jesli umiescisz klon<br />

tego klipu w scenie 1., a potem bedziesz<br />

chcial kontynuowac odtwarzanie filmu<br />

w scenie 2., Flash przyjmie, ze klon<br />

w scenie 2. jest nowym elementem. To<br />

z kolei sprawi, ze animacja klipu filmowego<br />

zostanie zresetowana i jej odtwarzanie<br />

rozpocznie sie na nowo, ze wskazówka<br />

startujaca na godzinie dwunastej.<br />

Rys. 4.12. Stwórz nowy symbol klipu<br />

filmowego przez nadanie mu nazwy (Name)<br />

i okreslenie zachowania (Behavior)<br />

Rys. 4.13. Symbol klipu filmowego<br />

przedstawiajacego kregi na wodzie zawiera<br />

sekwencje animacji owalu, powiekszajacego<br />

sie i stopniowo znikajacego<br />

Rys. 4.14. Wprowadz klon symbolu klipu<br />

filmowego na scene, przeciagajac go<br />

z biblioteki<br />

98


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

W celu<br />

utworzenia animowanego przycisku:<br />

1. Przygotuj symbol klipu filmowego,<br />

zawierajacy animacje w sposób opisany<br />

w poprzednim cwiczeniu.<br />

2. Utwórz symbol przycisku i zdefiniuj cztery<br />

ujecia kluczowe odpowiadajace stanom Up,<br />

Over, Down i Hit (rys. 4.15).<br />

3. W trybie edycji symbolu wybierz dla<br />

twojego przycisku którys ze stanów Up,<br />

Over lub Down, w zaleznosci od tego,<br />

kiedy ma byc odtwarzana animacja.<br />

Rys. 4.15. Prosty symbol przycisku z owalami<br />

umieszczonymi we wszystkich czterech ujeciach<br />

kluczowych<br />

Klon klipu filmowego a klon symbolu graficznego<br />

Co odróznia klon klipu filmowego od klonu<br />

symbolu graficznego? Odpowiedz znajdziesz<br />

po utworzeniu tej samej animacji jednoczesnie<br />

w symbolu klipu filmowego oraz symbolu<br />

graficznym, a nastepnie umieszczeniu obydwu<br />

klonów na scenie. Klon symbolu graficznego<br />

odtwarza zawarta w nim animacje w glównym<br />

srodowisku Flasha, wyswietlajac tyle klatek,<br />

ile jest aktualnie dostepnych na glównej listwie<br />

czasowej. Przykladowo, jesli symbol graficzny<br />

zawiera animacje dziesiecioklatkowa, a jego<br />

klon zajmuje cztery klatki na glównej listwie<br />

czasowej, to bedziesz mógl obejrzec jedynie<br />

cztery klatki animacji.<br />

Natomiast klipy filmowe nie funkcjonuja<br />

bezposrednio w srodowisku Flasha. Zeby<br />

zobaczyc je w dzialaniu, trzeba wczesniej<br />

wyeksportowac je do formatu SWF.<br />

W wyniku tego Flash bedzie odtwarzal klon<br />

klipu filmowego bez przerwy, niezaleznie<br />

od liczby klatek zajmowanych przez klon,<br />

a nawet po zakonczeniu odtwarzania<br />

samego filmu.<br />

Przyciski i symbol klipu filmowego<br />

99


Rozdzial 4.<br />

Przyciski i symbol klipu filmowego<br />

4. Umiesc na scenie klon twojego symbolu<br />

klipu filmowego (rys. 4.16).<br />

5. Wróc do glównej listwy czasowej<br />

i przeciagnij klon przycisku na scene.<br />

6. Z menu Control wybierz Test Movie.<br />

Animacja klipu filmowego bedzie<br />

odtwarzana nieprzerwanie po wskazaniu<br />

kursorem myszy utworzonego przycisku<br />

(rys. 4.17).<br />

Wskazówka<br />

• Cykliczne odtwarzanie klipu filmowego<br />

mozna przerwac po umieszczeniu akcji<br />

stop w ostatnim ujeciu kluczowym jego<br />

symbolu. Klipy filmowe posiadaja<br />

niezalezne listwy czasowe, dlatego poddaja<br />

sie dzialaniu akcji kontrolujacych ujecia.<br />

Z drugiej strony, symbole graficzne nie<br />

maja tej wlasciwosci.<br />

Rys. 4.16. Stan Over symbolu przycisku.<br />

Umiesc klon klipu filmowego,<br />

przedstawiajacego kregi na wodzie,<br />

wlasnie w tym ujeciu kluczowym, dzieki<br />

czemu animacja bedzie odtwarzana za<br />

kazdym razem, kiedy wskaznik myszy<br />

znajdzie sie nad przyciskiem<br />

Rys. 4.17. Ostateczna postac animowanego<br />

przycisku. Po wskazaniu przycisku mysza –<br />

rozpoczyna sie odtwarzanie klipu filmowego,<br />

przedstawiajacego rozchodzace sie kregi na<br />

wodzie<br />

100


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.18. Typowe przyklady menu rozwijanych:<br />

menu File w systemie Mac OS (po lewej) oraz<br />

menu Web w przegladarce Netscape Navigator<br />

(po prawej)<br />

Rys. 4.19. Podstawowy przycisk ze<br />

zdefiniowanymi czterema ujeciami kluczowymi<br />

Pierwsze ujecie<br />

kluczowe<br />

Drugie ujecie<br />

kluczowe<br />

Rys. 4.20. Listwa czasowa klipu filmowego<br />

z menu rozwijanym zawiera dwa ujecia kluczowe,<br />

jedno w klatce pierwszej, drugie w klatce trzeciej<br />

Zlozone przyciski<br />

Kombinacje niewidzialnych przycisków,<br />

przycisków zawierajacych animowane<br />

sekwencje, czy w pelni animowanych<br />

przycisków, jak równiez klipów filmowych<br />

mozna wykorzystac do przygotowania<br />

zlozonych przycisków, na przyklad menu<br />

rozwijanych. Menu rozwijane jest rodzajem<br />

przycisku, powszechnie spotykanym<br />

w komputerowych systemach operacyjnych<br />

i interfejsach witryn sieciowych,<br />

umozliwiajacym prezentowanie wielu<br />

mozliwosci wyboru pod pojedynczym<br />

naglówkiem. W dzialaniu wyglada to tak, ze<br />

jeden przycisk rozwija sie w liste zawierajaca<br />

wiecej przycisków, a nastepnie zwija do<br />

postaci jednego przycisku po dokonaniu<br />

wyboru (rys. 4.18).<br />

Budujac wlasne menu rozwijane, zaczynamy<br />

od umieszczenia przycisków w klipie<br />

filmowym. Przyciski okreslaja, które klatki<br />

z listwy czasowej klipu beda odtwarzane.<br />

Rozwijanie i zwijanie menu tez jest okreslane<br />

w klipie filmowym. Po umieszczeniu klonu<br />

klipu na scenie zyskujesz dostep zarówno do<br />

stanu rozwinietego, jak i zwinietego, niezaleznie<br />

od tego, co dzieje sie w twoim glównym filmie.<br />

W celu utworzenia<br />

prostego menu rozwijanego:<br />

1. Przygotuj symbol przycisku, który posluzy<br />

za przycisk naglówka menu, oraz przyciski<br />

wyboru na rozwijanej liscie. Wstaw<br />

wypelniony prostokat do ujec kluczowych<br />

Up, Over, Down i Hit (rys. 4.19).<br />

2. Utwórz nowy symbol klipu filmowego,<br />

a nastepnie przejdz do trybu edycji tego<br />

symbolu.<br />

3. Wstaw nowe ujecie kluczowe w dalszym<br />

punkcie na listwie czasowej klipu<br />

filmowego. Masz teraz dwa ujecia<br />

kluczowe. Pierwsze z nich bedzie zawierac<br />

widok twojego menu w stanie zwinietym,<br />

drugie – w stanie rozwinietym (rys. 4.20).<br />

Zlozone przyciski<br />

101


Rozdzial 4.<br />

Zlozone przyciski<br />

4. Przeciagnij jeden klon twojego symbolu<br />

przycisku do pierwszego ujecia kluczowego.<br />

Umiesc nad klonem tekst opisujacy<br />

przycisk. Utworzyles wlasnie widok menu<br />

w stanie zwinietym.<br />

5. Przeciagnij nastepne klony symbolu<br />

przycisku do drugiego ujecia kluczowego<br />

i wyrównaj je wzgledem siebie. Umiesc nad<br />

kazdym z nich tekst opisujacy dzialanie<br />

przycisku. W ten sposób utworzyles widok<br />

twojego menu w stanie rozwinietym<br />

(rys. 4.21).<br />

6. Dodaj nowa warstwe i wprowadz etykiety<br />

dla oznaczenia ujec kluczowych z menu<br />

rozwinietym oraz zwinietym. Na palecie<br />

Frame, w polu Label, wpisz collapsed<br />

dla pierwszego ujecia kluczowego<br />

i expanded dla drugiego ujecia<br />

kluczowego. Wprowadzenie etykiet pozwala<br />

wyraznie rozróznic poszczególne stany klipu<br />

filmowego i uzyc akcji gotoAndStop na<br />

etykietach ujec, a nie na ich numerach.<br />

7. Zaznacz klon w pierwszym ujeciu<br />

kluczowym. Na palecie akcji wybierz<br />

Basic Actions/Go To.<br />

8. Z menu rozwijanego Type wybierz Frame<br />

Label. W polu Frame wpisz expanded.<br />

Usun zaznaczenie z pola wyboru Go to and<br />

Play (rys. 4.22).<br />

9. Zaznacz wszystkie klony w ostatnim ujeciu<br />

kluczowym. Na palecie akcji wybierz<br />

Basic Actions/Go To.<br />

10. Z menu rozwijanego Type wybierz Frame<br />

Label. W polu Frame wpisz collapsed.<br />

Usun zaznaczenie z pola wyboru Go to and<br />

Play (rys. 4.23).<br />

Rys. 4.21. Dwa stany twojego menu<br />

rozwijanego. Stan wyjsciowy (menu zwiniete)<br />

jest umieszczony w pierwszym ujeciu<br />

kluczowym (po lewej); menu w stanie<br />

rozwinietym znajduje sie w drugim ujeciu<br />

kluczowym (po prawej). Menu rozwiniete<br />

zawiera cztery klony przycisków,<br />

reprezentujace mozliwosci wyboru<br />

Rys. 4.22. Ten przycisk nakazuje<br />

przegladarce rozpoczecie odtwarzania<br />

klatki o nazwie expanded i zatrzymanie<br />

po odtworzeniu tej klatki<br />

Rys. 4.23. Ten przycisk nakazuje<br />

przegladarce rozpoczecie odtwarzania<br />

klatki o nazwie collapsed i zatrzymanie<br />

po odtworzeniu tej klatki<br />

102


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.24. Ostateczny wyglad listwy czasowej<br />

klipu filmowego z menu rozwijanym. Akcja stop<br />

przypisana jest pierwszej klatce w górnej<br />

warstwie<br />

Klip filmowy w ujeciu<br />

kluczowym zawierajacym<br />

widok menu w stanie<br />

poczatkowym (zwinietym)<br />

Akcja stop<br />

Klip filmowy w ujeciu<br />

kluczowym zawierajacym<br />

widok menu w stanie<br />

rozwinietym<br />

Rys. 4.25. Obydwa stany menu rozwijanego<br />

funkcjonuja niezaleznie od glównej listwy<br />

czasowej<br />

11. Dodaj trzecia warstwe i w pierwszym ujeciu<br />

kluczowym wprowadz akcje stop. Gdybys<br />

nie przypisal tej akcji w pierwszej klatce<br />

twojego klipu filmowego, zobaczylbys, jak<br />

menu nieustannie otwiera sie i zamyka, co<br />

powodowalaby cyklicznosc odtwarzania<br />

klipów filmowych. Akcja stop powoduje,<br />

ze klip filmowy zatrzymuje sie na klatce 1.<br />

tak dlugo, az klikniesz przycisk menu<br />

(rys. 4.24).<br />

12. Powróc do listwy czasowej glównego filmu<br />

i umiesc na scenie klon twojego klipu<br />

filmowego.<br />

13. Z menu Control wybierz Test Movie<br />

i zobacz, jak dziala utworzone menu<br />

rozwijane. Okazuje sie, ze kiedy wcisniesz,<br />

a potem zwolnisz pierwszy przycisk,<br />

pojawia sie przyciski wyboru. Dzieje sie tak,<br />

poniewaz nakazujesz niejako przegladarce<br />

rozpoczecie odtwarzania ujecia kluczowego,<br />

zawierajacego menu w stanie rozwinietym.<br />

Po kliknieciu i zwolnieniu któregos<br />

z przycisków wyboru, przyciski te znikaja<br />

i wracasz do ujecia kluczowego na listwie<br />

czasowej klipu filmowego, zawierajacego<br />

menu w stanie zwinietym. Wszystko to<br />

dzieje sie niezaleznie od listwy czasowej<br />

glównego filmu, gdzie rezyduje klon<br />

przygotowanego przez ciebie klipu<br />

filmowego (rys. 4.25). Tak wiec udalo ci sie<br />

zaprojektowac zlozony przycisk, pelniacy<br />

role menu rozwijanego, które jednak nie robi<br />

nic (poza modyfikacja swojego wygladu).<br />

W rozdziale 5. nauczysz sie przypisywac<br />

przyciskom funkcje komunikacyjne, tym<br />

samym uzyskujac mozliwosc tworzenia<br />

zlozonych systemów nawigacji.<br />

Zlozone przyciski<br />

103


Rozdzial 4.<br />

Zlozone przyciski<br />

Kiedy zrozumiesz koncepcje funkcjonowania<br />

prostych menu rozwijanych, bedziesz mógl<br />

przejsc do tworzenia ich bardziej wyszukanych<br />

wersji, zawierajacych animacje przedstawiajace<br />

przejscie od stanu poczatkowego do stanu<br />

rozwiniecia. Móglbys na przyklad sprawic, zeby<br />

zamiast pojawiajacego sie nagle menu, przyciski<br />

ladnie rozwijaly sie w dól.<br />

W celu utworzenia<br />

animowanego menu rozwijanego:<br />

1. Przygotuj proste menu rozwijane w sposób<br />

opisany w poprzednim cwiczeniu.<br />

2. Przejdz do trybu edycji symbolu twojego<br />

klipu filmowego.<br />

3. W miejsce akcji gotoAndStop dla klonu<br />

przycisku w pierwszym ujeciu kluczowym<br />

przypisz akcje:<br />

gotoAndPlay ("expanded");<br />

Spowoduje to odtworzenie ujecia o nazwie<br />

expanded (rys. 4.26).<br />

4. Utwórz sekwencje animacji klonów<br />

przycisku w ostatnim ujeciu kluczowym<br />

(rys. 4.27).<br />

5. Wstaw ujecie kluczowe do ostatniej klatki<br />

klipu filmowego i przypisz akcje stop.<br />

6. Wróc do listwy czasowej glównego filmu<br />

i umiesc na scenie klon twojego klipu<br />

filmowego.<br />

7. Z menu Control wybierz Test Movie<br />

i przekonaj sie, jak dziala twoje menu<br />

rozwijane. Po kliknieciu i zwolnieniu<br />

pierwszego przycisku nastapi odtworzenie<br />

ujecia z klipu filmowego o etykiecie<br />

expanded, zawierajacego sekwencje<br />

animacji ruchu przycisków wyboru.<br />

Zaznacz to pole, zeby zmienic akcje<br />

gotoAndStop na akcje gotoAndPlay<br />

Rys. 4.26. Akcje przypisane pierwszemu<br />

przyciskowi w ujeciu kluczowym collapsed<br />

menu rozwijanego<br />

Sekwencja automatycznej animacji ruchu<br />

Rys. 4.27. Klip filmowy z menu rozwijanym.<br />

Przyciski pojawiajace sie po rozwinieciu<br />

menu umieszczono w oddzielnych warstwach,<br />

dzieki czemu mozna je animowac<br />

104


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Tabela 4.1. Opis zdarzen myszy<br />

Zdarzenie myszy Wyzwalane, gdy:<br />

on (press)<br />

Wskaznik jest w obrebie<br />

obszaru aktywnego (Hit)<br />

i wcisnieto klawisz myszy.<br />

on (release) Wskaznik jest w obrebie<br />

obszaru aktywnego, a klawisz<br />

myszy zostal wcisniety<br />

i zwolniony.<br />

on (release<br />

Outside)<br />

on (roll<br />

Over)<br />

Wskaznik jest w obrebie<br />

obszaru aktywnego, a klawisz<br />

myszy zostal wcisniety<br />

i zwolniony poza obszarem<br />

aktywnym.<br />

Wskaznik jest przesuwany<br />

w obrebie obszaru aktywnego.<br />

on (rollOut) Wskaznik jest przesuwany<br />

z obszaru aktywnego poza<br />

ten obszar.<br />

on (drag<br />

Over)<br />

Wskaznik znajduje sie<br />

w obrebie obszaru aktywnego<br />

i wcisnieto klawisz myszy.<br />

Nastepnie wskaznik jest<br />

przesuwany poza obszar<br />

aktywny i potem z powrotem<br />

nad ten obszar, przy czym<br />

klawisz myszy jest ciagle<br />

wcisniety.<br />

on (dragOut) Wskaznik znajduje sie<br />

w obrebie obszaru aktywnego<br />

i wcisniety jest klawisz myszy.<br />

Nastepnie wskaznik zostaje<br />

przesuniety poza obszar<br />

aktywny, przy czym klawisz<br />

myszy pozostaje wcisniety.<br />

Rys. 4.28. Blok edycji parametrów w przypadku<br />

akcji on zawiera liste pól wyboru róznych zdarzen<br />

Manipulatory zdarzen<br />

Manipulatory zdarzen to akcje, które<br />

odpowiadaja za reakcje na pewne czynnosci,<br />

nazywane zdarzeniami, wykonywane przez<br />

uzytkownika filmu Flasha. Naciskanie<br />

i zwalnianie klawisza myszy, wciskanie<br />

klawisza na klawiaturze – to przyklady zdarzen.<br />

Manipulatory zdarzen wykrywaja, czy nastapilo<br />

zdarzenie, a jezeli tak, to wykonuja<br />

w odpowiedzi okreslona akcje. Na przyklad,<br />

w poprzednich cwiczeniach przypis ywales<br />

przyciskom akcje, które pozwalaly wykryc<br />

zdarzenie zwolnienia przycisku myszy.<br />

W odpowiedzi, Flash odtwarzal ujecie kluczowe<br />

przedstawiajace zwiniete lub rozwiniete menu.<br />

Zdarzeniami myszy sa wszystkie zdarzenia<br />

zwiazane z ruchem wskaznika i naciskaniem<br />

klawiszy urzadzenia. Gdy przypisujesz akcje<br />

do klonu przycisku, Flash automatycznie<br />

umieszcza ja w nawiasach i dodaje domyslne<br />

zdarzenie myszy Release:<br />

on (release) {<br />

}<br />

Zdarzenie Release jest typowym sposobem na<br />

interaktywne wykorzystanie myszy. Dowolna<br />

akcja ujeta w klamrach bedzie wykonana, gdy<br />

wskaznik znajduje sie w obrebie aktywnego<br />

obszaru symbolu przycisku (stan Hit) – dopiero<br />

po zwolnieniu klawisza myszy. Dzieki temu<br />

uzytkownik moze zmienic zdanie i zwolnic<br />

klawisz w „bezpiecznym” miejscu, poza<br />

obszarem aktywnym przycisku, nawet jesli<br />

zdazyl juz go kliknac. Inne typy zdarzen myszy<br />

pozwalaja w jeszcze wiekszym zakresie<br />

projektowac interaktywne funkcje myszy.<br />

Wymieniono je wszystkie w tabeli 4.1.<br />

W celu wybrania zdarzenia myszy:<br />

1. Majac otwarta palete akcji w trybie Normal<br />

Mode, wybierz Actions/on. W bloku edycji<br />

parametrów pojawia sie rózne typy zdarzen<br />

wraz z polami wyboru (rys. 4.28).<br />

2. Zaznacz pole wyboru przy odpowiednim<br />

zdarzeniu, w zaleznosci od tego, jakiej akcji<br />

potrzebujesz.<br />

105


Rozdzial 4.<br />

Manipulatory zdarzen<br />

3. Wybierz akcje stanowiaca odpowiedz na<br />

wybrane zdarzenie.<br />

4. Z menu Control wybierz Test Movie<br />

i sprawdz dzialanie poszczególnych zdarzen<br />

myszy (rys. 4.29).<br />

Wskazówki<br />

• Dla wszystkich zdarzen myszy –<br />

z wyjatkiem Release – musisz wybrac<br />

Control/Test Movie, jesli chcesz zobaczyc<br />

dzialanie klonu przycisku. Zdarzenia te nie<br />

funkcjonuja w srodowisku edycyjnym, jesli<br />

wybierzesz Control/Enable Simple<br />

Buttons.<br />

• Mozliwe jest przypisanie pojedynczej akcji<br />

on wiecej niz jednego zdarzenia myszy. Dla<br />

przykladu: akcja on (press, release)<br />

wykryje moment, w którym klawisz myszy<br />

zostaje wcisniety, oraz moment, kiedy<br />

klawisz zostaje zwolniony, a takze wyzwoli<br />

akcje zapisana klamrach w przypadku<br />

wystapienia jednego z tych zdarzen<br />

(rys. 4.30).<br />

• Jesli dla jednego klonu przycisku chcesz<br />

okreslic dwa zdarzenia o róznych<br />

konsekwencjach, musisz utworzyc oddzielne<br />

wyrazenia zawierajace akcje on.<br />

Przykladowo, gdy zdarzenie Roll Over ma<br />

rozpoczynac, a zdarzenie rollOut konczyc<br />

odtwarzanie twojego filmu, to zapis akcji<br />

powinien wygladac tak:<br />

on (rollOver) {<br />

}<br />

play ();<br />

on (rollOut) {<br />

}<br />

stop ();<br />

Rys. 4.29. Menu rozwijane ze zdarzeniem<br />

Roll Over. Kiedy poruszysz wskaznik nad<br />

przyciskiem, menu zostanie natychmiast<br />

rozwiniete<br />

Rys. 4.30. W przypadku wykrycia zdarzenia<br />

Press lub Release, wykonana zostanie akcja<br />

play<br />

106


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

To ujecie kluczowe powinno zawierac<br />

wylacznie grafike lub klipy filmowe<br />

• Nie myl zdarzenia myszy rollOver ze<br />

stanem Over symbolu przycisku.<br />

Oczywiscie dzialanie obydwu tych<br />

elementów obejmuje wykrycie momentu,<br />

w którym wskaznik znajdzie sie w obrebie<br />

obszaru aktywnego. Jednak stan Over<br />

opisuje wyglad przycisku, gdy wskaznik<br />

znajduje sie nad nim, natomiast zdarzenie<br />

rollOver przypisuje akcje w przypadku<br />

takiego ustawienia wskaznika. Tak wiec<br />

ujecia kluczowe symbolu przycisku<br />

definiuja jego wyglad, podczas gdy akcja<br />

zdarzenia myszy okresla, co przycisk<br />

powoduje (rys. 4.31).<br />

Rys. 4.31. Stan Over symbolu przycisku (u góry)<br />

definiuje jego wyglad w momencie, gdy wskaznik<br />

znajdzie sie w obrebie obszaru aktywnego.<br />

Manipulator zdarzenia Roll Over, przypisany<br />

do klonu (u dolu), okresla dzialanie przycisku<br />

gdy wskaznik jest w obrebie obszaru aktywnego<br />

Manipulatory zdarzen<br />

107


Rozdzial 4.<br />

Sposoby funkcjonowania przycisków<br />

Sposoby<br />

funkcjonowania przycisków<br />

Klon przycisku moze byc zdefiniowany za<br />

pomoca palety Instance na jeden z dwóch<br />

sposobów: Track as Button (traktuj jako<br />

przycisk) lub Track as Menu Item (traktuj jako<br />

element menu) (rys. 4.32). Wybór wlasciwego<br />

sposobu decyduje o tym, czy klon przycisku<br />

otrzyma zdarzenie nawet po tym, gdy nastapilo<br />

ono dla innego klonu. Na taka sytuacje zezwala<br />

jedynie druga opcja, czyli Track as Menu<br />

Item. Opcja domyslna jest jednak Track<br />

as Button i okresla ona typowe zachowanie<br />

przycisków, czyli powoduje, ze jedno zdarzenie<br />

myszy oddzialuje na jeden klon przycisku.<br />

Bardziej zlozone przypadki, w rodzaju menu<br />

rozwijanych, wymagaja wspólpracy wielu<br />

klonów jednoczesnie. Wyobraz sobie na<br />

przyklad, ze wciskasz i przytrzymujesz przycisk<br />

menu, chcac zobaczyc mozliwosci wyboru,<br />

nastepnie wskazujesz wybrana pozycje i wtedy<br />

zwalniasz przycisk. Flash musi wiec rozpoznac<br />

zdarzenie Release (zwolnienie) w menu<br />

rozwinietym, chociaz zdarzenie Press<br />

(wcisniecie) wystapilo dla innego klonu<br />

przycisku (w zasadzie takze dla innej klatki),<br />

przedstawiajacego menu w postaci zwinietej.<br />

Wybór opcji Track as Menu Item pozwala<br />

zaakceptowac te zdarzenia i jednoczesnie daje<br />

ci swobode w tworzeniu róznych kombinacji<br />

zdarzen myszy.<br />

W celu<br />

wybrania dla zdarzenia Press<br />

opcji Track as Menu Item:<br />

1. Utwórz menu rozwijane w sposób opisany<br />

w jednym z poprzednich cwiczen,<br />

a nastepnie przejdz do trybu edycji symbolu<br />

klipu filmowego.<br />

2. Zaznacz klon przycisku w pierwszym ujeciu<br />

kluczowym i zmien zdarzenie myszy na<br />

press (rys. 4.33).<br />

Rys. 4.32. Okreslanie sposobu<br />

funkcjonowania przycisku w oknie<br />

palety Instance<br />

Rys. 4.33. Przyciskowi menu zwinietego<br />

przypisujemy zdarzenie Press<br />

108


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

3. Zaznacz wszystkie klony przycisków<br />

w ujeciu kluczowym odpowiadajacym menu<br />

rozwinietemu i w polu Options palety<br />

Instance wybierz Track as Menu Item<br />

(rys. 4.34).<br />

Teraz klony przycisku w menu rozwinietym<br />

beda akceptowac zdarzenie release<br />

po tym, jak zdarzenie press wystapi<br />

w odniesieniu do innego klonu.<br />

4. Wróc do glównej listwy czasowej<br />

i przetestuj swój film. Teraz musisz<br />

nacisnac klawisz myszy i przytrzymac, jesli<br />

chcesz, by menu pozostalo otwarte.<br />

Rys. 4.34. Wszystkie klony przycisku dla menu<br />

rozwinietego musza miec ustawiona opcje Track<br />

as Menu Item. Dotyczy to przycisków button 1 do<br />

button 4 w ujeciach kluczowych 9. i 12<br />

Wskazówka<br />

• Jesli ustalisz dla powyzszego menu<br />

rozwijanego opcje Track as Menu Item,<br />

klony przycisków przyjmuja stan Down,<br />

kiedy przesuwasz po nich wskaznik myszy.<br />

Dzieje sie tak dlatego, ze przycisk myszy<br />

zostal co prawda wcisniety, jednak zdarzenie<br />

to nastapilo wczesniej, w odniesieniu do<br />

innego klonu.<br />

Sposoby funkcjonowania przycisków<br />

109


Rozdzial 4.<br />

Sposoby funkcjonowania przycisków<br />

Spróbujmy teraz udoskonalic funkcjonowanie<br />

menu rozwijanego, wprowadzajac zdarzenie<br />

myszy Drag Over, dzieki czemu menu zostanie<br />

zwiniete takze w przypadku, gdy nie dokona sie<br />

wyboru zadnego z elementów. Wazne jest<br />

bowiem, aby menu widoczne bylo w postaci<br />

rozwinietej jedynie w czasie, gdy uzytkownik<br />

dokonuje wyboru opcji menu.<br />

W celu<br />

wybrania dla zdarzenia Drag Over<br />

opcji Track as Menu Item:<br />

1. Kontynuujac prace nad menu rozwijanym<br />

skonstruowanym w poprzednich<br />

cwiczeniach, przejdz do trybu edycji<br />

symbolu klipu filmowego.<br />

2. Dodaj nowa warstwe, umieszczajac ja<br />

ponizej istniejacych warstw.<br />

3. W nowej warstwie utwórz niewidzialny<br />

przycisk, a nastepnie umiesc jego klon<br />

w nowym ujeciu kluczowym,<br />

odpowiadajacym ujeciu kluczowemu<br />

przedstawiajacemu menu rozwiniete. Twój<br />

niewidzialny przycisk powinien byc nieco<br />

wiekszy niz rozwiniete menu (rys. 4.35).<br />

4. Zaznacz klon niewidzialnego przycisku i na<br />

palecie Instance wybierz opcje Track<br />

as Menu Item.<br />

5. Korzystajac z palety akcji, przypisz<br />

nastepujaca akcje:<br />

on (dragOver) {<br />

}<br />

gotoAndStop ("collapsed");<br />

6. Wróc do glównej listwy czasowej<br />

i przetestuj swój film. Klon niewidzialnego<br />

przycisku, umieszczony pod rozwinietym<br />

menu, wykryje moment, w którym wskaznik<br />

myszy opuszcza obszar któregos<br />

z pozostalych klonów przycisków, a wtedy<br />

odtwarzanie klipu filmowego zostanie<br />

cofniete do klatki 1., zwijajac tym samym<br />

menu.<br />

Rozwiniete menu<br />

Niewidzialny<br />

przycisk<br />

Rys. 4.35. Kiedy wskaznik myszy opuszcza<br />

obszar jednego z przycisków widocznych<br />

w rozwinietym menu, jest jednoczesnie<br />

przesuwany nad obszarem niewidzialnego<br />

przycisku rezydujacego w dolnej warstwie.<br />

W tym momencie jest wykrywane zdarzenie<br />

myszy Drag Over i rozpoczyna sie<br />

odtwarzanie klatki z etykieta collapsed<br />

110


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.36. Blok edycji parametrów dla akcji<br />

on zawiera m. in. zdarzenie Key Press<br />

Klon niewidzialnego<br />

przycisku<br />

Scena<br />

Rys. 4.37. Klon przycisku dla zdarzenia<br />

Key Press umieszczamy tuz obok sceny<br />

Informacje<br />

wprowadzane z klawiatury<br />

Klawiatura jest równie waznym elementem<br />

w funkcjonowaniu interfejsu, co mysz, tak wiec<br />

Flash pozwala takze na detekcje zdarzen<br />

wyzwalanych wcisnieciem pojedynczego<br />

klawisza. Stwarza to mozliwosc projektowania<br />

systemów nawigacji bazujacych na klawiaturze<br />

(korzystajacych np. z klawiszy strza lek lub<br />

klawiatury numerycznej) lub skrótów<br />

klawiaturowych powielajacych schematy<br />

nawigacyjne oparte na myszy. Co wiecej,<br />

mozliwe jest biezace kontrolowanie tekstu<br />

wprowadzanego przez uzytkownika w pustych<br />

polach okna filmu, chociaz takie pola tekstowe<br />

nie sa zwykle powiazane ze zdarzeniami<br />

i wymagaja osobnego omówienia (patrz –<br />

rozdzial 10.). Teraz zajmiemy sie<br />

zastosowaniem pojedynczych kombinacji<br />

klawiszy, wyzwalajacych okreslone dzialania<br />

przy uzyciu zdarzenia Key Press oraz obiektu<br />

Key.<br />

Zdarzenia klawiaturowe<br />

Zdarzenie Key Press stanowi opcje dostepna<br />

w bloku edycji parametrów dla akcji on<br />

(rys. 4.36). Zeby skorzystac ze zdarzenia Key<br />

Press, musisz wczesniej utworzyc symbol<br />

przycisku i umiescic jego klon na listwie<br />

czasowej. Klon symbolu przycisku zachowuje<br />

sie jak pojemnik na zdarzenia i skojarzone<br />

z nimi akcje, powinienes wiec uczynic przycisk<br />

niewidzialnym lub tez umiescic go poza scena.<br />

Nie bedzie wtedy widoczny w ostatecznym<br />

pliku wyeksportowanym do formatu SWF.<br />

W celu<br />

utworzenia zdarzenia Key Press:<br />

1. Utwórz symbol niewidzialnego przycisku<br />

w sposób opisany wczesniej w tym<br />

rozdziale.<br />

2. Umiesc klon przycisku na scenie lub zaraz<br />

obok sceny – w pierwszym ujeciu<br />

kluczowym (rys. 4.37).<br />

Informacje wprowadzane z klawiatury<br />

111


Rozdzial 4.<br />

Informacje wprowadzane z klawiatury<br />

3. Zaznacz klon i otwórz palete akcji.<br />

4. Wybierz Actions/on. W oknie skryptu<br />

pojawi sie manipulator zdarzenia on<br />

(release).<br />

5. W bloku edycji parametrów usun<br />

zaznaczenie opcji Release i zaznacz<br />

Key Press.<br />

6. Wybierz specyficzny znak lub symbol<br />

z klawiatury i po prostu wpisz go w pustym<br />

polu obok pola wyboru Key Press<br />

(rys. 4.38).<br />

7. Wybierz akcje wyzwalana po wykryciu<br />

zdarzenia Key Press (rys. 4.39).<br />

8. Z menu Control wybierz Test Movie<br />

i zobacz, jak odpowiada zdarzenie Key<br />

Press (rys. 4.40).<br />

Rys. 4.38. Pole Key Press pozwala<br />

wprowadzic pojedynczy znak – w tym<br />

przypadku strzalke w prawo (Right)<br />

Rys. 4.39. Zaznaczamy akcje Go To i w polu<br />

Type wybieramy Next Frame<br />

Akcja Stop<br />

Obrazki umieszczone na scenie<br />

w oddzielnych ujeciach kluczowych<br />

Klon niewidzialnego przycisku z przypisanym<br />

zdarzeniem klawiaturowym<br />

Rys. 4.40. Ten film zawiera cztery<br />

wyswietlane na scenie – jeden po drugim –<br />

obrazy. Zdarzenie on (keyPress ””)<br />

z odpowiedzia w postaci opcji nextFrame<br />

umozliwia przejscie do nastepnego obrazu<br />

po wcisnieciu klawisza prawej strzalki<br />

112


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.41. Nowa akcja on zostala dodana zaraz<br />

po klamrze zamykajacej pierwsza akcje on<br />

Rys. 4.42. Kolejne zdarzenie Key Press wymaga<br />

dwóch oddzielnych wyrazen dla akcji on<br />

Klon przycisku<br />

Rys. 4.43. Klawisz strzalki w prawo (Right)<br />

zostal przypisany do dwóch zdarzen, on (release)<br />

oraz on (keyPress ””). Obydwa<br />

zdarzenia powoduja przejscie do odtwarzania<br />

kolejnej klatki<br />

• Klawisz Escape oraz klawisze funkcyjne<br />

nie sa odpowiednie do przypisywania im<br />

zdarzen.<br />

• Zdarzenie Key Press nie rozpoznaje<br />

kombinacji klawiszy, jakkolwiek Flash<br />

odróznia litery wielkie od malych.<br />

W celu<br />

utworzenia zlozonego zdarzenia<br />

Key Press:<br />

1. Zaznacz klon przycisku zawierajacy<br />

pierwsze zdarzenie Key Press.<br />

2. Otwórz palete Object Actions.<br />

3. Dodaj oddzielna akcje on (rys. 4.41).<br />

4. W bloku edycji parametrów – dla drugiej<br />

akcji on zmien zdarzenie na Key Press<br />

i wybierz inny klawisz.<br />

5. Dodaj kolejna akcje wyzwalana po wykryciu<br />

drugiego zdarzenia Key Press (rys. 4.42).<br />

Chociaz zlozone zdarzenia klawiaturowe<br />

moga byc skojarzone z jednym klonem<br />

przycisku, kazde zdarzenie wymaga<br />

oddzielnego wyrazenia.<br />

W celu<br />

polaczenia zdarzenia Key Press<br />

ze zdarzeniem myszy:<br />

1. Utwórz symbol przycisku i zdefiniuj jego<br />

stany Up, Over, Down i Hit.<br />

2. Umiesc na scenie klon przycisku.<br />

3. Zaznacz klon i otwórz palete akcji.<br />

4. Wybierz Actions/on.<br />

5. W bloku edycji parametrów dla akcji on<br />

zaznacz pola wyboru Release oraz<br />

Key Press.<br />

6. Wybierz akcje dla manipulatora zdarzenia<br />

i przetestuj swój film (rys. 4.43). Teraz<br />

klikniecie mysza lub wcisniecie klawisza<br />

na klawiaturze spowoduje, ze film wykona<br />

wybrana przez ciebie akcje.<br />

Wskazówki<br />

• Kiedy twój film Flasha jest odtwarzany<br />

w przegladarce, musisz najpierw kliknac<br />

okno filmu, zanim bedzie moglo byc<br />

wykryte jakiekolwiek zdarzenie<br />

klawiaturowe, a jest to konieczne z uwagi<br />

na ustalenie aktywnego okna.<br />

Informacje wprowadzane z klawiatury<br />

113


Rozdzial 4.<br />

Obiekt Key<br />

Obiekt Key<br />

Obiekt Key stanowi klase w jezyku<br />

ActionScript, odpowiedzialna za detekcje<br />

klawiszy wciskanych na klawiaturze (rys. 4.44).<br />

Z rozdzialu 3. dowiedziales sie, ze aby móc<br />

uzyc klasy, trzeba najpierw utworzyc jej klon.<br />

Jednakze obiekt Key jest jednym<br />

z podstawowych obiektów, niepotrzebujacych<br />

funkcji konstruktora do przygotowania klonu<br />

przed uzyciem tego obiektu.<br />

Obiekt Key posiada metody pozwalajace<br />

okreslic ostatnio wcisniety klawisz lub<br />

sprawdzic, czy konkretny klawisz zostal<br />

wcisniety. Najczesciej uzywana jest metoda<br />

isDown, której argumentem jest specyficzny<br />

klawisz na klawiaturze. Metoda ta sprawdza,<br />

czy klawisz ten zostal wcisniety, a jezeli tak,<br />

to zwraca wartosc prawdy.<br />

Wszystkie klawisze posiadaja we Flashu<br />

odpowiednie oznaczenia cyfrowe, nazywane ich<br />

wartoscia kodowa (dodatek B). Kodów tych<br />

uzywa sie lacznie z metoda isDown do<br />

konstruowania wyrazen warunkowych,<br />

wprowadzajacych interakcje za pomoca<br />

klawiatury. Przykladowo, Key.isDown(32)<br />

zwraca prawde lub falsz, w zaleznosci od tego,<br />

czy wcisnieto klawisz spacji, którego wartosc<br />

kodowa wynosi 32.<br />

Rys. 4.44. Okno narzedzi palety akcji zawiera<br />

metody i wlasciwosci obiektu Key<br />

Dlaczego mialbys uzywac obiektu Key i jego<br />

metod oraz wlasciwosci, zamiast przycisku ze<br />

zdefiniowanym zdarzeniem Key Press?<br />

Wlasciwie jest to sprawa wyboru pomiedzy<br />

wyrafinowaniem a latwoscia w uzyciu<br />

(i upraszczaniem sobie zycia). Obiekt Key jest<br />

znacznie bardziej uzyteczny, niz zdarzenie<br />

klawiaturowe przypisane do klonu przycisku –<br />

z uwagi na mozliwosc konstruowania bardziej<br />

zlozonego kodu dla obiektu Key. Na przyklad,<br />

mozesz sprawdzac kombinacje klawiszy,<br />

wymagajac – przed wykonaniem akcji<br />

stanowiacych odpowiedz – sprawdzenia<br />

prawdziwosci dwóch metod isDown.<br />

Obiekt Key a zdarzenie Key Press<br />

Uzywanie wartosci kodowych klawiszy<br />

daje dostep praktycznie do calej klawiatury.<br />

Takze klawisze funkcyjne i klawisz Escape<br />

posiadaja wartosci kodowe, tak wiec sa<br />

dostepne dla obiektu Key.<br />

Z drugiej strony, zdarzenia Key Press sa<br />

o wiele latwiejsze w uzyciu. Jezeli nie<br />

potrzebujesz w swoim filmie rozbudowanej<br />

interakcji za pomoca klawiatury albo<br />

chcialbys jedynie udostepnic skróty<br />

klawiaturowe, towarzyszace zdarzeniom<br />

myszy, uzywaj raczej akcji on<br />

(keyPress).<br />

114


Zaawansowane przyciski i interakcja z uzytkownikiem<br />

Rys. 4.45. Wyrazenie if zawiera warunek, który<br />

bedzie sprawdzany. W przypadku jego spelnienia<br />

zostanie wykonana akcja ujeta w klamrach<br />

Rys. 4.46. Pole Condition w bloku edycji<br />

parametrów wyrazenia if. Metoda isDown<br />

wymaga podania wartosci kodowej<br />

Rys. 4.47. Wlasciwosc key.SPACE wprowadzono<br />

jako kod klawisza dla metody isDown<br />

Rys. 4.48. Okno skryptu prezentujace odpowiedz<br />

na zdarzenie, polegajace na wcisnieciu klawisza<br />

spacji<br />

Na szczescie nie musisz nieustannie siegac<br />

po nieporeczne kody klawiszy. Najczesciej<br />

uzywane klawisze sa domyslnie przypisane<br />

obiektowi Key jako jego wlasciwosci. Te<br />

wlasciwosci to stale, których mozna uzywac<br />

w miejsce kodów klawiszy. Na przyklad,<br />

wyrazenie Key.isDown(32) jest równowazne<br />

wyrazeniu Key.isDown(Key.SPACE).<br />

Pelna liste metod i wlasciwosci obiektu Key<br />

znajdziesz w dodatku A.<br />

W celu<br />

uzycia metody isDown obiektu Key:<br />

1. Zaznacz pierwsze ujecie kluczowe na listwie<br />

czasowej i otwórz palete akcji w trybie<br />

Normal Mode.<br />

2. Wybierz Actions/if. W oknie skryptu pojawi<br />

sie niedokonczone wyrazenie if, z pustym<br />

polem Condition w bloku edycji<br />

parametrów (rys. 4.45).<br />

3. Zaznacz puste pole Condition w bloku<br />

edycji parametrów.<br />

4. Wybierz Objects/Key/isDown lub<br />

przeciagnij metode isDown do pola<br />

Condition. Metoda isDown pojawi sie<br />

w polu Condition. Dla tej metody wymaga<br />

sie argumentu keyCode (rys. 4.46).<br />

5. Wybierz Objects/Key/SPACE lub<br />

przeciagnij wlasciwosc SPACE do pola<br />

Condition. Wlasciwosc Key.SPACE<br />

pojawi sie jako argument metody isDown<br />

(rys. 4.47).<br />

6. Wybierz akcje stanowiaca odpowiedz dla<br />

tego wyrazenia warunkowego (rys. 4.48).<br />

Obiekt Key<br />

115


Rozdzial 4.<br />

7. Wstaw nowe ujecie kluczowe zaraz za<br />

pierwszym, a nastepnie przypisz akcje<br />

kontrolujaca ujecia:<br />

gotoAndPlay(1).<br />

Drugie ujecie kluczowe wraca do<br />

pierwszego, a dzieje sie to w petli, wiec<br />

warunek w wyrazeniu jest nieustannie<br />

sprawdzany. Jest to tez najprostszy sposób<br />

na sprawdzanie wyrazenia if (rys. 4.49).<br />

Z kolejnych rozdzialów dowiesz sie wiecej<br />

o stosowaniu warunków i petli akcji. Jednak<br />

juz w tej chwili potrafisz sprawdzic metode<br />

isDown i rózne wlasciwosci obiektu Key,<br />

korzystajac z tej podstawowej petli.<br />

Metoda Key zostaje<br />

wywolana i sprawdzona<br />

Akcja gotoAndPlay(1)<br />

powoduje utworzenie petli<br />

Obraz<br />

przedstawiajacy<br />

kobiete skaczaca<br />

wzwyz w klatce 10.<br />

Obiekt Key<br />

W celu<br />

utworzenia kombinacji klawiszy<br />

z metoda isDown obiektu Key:<br />

1. Zaznacz pierwsze ujecie kluczowe<br />

w projekcie, nad którym pracowales<br />

w poprzednim cwiczeniu, i otwórz palete<br />

akcji w trybie Normal Mode .<br />

2. Wybierz wyrazenie if. W bloku edycji<br />

ujrzysz warunek (Condition) wraz z metoda<br />

i wlasciwoscia obiektu Key.<br />

3. W bloku edycji parametrów kliknij pole<br />

Condition, nacisnij spacje, a nastepnie<br />

wybierz Actions/Operators/&&. Jeszcze<br />

raz nacisnij spacje (rys. 4.50).<br />

4. W polu Condition, za operatorem &&,<br />

wybierz Objects/Key/isDown. Metoda<br />

isDown pojawi sie w polu Condition<br />

za operatorem &&. Dla tej metody jest<br />

wymagany kolejny argument (rys. 4.51).<br />

5. Wybierz Objects/Key/CONTROL lub<br />

przeciagnij wlasciwosc CONTROL do pola<br />

Condition (rys. 4.52).<br />

Wlasciwosc key.CONTROL pojawi sie jako<br />

argument drugiej metody isDown. Warunek<br />

zostanie spelniony i spowoduje wykonanie<br />

akcji ujetej w klamrach tylko wtedy, gdy<br />

jednoczesnie zostana wcisniete klawisz<br />

spacji oraz Control .<br />

Rys. 4.49. Ten film bedzie odtwarzany w petli<br />

od klatki 1. do klatki 2. – do momentu<br />

wcisniecia klawisza spacji<br />

Rys. 4.50. Dodaj operator && dostepny<br />

w oknie narzedzi lub po prostu wpisz go<br />

w polu Condition za pierwsza metoda Key<br />

Rys. 4.51. Druga metoda isDown wystepuje<br />

zaraz za pierwsza i jest z nia powiazana<br />

operatorem &&<br />

Rys. 4.52. Dla spelnienia tego warunku<br />

konieczne jest jednoczesne wcisniecie<br />

klawiszy spacji oraz Control<br />

116


Zarzadzanie<br />

zasobami Flasha<br />

5<br />

Czesci skladowe jezyka HTML<br />

Zeby tworzyc elementy prawdziwej interakcji z uzytkownikiem i umozliwic mu ogladanie,<br />

sluchanie i wykonywanie dokladnie tego, co chcialbys, zeby robil, musisz nauczyc sie, jak<br />

kontrolowac odtwarzanie filmu wzdluz róznych listew czasowych. Wewnetrzny odtwarzacz<br />

Flasha zawsze pokazuje to, co jest na scenie, odtwarza dowolne dzwieki i wyzwala dowolne<br />

akcje wlaczone do listwy czasowej. Przeskakiwanie od klatki do klatki wzdluz listwy czasowej<br />

glównego filmu jest wystarczajaco proste, gdy uzywa sie podstawowych akcji, z którymi zdazyles<br />

sie juz zaznajomic, jak Go To, Play i Stop. Kiedy jednak dolaczysz do swojego filmu dodatkowe<br />

klipy filmowe, bedziesz mial do czynienia z innymi listwami czasowymi, którymi mozna<br />

indywidualnie zarzadzac. Glówna listwa czasowa moze kontrolowac listwe czasowa klipu<br />

filmowego. Z drugiej strony, listwa czasowa klipu filmowego moze kontrolowac glówna listwe<br />

czasowa, ale takze, listwa czasowa jednego klipu filmowego moze kontrolowac listwe czasowa<br />

innego klipu. Celem tego rozdzialu jest pomóc ci opanowac zasady tej zlozonej interakcji<br />

i nawigacji pomiedzy poszczególnymi listwami czasowymi.<br />

Zarzadzanie zasobami Flasha<br />

117


Rozdzial 5.<br />

Nawigowanie klipów filmowych<br />

Nawigowanie<br />

po listwach czasowych<br />

klipów filmowych<br />

Niezalezne listwy czasowe symbolów klipów<br />

filmowych umozliwiaja tworzenie<br />

skomplikowanych schematów nawigacyjnych<br />

(rys. 5.1). W czasie odtwarzania zawartosci<br />

glównej listwy czasowej, moga byc<br />

jednoczesnie odtwarzane filmy z pozostalych<br />

listew czasowych, oddzialujac na siebie<br />

i okreslajac, które klatki maja byc odtwarzane<br />

lub tez kiedy przerwac odtwarzanie. Tak<br />

naprawde, powszechna jest praktyka<br />

wprowadzania do sceny wielu klipów<br />

filmowych oddzialujacych miedzy soba,<br />

podczas gdy listwa czasowa glównego filmu<br />

zawiera tylko jedna klatke, niezbedna do<br />

zadzialania calosci. Oczywiscie, nawigowanie<br />

pomiedzy poszczególnymi listwami czasowymi<br />

odbywa sie przy udziale jezyka ActionScript.<br />

Podstawowe akcje, uzywane do nawigowania<br />

wzdluz glównej listwy czasowej (Go To, Stop<br />

i Play), moga byc takze uzywane do<br />

nawigowania listwa czasowa dowolnego klipu<br />

filmowego. Jest to mozliwe z uwagi na to, ze<br />

klipy filmowe stanowia czesc predefiniowanych<br />

we Flashu klas klipów filmowych, umozliwiajac<br />

ci prace z klipami filmowymi jako obiektami.<br />

To, ze klip filmowy jest jednoczesnie symbolem<br />

oraz obiektem, czyni go unikalnym w sposobie<br />

funkcjonowania i tworzenia. Jako klon symbolu,<br />

klip filmowy moze byc wykorzystany w petlach<br />

animacji i animowanych przyciskach. Kiedy jest<br />

obiektem, mozesz wywolywac jego metody,<br />

potrzebne do kontrolowania, odtwarzania lub<br />

szacowania wlasciwosci wplywajacych na<br />

sposób pojawiania sie klipu. Klipy filmowe<br />

tworzy sie i przechowuje w bibliotece –<br />

podobnie jak inne symbole. Jednak uzywanie<br />

ich jako obiektów wymaga przygotowania ich<br />

klonów. Po jednokrotnym utworzeniu klonu,<br />

obiekt klipu filmowego staje sie dostepny dla<br />

wszystkich metod i wlasciwosci klasy klipów<br />

filmowych.<br />

Rys. 5.1. Film moze zawierac wiele listew<br />

czasowych oddzialujacych na siebie<br />

nawzajem. Powyzszy przyklad przedstawia<br />

scene Scene 1 jako glówna listwe czasowa.<br />

Skladaja sie na nia dwa klipy filmowe: jeden<br />

z nich zawiera drugi. Strzalki prezentuja tylko<br />

kilka z mozliwych kierunków komunikacji<br />

118


Zarzadzanie zasobami Flasha<br />

Obiekt klipu<br />

filmowego<br />

Obiekt Date<br />

Rys. 5.2. Tworzenie klonu symbolu klipu<br />

filmowego oraz tworzenie klonu obiektu Date<br />

Nazywanie klonów<br />

Tworzenie klonu twojego symbolu klipu<br />

filmowego zawiera sie w dwóch krokach:<br />

umieszczenie klonu na scenie, a nastepnie<br />

nadanie mu nazwy. Daje to taki sam efekt, jaki<br />

inne obiekty Flasha osiagaja przy pomocy<br />

funkcji konstruktora (rys. 5.2). Otrzymujemy<br />

wiec nazwany obiekt lub klon, stworzony na<br />

podstawie klasy. Mozna go pózniej uzywac<br />

przez wywolanie jego metod lub szacowanie<br />

jego wlasciwosci.<br />

W celu<br />

nazwania klonu klipu filmowego:<br />

1. Utwórz symbol klipu filmowego.<br />

2. Przeciagnij klon klipu filmowego<br />

z biblioteki na scene.<br />

3. Zaznacz klon.<br />

4. Na palecie Instance, w polu Name , wpisz<br />

unikalna nazwe dla twojego klonu klipu<br />

filmowego (rys. 5.3).<br />

Od teraz klon klipu filmowego moze byc<br />

identyfikowany w srodowisku ActionScript<br />

za pomoca utworzonej nazwy.<br />

Nazywanie klonów<br />

Rys. 5.3. Ustawienia w palecie Instance dla klipu<br />

filmowego. Nazwa tego obiektu klipu filmowego<br />

to myCircle<br />

119


Rozdzial 5.<br />

Wskazówka<br />

• Nazwa symbolu twojego klipu filmowego<br />

(ta, która pojawia sie w bibliotece) oraz<br />

nazwa, która wprowadzasz na palecie<br />

Instance, to dwa rózne identyfikatory<br />

(rys. 5.4). Nazwa pojawiajaca sie<br />

w bibliotece jest tylko wlasciwoscia<br />

symbolu, która pelni funkcje organizatora.<br />

Nazwa wpisywana na palecie Instance jest<br />

wazniejsza, bowiem stanowi wlasciwa<br />

nazwe obiektu i bedzie uzywana<br />

w sciezkach dostepu. Chociaz obie nazwy<br />

moga byc takie same, staraj sie nadawac<br />

symbolom ogólne, a klonom bardziej<br />

specyficzne nazwy – dla lepszego<br />

rozróznienia miedzy nimi.<br />

Nazwa symbolu<br />

klipu filmowego<br />

Nazywanie klonów<br />

Nazwa klonu klipu filmowego<br />

Rys. 5.4. Nazwa symbolu klipu filmowego<br />

pojawia sie w bibliotece, podczas gdy nazwa<br />

klipu widnieje na palecie Instance<br />

120


Zarzadzanie zasobami Flasha<br />

Sciezki dostepu<br />

Sciezka dostepu jest w zasadzie nazwa<br />

obiektu, ewentualnie grupa nazw obiektów<br />

oddzielonych kropkami, co pozwala Flashowi<br />

okreslic, gdzie znajduje sie wskazany obiekt.<br />

Przejscie do edycji listwy czasowej klipu<br />

filmowego wymaga podania sciezki dostepu<br />

do tego klipu oraz podstawowej akcji. Sciezka<br />

dostepu wskazuje na miejsce, w którym nalezy<br />

szukac klonu klipu filmowego, natomiast akcja<br />

decyduje o tym, co Flash ma z owym klonem<br />

zrobic. Podstawowe akcje kontrolujace proces<br />

odtwarzania to Go To, Play i Stop.<br />

Na przyklad, jesli nadales dla klonu klipu<br />

filmowego nazwe bigClock, to napisanie<br />

wyrazenia jezyka ActionScript<br />

bigClock.gotoAndStop(37) spowoduje<br />

przejscie do klatki 37. klonu klipu filmowego<br />

bigClock i zatrzymanie odtwarzania.<br />

W przykladzie tym sciezka dostepu jest<br />

bigClock, a akcja gotoAndStop.<br />

W bloku edycji parametrów palety akcji<br />

znajduje sie ikona przycisku o nazwie Insert<br />

a target path, otwierajaca okno dialogowe<br />

Insert Target Path, a to z kolei pozwala<br />

wprowadzic sciezke dostepu (rys. 5.5). W oknie<br />

tym ukazuje sie drzewo hierarchiczne<br />

wszystkich klonów klipów filmowych.<br />

Wystarczy wybrac pozadany klip, a pojawi sie<br />

wlasciwa dla niego sciezka dostepu.<br />

Drzewo<br />

hierarchii<br />

plików<br />

Dostepne listwy<br />

czasowe<br />

Pole okreslania<br />

sciezki dostepu<br />

Sciezki dostepu<br />

Paleta akcji<br />

Ikona przycisku<br />

Insert a target path<br />

Okno dialogowe<br />

Insert Target Path<br />

Rys. 5.5. Okno dialogowe Insert Target Path umozliwia wybranie sciezki<br />

dostepu przez klikniecie ikony klipu filmowego widocznego w hierarchii<br />

121


Rozdzial 5.<br />

Sciezki dostepu<br />

W celu utworzenia sciezki dostepu<br />

do klonu klipu filmowego<br />

z poziomu glównej listwy czasowej:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie razem z klonem klipu filmowego<br />

(rys. 5.6).<br />

Przycisk na glównej listwie czasowej bedzie<br />

kontrolowal listwe czasowa klipu<br />

filmowego.<br />

3. Zaznacz klon przycisku, a nastepnie otwórz<br />

palete akcji.<br />

4. Wybierz Actions/evaluate . Ponizej<br />

manipulatora zdarzenia on (release)<br />

pojawi sie nowa linia skryptu (rys. 5.7).<br />

5. W bloku edycji parametrów kliknij przycisk<br />

Insert a target path. Pojawi sie okno<br />

dialogowe Insert Target Path.<br />

6. Zaznacz opcje Relative w polu Mode,<br />

a nastepnie wybierz klon klipu filmowego,<br />

dostepny w drzewie hierarchii. W polu<br />

Target pojawi sie sciezka dostepu (rys. 5.8).<br />

Klon<br />

przycisku<br />

Klon klipu<br />

filmowego<br />

o nazwie<br />

bigClock<br />

Rys. 5.6. Klony przycisku i klipu filmowego<br />

na glównej listwie czasowej<br />

Rys. 5.7. Uzyj wyrazenia evaluate dla<br />

okreslenia sciezki dostepu do klipu oraz<br />

odpowiedniej dla niego akcji<br />

Rys. 5.8. Okno dialogowe Insert Target Path.<br />

Wybór klipu filmowego widocznego w oknie<br />

hierarchii powoduje podstawienie sciezki<br />

dostepu w polu Target<br />

122


Zarzadzanie zasobami Flasha<br />

Rys. 5.9. Pole Expression palety akcji<br />

Rys. 5.10. Akcja gotoAndStop(37) stanowi<br />

metode obiektu klipu filmowego o nazwie<br />

bigClock. Wyrazenie to powoduje przejscie<br />

do klatki 37. na listwie czasowej klipu bigClock<br />

i zatrzymanie odtwarzania<br />

Rys. 5.11. Umiesc klon klipu filmowego<br />

smallClock wewnatrz klipu bigClockMC.<br />

Osadzonemu klonowi klipu filmowego nadaj<br />

nazwe smallClock, a klonowi klipu – widocznego<br />

na scenie – nazwe bigClock. Teraz bigClock jest<br />

rodzicem, a smallClock – dzieckiem<br />

7. Kliknij OK. Sciezka dostepu bedzie teraz<br />

widniala w polu Expression (rys. 5.9).<br />

8. W polu Expression, zaraz za sciezka dostepu,<br />

wpisz kropke, a nastepnie pozadana metode<br />

wraz z odpowiednimi argumentami (rys. 5.10).<br />

9. Przetestuj swój film. Utworzony klon<br />

przycisku kontroluje teraz listwe czasowa –<br />

wskazanego sciezka dostepu – klipu<br />

filmowego.<br />

Mozliwe jest takze umieszczanie jednego klipu<br />

filmowego w drugim. W takim ukladzie jeden<br />

z nich pelni role obiektu-rodzica, a drugi jest<br />

obiektem-dzieckiem. Jakiekolwiek zmiany<br />

dokonane na obiekcie -rodzicu beda mialy<br />

wplyw jednoczesnie na obiekt -dziecko. Jesli<br />

chcialbys kontrolowac listwe czasowa klipu<br />

filmowego-dziecka z poziomu glównej listwy<br />

czasowej, w sciezce dostepu musza znalezc sie<br />

nazwy zarówno dziecka, jak i rodzica.<br />

W celu utworzenia sciezki dostepu<br />

do klonu klipu filmowego-dziecka<br />

z poziomu glównej listwy czasowej:<br />

1. Utwórz symbol klipu filmowego, a nastepnie<br />

umiesc jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz kolejny symbol klipu filmowego,<br />

umieszczajac go wewnatrz pierwszego<br />

z symboli. Nadaj nowemu klonowi nazwe,<br />

korzystajac z palety Instance (rys. 5.11).<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie w glównej listwie czasowej.<br />

Przycisku tego uzyjemy do kontrolowania<br />

listwy czasowej klipu filmowego-dziecka.<br />

4. Zaznacz klon przycisku i otwórz palete<br />

akcji. Wybierz Actions/evaluate.<br />

5. W bloku edycji parametrów kliknij przycisk<br />

Insert a target path, a nastepnie – w oknie<br />

dialogowym Insert Target Path – wybierz<br />

tryb Relative (w polu Mode).<br />

Sciezki dostepu<br />

123


Rozdzial 5.<br />

6. W drzewie hierarchii obiektów kliknij ikone<br />

trójkata widniejaca przy ikonie klipu<br />

filmowego-rodzica. Drzewo zostanie<br />

rozwiniete, pokazujac klip filmowy-dziecko,<br />

zawarty w klipie-rodzicu (rys. 5.12).<br />

7. Jako sciezke dostepu wybierz klip filmowydziecko.<br />

Kliknij OK. W polu Expression<br />

palety akcji pojawi sie sciezka dostepu<br />

w postaci: Parent.Child.<br />

8. W polu Expression dopisz kropke,<br />

a nastepnie akcje dla obiektu, do którego<br />

utworzyles sciezke dostepu.<br />

9. Przetestuj film. Kiedy klikniesz i zwolnisz<br />

przycisk, akcja zostanie wykonana na klipie<br />

filmowym-dziecku, ale nie na klipie-rodzicu<br />

(rys. 5.13). Z wyjatkiem relacji rodzicdziecko,<br />

listwy czasowe poszczególnych<br />

klipów pozostaja niezalezne.<br />

Kliknij te ikone<br />

trójkata...<br />

... drzewko zostanie<br />

rozwiniete<br />

Rys. 5.12. Drzewo hierarchii obiektów<br />

w oknie dialogowym Insert Target Path.<br />

Hierarchia ta ukazuje relacje rodzic-dziecko<br />

Sciezki dostepu<br />

Rys. 5.13. Klikniecie przycisku (u góry)<br />

powoduje skok do klatki 5. klipu filmowegodziecka<br />

smallClock i zatrzymanie<br />

odtwarzania, podczas gdy odtwarzanie klipu<br />

filmowego-rodzica bigClock jest caly czas<br />

kontynuowane<br />

124


Zarzadzanie zasobami Flasha<br />

Wzgledne i bezwzgledne sciezki<br />

dostepu<br />

W oknie dialogowym Flasha Insert Target<br />

Path mozesz wybierac pomiedzy dwiema<br />

opcjami: Relative (wzglednie) oraz Absolute<br />

(bezwzglednie). W poprzednim przykladzie,<br />

metoda bigClock.smallClock.<br />

gotoAndStop(5) pochodzila od przycisku<br />

rezydujacego w glównej listwie czasowej.<br />

Kiedy Flash wykonuje te akcje, próbuje<br />

odnalezc w tej listwie obiekt o nazwie<br />

bigClock, zawierajacy w sobie inny obiekt,<br />

nazwany smallClock. Jest to przyklad sciezki<br />

korzystajacej z trybu Relative . Wszystko jest<br />

wzgledne w stosunku do miejsca, w którym<br />

rezyduje wyrazenie akcji – w tym przypadku<br />

jest to glówna listwa czasowa. Alternatywna<br />

metoda wstawiania sciezki dostepu jest uzycie<br />

trybu Absolute, w którym nie istnieje zadne<br />

ujecie odniesienia. Mozna przyjac, ze wzgledne<br />

(Relative ) sciezki dostepu sa jak wytyczne<br />

podawane z punktu widzenia twojej biezacej<br />

lokacji, w rodzaju „idz dwa bloki dalej, a potem<br />

skrec w lewo”. Natomiast bezwzgledne<br />

(Absolute) sciezki dostepu dzialaja niezaleznie<br />

od miejsca, w którym sie znajdujesz,<br />

przypominajac wskazówke „udaj sie na ul.<br />

Chopina 6”.<br />

W jakim celu umozliwiono ci wybór pomiedzy<br />

tymi dwoma trybami? Otóz, gdybys chcial<br />

wskazac sciezke dostepu do listwy czasowej<br />

znajdujacej sie na wyzszym poziomie wzgledem<br />

listwy, nad która aktualnie pracujesz, musisz<br />

posluzyc sie trybem Absolute. Wyobraz sobie<br />

na przyklad, ze chcialbys, aby jakis klip<br />

filmowy kontrolowal glówna listwe czasowa,<br />

ta, w której rezyduje. Tryb Relative<br />

udostepnilby ci jedynie listwy czasowe<br />

zawierajace sie w aktywnej w tym momencie<br />

listwie. Dopiero w trybie Absolute widzialbys<br />

wszystkie dostepne listwy czasowe, niezaleznie<br />

od poziomu, na jakim sie aktualnie znajdujesz.<br />

Tryb Absolute daje ci niejako widok z lotu<br />

ptaka jednoczesnie na wszystkie klipy filmowe<br />

obecne na scenie.<br />

Sciezki wzgledne i bezwzgledne<br />

125


Rozdzial 5.<br />

Listwy czasowe this oraz _root<br />

W trybie Relative biezaca listwa czasowa nosi<br />

nazwe this. Wszystkie inne listwy czasowe sa<br />

wzgledne wobec this. W trybie Absolute,<br />

listwa czasowa glównego filmu jest nazywana<br />

_root, a wszystkie inne listwy sa<br />

zorganizowane wzgledem listwy czasowej<br />

_root (rys. 5.14).<br />

Klip<br />

filmowy<br />

bigClock<br />

Klip filmowy<br />

smallClock<br />

(wewnatrz<br />

klipu bigClock)<br />

Tryb Absolute<br />

Tryb Relative<br />

Sciezki wzgledne i bezwzgledne<br />

W celu utworzenia sciezki dostepu<br />

do glównej listwy czasowej<br />

z poziomu klonu klipu filmowego:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

wewnatrz symbolu klipu filmowego.<br />

Przycisku tego uzyjesz do kontrolowania<br />

glównej listwy czasowej (rys. 5.15).<br />

3. Zaznacz klon przycisku i otwórz palete<br />

akcji. Wybierz Actions/evaluate.<br />

4. W bloku edycji parametrów kliknij przycisk<br />

Insert a target path.<br />

5. W oknie dialogowym Insert Target Path<br />

wybierz tryb Absolute. Ujrzysz wszystkie<br />

klipy filmowe oraz listwe czasowa<br />

glównego filmu, a nie tylko te, które sa<br />

zawarte w listwie czasowej biezacego klipu<br />

filmowego.<br />

6. Zaznacz glówna listwe czasowa jako sciezke<br />

dostepu. Kliknij OK. W polu Expression<br />

pojawi sie sciezka dostepu _root.<br />

7. W polu Expression wpisz kropke, a dalej<br />

akcje odpowiadajaca obiektowi, dla którego<br />

wskazales sciezke dostepu (rys. 5.16).<br />

Przycisk<br />

Rys. 5.14. Sciezki dostepu w trybach Absolute<br />

oraz Relative. Powyzszy przyklad ukazuje<br />

przycisk oraz klip filmowy smallClock,<br />

zawarte w klipie filmowym bigClock. Kiedy<br />

przypisujemy sciezke dostepu do przycisku,<br />

this w trybie Relative odnosi sie do bigClock<br />

w trybie Absolute<br />

Rys. 5.15. Umiesc klon przycisku wewnatrz<br />

klipu filmowego bigClock. Klon klipu<br />

filmowego (o nazwie bigClock) znajduje<br />

sie na scenie<br />

Rys. 5.16. Pole Expression na palecie akcji<br />

126


Zarzadzanie zasobami Flasha<br />

Rys. 5.17. Przycisk wewnatrz klipu filmowego<br />

bigClock powoduje przeskok do klatki 2. na<br />

listwie _root lub glównej listwie czasowej<br />

Klip filmowy<br />

secondClock<br />

To jest klatka 2<br />

Klip Filmowy<br />

bigClock<br />

Przycisk (wewnatrz<br />

klipu bigClock)<br />

Rys. 5.18. Dwa klipy filmowe (z przyciskiem<br />

wewnatrz jednego z nich) umieszczone na scenie<br />

8. Przetestuj film. Kiedy klikniesz i zwolnisz<br />

przycisk, Flash przejdzie z biezacej listwy<br />

czasowej do listwy _root i wykona<br />

okreslona tam akcje (rys. 5.17).<br />

W celu utworzenia sciezki dostepu<br />

do klonu klipu filmowego<br />

z poziomu innego klonu<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz jeszcze jeden symbol klipu<br />

filmowego i takze umiesc jego klon na<br />

scenie. Korzystajac z palety Instance,<br />

nadaj mu nazwe.<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

wewnatrz pierwszego z utworzonych<br />

symboli klipów filmowych.<br />

Przycisku tego uzyjesz do kontrolowania<br />

drugiego klipu filmowego (rys. 5.18).<br />

4. Zaznacz klon przycisku i otwórz palete<br />

akcji. Wybierz Actions/evaluate.<br />

5. W bloku edycji parametrów kliknij przycisk<br />

Insert a target path. W oknie dialogowym<br />

Insert Target Path wybierz tryb Absolute.<br />

6. Zaznacz klon drugiego klipu filmowego.<br />

Kliknij OK.<br />

W polu Expression palety akcji pojawi sie<br />

sciezka dostepu _root.secondClock.<br />

7. W polu Expression, zaraz za widniejaca<br />

sciezka, dopisz kropke, a dalej akcje<br />

wybrana dla obiektu, do którego podales<br />

sciezke dostepu.<br />

8. Przetestuj film.<br />

Kiedy klikniesz i zwolnisz przycisk, Flash<br />

odszuka listwe czasowa _root, a nastepnie<br />

przejdzie do obiektu o nazwie secondClock<br />

i wykona przypisana mu akcje (rys. 5.19).<br />

Sciezki wzgledne i bezwzgledne<br />

Rys. 5.19. Akcja przypisana do tego przycisku<br />

jest wykonywana wzgledem klipu filmowego<br />

secondClock rezydujacego w listwie czasowej<br />

_root<br />

127


Rozdzial 5.<br />

Sciezki wzgledne i bezwzgledne<br />

W celu utworzenia sciezki dostepu<br />

do listwy czasowej<br />

konkretnego klipu filmowego:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

wewnatrz symbolu klipu filmowego.<br />

Przycisku tego uzyjesz do kontrolowania<br />

listwy czasowej klipu filmowego (rys. 5.20).<br />

3. Zaznacz klon przycisku i otwórz palete<br />

akcji. Wybierz Actions/evaluate.<br />

4. Kliknij przycisk Insert a target path,<br />

a otworzy sie okno dialogowe Insert<br />

Target Path. Wybierz tryb Relative<br />

i zaznacz this.<br />

lub<br />

Kliknij przycisk Insert a target path,<br />

a otworzy sie okno dialogowe Insert<br />

Target Path. Wybierz tryb Absolute<br />

i zaznacz sciezke dostepu _root.<br />

lub<br />

Nie wybieraj akcji evaluate w punkcie 3.<br />

Zamiast tego, po prostu wybierz<br />

którakolwiek z podstawowych akcji –<br />

Go To, Stop lub Play (rys. 5.21).<br />

Wskazówka<br />

• Uzywanie listew this lub _root dla<br />

podania sciezki dostepu do listwy czasowej<br />

klipu filmowego nie jest konieczne, tak jak<br />

zbedne jest uzywanie ich w nawigacji po<br />

glównej listwie czasowej. To zrozumiale,<br />

ze akcje rezydujace w danym klipie<br />

filmowym odnosza sie do niego lub sa mu<br />

przypisywane.<br />

Rys. 5.20. Umiesc przycisk wewnatrz klipu<br />

filmowego bigClockMC. Klon klipu<br />

filmowego (o nazwie bigClock) znajduje<br />

sie na scenie<br />

Rys. 5.21. Trzy sposoby na utworzenie sciezki<br />

dostepu do listwy czasowej klipu bigClock –<br />

z poziomu tego wlasnie klipu filmowego<br />

128


Zarzadzanie zasobami Flasha<br />

Rys. 5.22. Umiesc przycisk wewnatrz klipu<br />

filmowego smallClock. Klon klipu filmowego<br />

smallClockMC (o nazwie smallClock) znajduje<br />

sie wewnatrz klipu bigClockMC. Klon klipu<br />

filmowego bigClockMC (o nazwie bigClock)<br />

znajduje sie na scenie<br />

Rys. 5.23. Przycisk wewnatrz klipu filmowego<br />

smallClock tworzy sciezke dostepu do klipu<br />

filmowego bigClock za pomoca wyrazenia<br />

okreslajacego wzglednosc _parent<br />

Uzywanie terminu _parent<br />

w sciezkach dostepu<br />

Chociaz niewidoczny w oknie dialogowym<br />

Insert Target Path, termin okreslajacy<br />

wzglednosc _parent moze byc przez ciebie<br />

uzywany do tworzenia sciezek dostepu do klipu<br />

filmowego, usytuowanego o jeden poziom<br />

wyzej w stosunku do biezacej listwy czasowej.<br />

W celu utworzenia sciezki dostepu<br />

do obiektu-rodzica<br />

konkretnego klipu filmowego:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz jeszcze jeden symbol klipu<br />

filmowego i umiesc jego klon wewnatrz<br />

pierwszego klipu. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

wewnatrz klipu filmowego-dziecka<br />

(rys. 5.22).<br />

4. Zaznacz klon przycisku i otwórz palete<br />

akcji. Wybierz Actions/evaluate.<br />

5. W polu Expression wpisz _parent i dalej<br />

kropke oraz wybrana akcje.<br />

6. Przetestuj film.<br />

Kiedy klikniesz i zwolnisz przycisk, Flash<br />

odszuka listwe czasowa biezacego obiektu<br />

(rodzica) i wykona okreslona tam akcje<br />

(rys. 5.23). W tabeli 5.1 oraz na rys. 5. 24<br />

znajdziesz podsumowanie sposobów na<br />

tworzenie wzglednych i bezwzglednych<br />

sciezek dostepu do róznych klipów<br />

filmowych.<br />

Sciezki wzgledne i bezwzgledne<br />

129


Rozdzial 5.<br />

Sciezki wzgledne i bezwzgledne<br />

Dlaczego sciezki wzgledne?<br />

Po co w ogóle uzywac sciezek<br />

wzglednych? Bezwzgledne sciezki<br />

dostepu wydaja sie tworzyc<br />

bezpieczniejsze konstrukcje, poniewaz<br />

jasno identyfikuja obiekt niezaleznie od<br />

tego, na jakim poziomie projektu sie<br />

znajdujesz. Sa jednak co najmniej dwa<br />

przypadki, kiedy s ciezki wzgledne<br />

bywaja uzyteczne.<br />

Po pierwsze, kiedy tworzysz klip<br />

filmowy z akcjami oddzialujacymi na<br />

inne klipy filmowe wzgledne<br />

w stosunku do pierwszego klipu,<br />

mozesz przemieszczac cala grupe<br />

i ciagle zachowywac dzialajace sciezki<br />

dostepu, uzywajace terminów<br />

okreslajacych wzglednosc. W takiej<br />

sytuacji znacznie latwiej jest pracowac<br />

ze zlozonymi schematami nawigacji,<br />

jako ze mozliwe staje sie kopiowanie,<br />

wklejanie i przemieszczanie<br />

poszczególnych fragmentów bez<br />

przepisywania sciezek dostepu.<br />

Przykladem zastosowania moze byc<br />

zarzadzanie witryna sieciowa<br />

zawierajaca lacza do innych stron. Jesli<br />

miales zamiar utworzyc bezwzgledne<br />

sciezki dostepu do laczy zawierajacych<br />

twoje CV, a nastepnie przeniesc twoja<br />

strone domowa na inny serwer, to<br />

musialbys przepisac sciezki dla<br />

poszczególnych laczy. Bardziej<br />

praktyczna metoda jest utworzenie laczy<br />

na stronie domowej za pomoca<br />

wzglednych sciezek dostepu.<br />

Drugi przypadek ma miejsce wówczas,<br />

gdy dynamicznie tworzysz klipy<br />

filmowe. Wkrótce nauczysz sie, jak<br />

tworzyc obiekty klipów filmowych na<br />

bazie istniejacych klipów i nadawac im<br />

nazwy „w locie” za pomoca jezyka<br />

ActionScript. W takich sytuacjach klipy<br />

filmowe nie pozostaja statyczne<br />

i wzgledne sciezki dostepu potrzebne<br />

sa do tego, zeby je wszystkie ogarnac.<br />

Rys. 5.24. Ilustracja filmu zawierajacego<br />

kilka róznych klipów filmowych. Glówna<br />

listwa czasowa (Scene 1) zawiera klipy<br />

filmowe Square oraz Circle. Klip Triangle<br />

znajduje sie w klipie filmowym Circle. Nazwy<br />

te reprezentuja klony. Tabela 5.1 przedstawia<br />

wzgledne i bezwzgledne sciezki dostepu,<br />

utworzone z poziomu klipu filmowego Circle<br />

(czyli klipu, na którego poziomie aktualnie sie<br />

znajdujesz)<br />

Tabela 5.1. Wzgledne i bezwzgledne<br />

sciezki dostepu<br />

Dostep do... Sciezka Sciezka<br />

(z poziomu bezwzgledna wzgledna<br />

Circle) (Absolute) (Relative )<br />

Scene 1 _root _parent<br />

Square<br />

Circle<br />

Triangle<br />

_root.Square _parent.<br />

Square<br />

_root.Circle This<br />

_root.Circle.<br />

Triangle<br />

Triangle<br />

130


Zarzadzanie zasobami Flasha<br />

Klip filmowy<br />

myMouth<br />

(wewnatrz<br />

klipu<br />

myFace)<br />

Klip filmowy<br />

myFace<br />

Klip filmowy<br />

myEyes<br />

(wewnatrz<br />

klipu myFace)<br />

Rys. 5.25. Zagniezdzone wyrazenia typu with<br />

stanowia odpowiednik zlozonych sciezek dostepu<br />

tworzonych w oparciu o wyrazenia evaluate<br />

Uzywanie akcji with<br />

w tworzeniu sciezek dostepu<br />

Jeszcze inny sposób tworzenia sciezek dostepu<br />

do klipów filmowych polega na wykorzystaniu<br />

akcji with. Akcja ta, w odróznieniu od<br />

evaluate , umozliwia wprowadzenie kilku akcji<br />

w miejsce jednej, które to obiekt bedzie<br />

wykonywal. Wyrazenie zawierajace akcje with<br />

moze wygladac np. tak:<br />

with (bigClock) {<br />

}<br />

gotoAndStop (5)<br />

Zastosowanie akcji with – jak wyzej –<br />

powoduje tymczasowe ustawienie sciezki<br />

dostepu do obiektu bigCl ock, tak wiec<br />

wyrazenie gotoAndStop ujete w klamrach<br />

odnosi sie do tego akurat obiektu. Po<br />

wykonaniu akcji with, jakiekolwiek<br />

pojawiajace sie pózniej wyrazenie odnosi sie<br />

juz do biezacego klipu filmowego.<br />

Wyrazenie with moze równiez zostac<br />

zagniezdzone i oddzialywac na kilka obiektów<br />

jednoczesnie. Oto przyklad:<br />

with (myFace) {<br />

}<br />

with (myEyes) {<br />

}<br />

gotoAndStop (2);<br />

with (myMouth) {<br />

}<br />

gotoAndStop (2);<br />

Takie zagniezdzone wyrazenie daje taki sam<br />

efekt jak ponizsze wyrazenia wykorzystujace<br />

akcje evaluate (rys. 5.25):<br />

myFace.myEyes.gotoAndStop(2);<br />

myFace.myMouth.gotoAndStop(2);<br />

Uzywanie akcji with<br />

131


Rozdzial 5.<br />

Uzywanie akcji with<br />

W celu wprowadzenia akcji with:<br />

1. Zaznacz przycisk lub ujecie i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/with. W bloku edycji<br />

parametrów pojawi sie pole Object.<br />

3. W polu Object wprowadz sciezke dostepu<br />

lub kliknij przycisk Insert a target path<br />

(rys. 5.26).<br />

4. Wybierz akcje dla wskazanego obiektu.<br />

Akcja ta bedzie widoczna przy wyrazeniu<br />

with jako ujeta w klamry (rys. 5.27).<br />

W celu wprowadzenia<br />

zagniezdzonych akcji with:<br />

1. Zaznacz przycisk lub ujecie i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/with.<br />

3. W polu Object wprowadz pierwsza sciezke<br />

dostepu.<br />

4. Ponownie wybierz Actions/with.<br />

5. W polu Object wprowadz pierwsza<br />

zagniezdzona sciezke dostepu (rys. 5.28).<br />

6. Wybierz akcje dla pierwszego<br />

zagniezdzonego obiektu.<br />

7. Zaznacz zamykajaca klamre pierwszego<br />

zagniezdzonego wyrazenia with<br />

(rys. 5.29). Jezeli tego nie zrobisz przed<br />

przejsciem do nastepnego kroku, drugie<br />

zagniezdzone wyrazenie typu with pojawi<br />

sie wewnatrz poprzedniego.<br />

8. Ponownie wybierz Actions/with.<br />

9. W polu Object wprowadz druga<br />

zagniezdzona sciezke dostepu, a nastepnie<br />

wybierz akcje dla drugiego zagniezdzonego<br />

obiektu (rys. 5.30).<br />

Rys. 5.26. Akcja with widoczna w oknie<br />

palety akcji. Pole Object zawiera sciezke<br />

dostepu do obiektu myFace<br />

Rys. 5.27. Akcja<br />

gotoAndStop(2), jak<br />

równiez wszystkie<br />

inne akcje ujete<br />

w wewnetrznych<br />

klamrach odnosza sie<br />

do obiektu myFace<br />

Rys. 5.28. Akcja with<br />

(myEyes) zostala<br />

zagniezdzona w akcji<br />

with (myFace)<br />

Rys. 5.29. Zaznaczenie<br />

zamykajacej klamry<br />

daje pewnosc, ze twoje<br />

nastepne wyrazenie<br />

zostanie wstawione<br />

wewnatrz akcji with<br />

(myFace), a nie akcji<br />

with (myEyes)<br />

Rys. 5.30.<br />

Ostateczna<br />

postac<br />

zagniezdzonych<br />

wyrazen z akcja<br />

with<br />

132


Zarzadzanie zasobami Flasha<br />

Rys. 5.31. Opcje wyboru skladni dostepne sa<br />

u dolu okna dialogowego Insert Target Path<br />

Tabela 5.2. Odpowiedniki oznaczen w skladni<br />

uzywajacej ukosnika oraz w skladni z kropka<br />

Kropka<br />

. /<br />

_root /<br />

this .<br />

_parent ..<br />

Ukosnik<br />

. : (separator zmiennych)<br />

Ukosnik zamiast kropki<br />

i akcja Tell Target<br />

Jak dotad, w konstruowaniu sciezek dostepu<br />

uzywales kropki do oddzielania zagniezdzonych<br />

obiektów klipów filmowych. Jednak Flash<br />

umozliwia oprócz tego wprowadzanie sciezek<br />

dostepu z ukosnikiem podstawianym w miejsce<br />

kropki. Taka skladnia (z ukosnikiem)<br />

funkcjonowala w poprzednich wersjach<br />

programu, dlatego tez moze stanowic wygodna<br />

alternatywe dla uzytkowników zwiazanych od<br />

dawna z Flashem. W oknie dialogowym Insert<br />

Target Path mozesz zdecydowac, czy chcesz<br />

uzywac ukosnika, czy tez kropki (rys. 5.31).<br />

Ukosnika uzywa sie w sposób podobny do tego,<br />

jak komputer przedstawia organizacje<br />

katalogów na dysku – z ukosnikiem wlasnie,<br />

jako znakiem oddzielajacym kolejne katalogi.<br />

I tak jak w przypadku komputerowych<br />

katalogów, mozesz przebiegac hierarchie listew<br />

czasowych w góre lub w dól za pomoca kropek.<br />

Pojedyncza kropka wskazuje na biezaca listwe<br />

czasowa, dwie kropki – nastepna listwe powyzej<br />

biezacej. Pojedynczy ukosnik pokazuje glówna<br />

listwe czasowa (root).<br />

Zwróc uwage, jak w skladni z ukosnikiem<br />

uzywa sie kropek do wskazywania sciezek<br />

wzglednych – widac, jak bardzo mylace moze<br />

sie okazac jednoczesne uzywanie skladni<br />

z kropka oraz skladni z ukosnikiem. Na<br />

szczescie Flash nie pozwala na laczenie tych<br />

dwóch skladni, poniewaz zapisane w ten<br />

sposób wyrazenia bylyby niezrozumiale. Jesli<br />

wprowadzasz wyrazenie evaluate, wywolujace<br />

metode Go To obiektu, w przypadku skladni<br />

uzywajacej kropki wygladaloby to tak:<br />

Parent.Child.gotoAndStop(5);<br />

Jednak w skladni uzywajacej ukosnika<br />

funkcjonalnosc wyrazenia ginie, jako ze nie<br />

ma sensu zapis:<br />

Parent/Child.gotoAndStop(5);<br />

Ukosnik i akcja Tell Target<br />

133


Rozdzial 5.<br />

Ukosnik i akcja Tell Target<br />

Skladnia uzywajaca ukosnika nie dziala<br />

z wyrazeniami evaluate, podobnie jak<br />

z wyrazeniami with. Z tego typu skladni<br />

powinno sie w zasadzie korzystac wylacznie<br />

w towarzystwie akcji Tell Target, której<br />

uzywanie jest samo w sobie zniechecajace.<br />

Akcja Tell Target, podobnie jak skladnia<br />

z ukosnikiem, stanowi spadek po<br />

wczesniejszych wersjach Flasha. Wlasciwie<br />

byla to bardzo potezna w dzialaniu akcja, jednak<br />

nowe mozliwosci wywolywania metod<br />

i szacowania wlasciwosci obiektów za pomoca<br />

skladni z kropka czynia akcje Tell Target<br />

zbedna. Chociaz wiec mozesz wywolac akcje<br />

Tell Target z palety akcji, program traktuje ja<br />

jako odrzucona. Odrzucone akcje nie sa<br />

polecane z powodu ich niezgodnosci z nowa<br />

skladnia oraz wyrazeniami jezyka ActionScript.<br />

Wszystkie odrzucone akcje mozesz obejrzec<br />

w menu Options na palecie akcji (rys. 5.32).<br />

Najlepiej bedzie unikac skladni uzywajacej<br />

ukosnika oraz akcji Tell Target z powodu ich<br />

silnych zwiazków z przeszloscia, a zamiast tego<br />

skoncentrowac sie na korzystaniu z akcji<br />

evaluate , with oraz na poslugiwaniu sie<br />

skladnia oparta na kropce.<br />

Rys. 5.32. Wybranie Show Deprecated Syntax<br />

z menu Options na palecie akcji podswietla<br />

w oknie narzedzi palety wszystkie akcje, które<br />

stanowia pozostalosci poprzednich wersji<br />

Flasha, a ich dluzsze uzywanie nie jest<br />

polecane<br />

134


Zarzadzanie zasobami Flasha<br />

Rys. 5.33. Klip filmowy w roli pojemnika. Ten<br />

klip zawiera akcje stop w pierwszym ujeciu<br />

kluczowym. Pozostale – oznaczone etykieta –<br />

ujecia kluczowe moga przechowywac przyciski,<br />

grafike, animacje i kazdy inny rodzaj informacji<br />

charakterystyczny dla Flasha. Do tego rodzaju<br />

informacji mozna latwo dotrzec, podajac sciezke<br />

dostepu i przeskakujac do zadanego ujecia<br />

Rys. 5.34. Klip filmowy w formie menu<br />

rozwijanego zawiera jednoczesnie dwa stany<br />

menu – rozwiniete i zwiniete<br />

Klipy filmowe jako pojemniki<br />

Z tego,co dotychczas zaprezentowalismy w tym<br />

rozdziale, miales okazje nauczyc sie, w jaki<br />

sposób nazywac twoje obiekty klipów<br />

filmowych, jak tworzyc do nich sciezki dostepu<br />

oraz nawigowac po ich listwach czasowych<br />

z poziomu dowolnej innej listwy czasowej<br />

twojego filmu. Ale jakie znaczenie ma ta<br />

zdolnosc kontrolowania listwy czasowej klipu<br />

filmowego dla prawdziwej interaktywnosci<br />

tworzonych projektów Flasha? Kluczem do<br />

rozwiazania tej kwestii jest potraktowanie<br />

klipów filmowych jako pojemników do<br />

przechowywania róznych elementów –<br />

animacji, przycisków, dzwieku, nawet danych.<br />

Przemieszczajac sie po listwie czasowej klipu<br />

filmowego do przodu i do tylu, czy tez<br />

odtwarzajac poszczególne jej partie, zyskujesz<br />

dostep do dowolnych sposród wymienionych<br />

elementów i to niezaleznie od tego, co aktualnie<br />

dzieje sie na scenie. W starszych wersjach<br />

Flasha uzywanie klipów filmowych w tym<br />

znaczeniu bylo jedynym sposobem na<br />

symulowanie zmiennych, liczników i innych<br />

rodzajów znaków-wypelniaczy. Chociaz wiec<br />

rozbudowany we Flashu 5 jezyk ActionScript<br />

oferuje nowoczesne zamienniki tych starych<br />

technik, ciagle efektywne jest poslugiwanie sie<br />

klipami filmowymi jako pojemnikami,<br />

szczególnie pojemnikami na grafike i animacje<br />

(rys. 5.33).<br />

Na przyklad, powszechnym sposobem<br />

wykorzystania klipów filmowych jest<br />

wprowadzenie na ich listwy czasowe<br />

odmiennych stanów, które przechodza jeden<br />

w drugi. W rozdziale 4. budowales rozwijane<br />

menu, które zachowuja sie wlasnie w taki<br />

sposób. W ogóle menu rozwijane jest wlasciwie<br />

takim obiektem klipu filmowego, zmieniajacym<br />

swój stan miedzy rozwinietym i zwinietym.<br />

Przyciski zawarte w klipie filmowym<br />

kontroluja, który z dwóch stanów mozesz<br />

aktualnie ogladac, a jednoczesnie umozliwiaja<br />

nawigacje poza listwa czasowa klipu filmowego<br />

(rys. 5.34).<br />

Klipy filmowe jako pojemniki<br />

135


Rozdzial 5.<br />

Klipy filmowe jako pojemniki<br />

Innym przykladem jest przycisk wyboru (radio<br />

button). Tworzenie przycisku wyboru jest<br />

sposobem definiowania dwóch róznych stanów,<br />

zmieniajacych sie pomiedzy stanem wlaczenia<br />

(on) i wylaczenia (off).<br />

W celu utworzenia przycisku wyboru:<br />

1. Utwórz symbol klipu filmowego. Przejdz do<br />

trybu edycji i wstaw nowe ujecie kluczowe.<br />

2. Nadaj pierwszemu ujeciu kluczowemu<br />

etykiete on, a drugiemu off.<br />

3. Wstaw nowa warstwe. Zaznacz w nowej<br />

warstwie ujecie kluczowe odpowiadajace<br />

etykiecie off i otwórz palete akcji. Wybierz<br />

Basic Actions/Stop.<br />

Akcja stop zabezpiecza klip filmowy przed<br />

odtwarzaniem bez konca.<br />

4. Wstaw jeszcze jedna warstwe. Utwórz<br />

symbol przycisku i umiesc jeden z jego<br />

klonów w ujeciu kluczowym<br />

odpowiadajacym etykiecie off; kolejny klon<br />

umiesc w ujeciu kluczowym<br />

odpowiadajacym etykiecie on symbolu klipu<br />

filmowego.<br />

5. Zaznacz pierwszy klon przycisku i otwórz<br />

palete akcji. Przypisz mu akcje:<br />

on (release) {<br />

}<br />

gotoAndStop (on);<br />

6. Zaznacz drugi klon przycisku i przypisz mu<br />

akcje:<br />

on (release) {<br />

}<br />

gotoAndStop (off);<br />

7. Utwórz w nowych warstwach grafiki dla<br />

obydwu etykiet, on i off, obrazujace ich stan<br />

i postac (rys. 5.35).<br />

8. Przeciagnij klon klipu filmo wego<br />

z biblioteki na scene do glównej listwy<br />

czasowej. Przetestuj film.<br />

Rys. 5.35. Klip filmowy przycisku wyboru<br />

zawiera akcje stop w pierwszym ujeciu<br />

kluczowym i dwa zmieniajace sie stany.<br />

Przycisk w stanie off (u góry) powoduje<br />

przejscie do stanu on (u dolu) i odwrotnie<br />

136


Zarzadzanie zasobami Flasha<br />

Puste pierwsze<br />

ujecie<br />

kluczo we<br />

Rys. 5.36. Klip filmowy z pustym pierwszym<br />

ujeciem kluczowym bedzie niewidoczny na scenie.<br />

Klip ten zawiera akcje Stop w warstwie Layer 2<br />

i grafike w warstwie Layer 1, startujaca<br />

w klatce 2<br />

Klon klipu<br />

filmowego<br />

Rys. 5.37. Klon klipu filmowego z pustym<br />

pierwszym ujeciem kluczowym pojawia sie<br />

w postaci pustego kóleczka<br />

Akcja Stop<br />

Wszystko, co robisz, tworzac niewidzialny<br />

przycisk, ma takze zastosowanie wobec klipu<br />

filmowego. To znaczy, pierwsze widoczne dla<br />

uzytkownika ujecie kluczowe pozostawia sie<br />

puste, dzieki czemu klon jest poczatkowo<br />

niewidoczny na scenie. Jesli pierwsze ujecie<br />

kluczowe klipu filmowego jest puste i zawiera<br />

akcje kontrolujaca ujecia stop, zatrzymujaca<br />

odtwarzanie w tym miejscu, mozesz decydowac<br />

o tym, w którym momencie wyswietlic inne<br />

ujecia z listwy czasowej tego klipu filmowego.<br />

Przykladowo, móglbys stworzyc klip filmowy<br />

przedstawiajacy eksplozje, ale zostawiajac puste<br />

pierwsze ujecie kluczowe. Umiesc ten klip<br />

filmowy nad ilustracja lodzi podwodnej<br />

i w odpowiednim czasie przejdz do kolejnego<br />

ujecia, zeby odslonic eksplozje.<br />

Zauwaz, ze istnieja jeszcze inne sposoby<br />

na wykorzystanie jezyka ActionScript do<br />

ukrywania i odslaniania zawartosci klipu<br />

filmowego, a poznasz je w nastepnych<br />

rozdzialach. Jednak pamietanie zarówno<br />

o metodzie prostej (bazujacej na ujeciach,<br />

jak zilustrowano wyzej), jak i zaawansowanej<br />

(bazujacej bezposrednio na skrypcie) pomoze ci<br />

podjac nowe wyzwania zwiazane z tworzeniem<br />

animacji i budowaniem interaktywnosci.<br />

W celu utworzenia<br />

„niewidzialnego” klipu filmowego:<br />

1. Utwórz nowy symbol klipu filmowego<br />

i dodaj nowe ujecie kluczowe.<br />

2. Zaznacz pierwsze ujecie kluczowe i otwórz<br />

palete akcji. Wybierz Basic Actions/Stop.<br />

3. Zostaw pierwsze ujecie kluczowe puste<br />

i zacznij umieszczac w drugim ujeciu<br />

kluczowym grafike, animacje lub przyciski<br />

(rys. 5.36).<br />

4. Przeciagnij klon klipu filmowego<br />

z biblioteki na scene do glównej listwy<br />

czasowej.<br />

Klon pojawi sie na scenie w postaci pustego<br />

kóleczka (rys. 5.37). Reprezentuje ono punkt<br />

srodkowy klonu, dzieki czemu mozliwe staje<br />

sie precyzyjne umieszczenie klonu<br />

w wybranym miejscu.<br />

Klipy filmowe jako pojemniki<br />

137


Manipulatory klipów filmowych<br />

Rozdzial 5.<br />

Manipulatory zdarzen<br />

klipów filmowych<br />

Jeden ze sposobów, w jaki obiekt klipu<br />

filmowego komunikuje sie w srodowisku<br />

Flasha, polega na wykorzystaniu jego wlasnego<br />

manipulatora zdarzen, zwanego Clip Event<br />

(zdarzenie klipu filmowego). Miales juz<br />

sposobnosc zobaczyc, jak zdarzenia myszy,<br />

zdarzenia klawiaturowe i obiekt Key wykrywaja<br />

uzycie myszy lub klawiatury. Zdarzenie klipu<br />

filmowego jest wyjatkowe pod tym wzgledem,<br />

ze obejmuje nie tylko reakcje czynione za<br />

pomoca my szy czy klawiatury, ale i kilka mniej<br />

oczywistych zdarzen, w rodzaju wczytywania<br />

i usuwania klipu filmowego, odtwarzania<br />

poszczególnych klatek klipu filmowego<br />

i wczytywania do klipu dodatkowych danych<br />

z zewnatrz (rys. 5.38). Zwiazek miedzy tymi<br />

zdarzeniami polega na tym, ze wszystkie one<br />

sa przypisane do klonu klipu filmowego. Akcje<br />

wykonywane przez zdarzenia klipu filmowego<br />

sa zwiazane z tym klonem, dopóki nie ustali sie<br />

inaczej.<br />

Zdarzenia klipu filmowego sa uzywane<br />

w róznych wariacjach podstawowego kontekstu<br />

ich zastosowania. Na przyklad, Mouse up,<br />

Mouse down, Key up i Key down po prostu<br />

wykrywaja moment, w którym wystepuja te<br />

podstawowe zdarzenia (odpowiednio:<br />

wcisniecie – zwolnienie klawisza myszy,<br />

wcisniecie – zwolnienie klawisza na<br />

klawiaturze). Jako ze powyzsze zdarzenia sa<br />

przypisane do klipu filmowego, a nie do<br />

przycisku, nie istnieje strefa aktywna (Hit),<br />

a zdarzenia Mouse down oraz Mouse up sa<br />

wykrywane w kazdym punkcie sceny. Podobnie<br />

zdarzenia Key up i Key down nie zawieraja<br />

specyficznej informacji o tym, który klawisz<br />

mialby byc wcisniety, wiec dowolny klawisz<br />

moze wyzwolic zdarzenia.<br />

Zwykle jednak zdarzenia klipu filmowego sa<br />

uzywane w polaczeniu z drugim zestawem<br />

wyrazen ActionScript, sluzacym do<br />

maksymalnego wyzyskiwania zdarzen lub<br />

dokonywania dodatkowych manipulacji<br />

informacja zwiazana ze zdarzeniem.<br />

Rys. 5.38. Opcje zdarzenia klipu filmowego<br />

dostepne dla akcji onClipEvent<br />

138


Zarzadzanie zasobami Flasha<br />

Rys. 5.39. Zdarzenie klipu filmowego Mouse up<br />

Zdarzenia Key up i Key down w kombinacji<br />

z wyrazeniami warunkowy mi, sprawdzajacymi,<br />

który klawisz nacisnieto (za pomoca obiektu<br />

Key), przynosza lepsze efekty w detekcji<br />

nacisnietego klawisza, niz którekolwiek z nich –<br />

zastosowane pojedynczo. W poprzednim<br />

rozdziale, na przyklad, utworzyles wyrazenie<br />

warunkowe z obiektem Key, ale musiales<br />

jednoczesnie stworzyc petle w glównej listwie<br />

czasowej, aby wyrazenie bylo nieustannie<br />

sprawdzane. Po przypisaniu zdarzenia Key up<br />

lub Key down do klipu filmowego nie bedziesz<br />

wiecej potrzebowal petli.<br />

Zdarzenie EnterFrame jest wyzwalane zgodnie<br />

z dana predkoscia odtwarzania (FPS) filmu. Tak<br />

wiec, jesli wynosi ona 12 klatek na sekunde,<br />

zdarzenie to jest wyzwalane 12 razy w ciagu<br />

sekundy. Warto zwrócic uwage, ze wyrazenia<br />

przypisane do zdarzenia EnterFrame Flash<br />

bedzie wykonywal nieustannie. Skoro klipy<br />

filmowe naturalnie sie zapetlaja, to i wyrazenia<br />

przypisane do zdarzenia EnterFrame beda<br />

wykonywane nieprzerwanie.<br />

Takze zdarzenie Mouse move jest uzywane<br />

w zwiazku z dodatkowymi wyrazeniami,<br />

umozliwiajac sledzenie polozenia kursora.<br />

Kiedy tylko mysz zostanie przesunieta,<br />

zaktualizowana zostanie jej pozycja. Nauczysz<br />

sie wykorzystywac te i inne zdarzenia klipu<br />

filmowego w kolejnych rozdzialach,<br />

podejmujacych zagadnienia zwiazane<br />

z kontrolowaniem wlasciwosci klipów<br />

filmowych i wprowadzaniem do Flasha<br />

róznych elementów z zewnatrz.<br />

W celu wykrycia podstawowego zdarzenia<br />

zwolnienia klawisza myszy:<br />

1. Utwórz symbol klipu filmowego<br />

i przeciagnij jego klon z biblioteki na scene.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Z okna narzedzi palety wybierz Actions/<br />

onClipEvent.<br />

4. W bloku edycji parametrów wybierz<br />

Mouse up (rys. 5.39).<br />

Manipulatory klipów filmowych<br />

139


Rozdzial 5.<br />

Manipulatory klipów filmowych<br />

5. W oknie narzedzi wybierz Actions/<br />

evaluate .<br />

6. W polu Expression wprowadz sciezke<br />

dostepu, nastepnie wpisz kropke i dalej<br />

podstawowa akcje (rys. 5.40). Akcja ta<br />

zostanie wykonana po wykryciu zdarzenia<br />

klipu filmowego.<br />

7. Przetestuj film.<br />

Jak tylko zwolnisz klawisz myszy<br />

(w którymkolwiek miejscu na scenie), wykryte<br />

zostanie zdarzenie klipu filmowego Mouse up<br />

i Flash wykona akcje okreslona w wyrazeniu<br />

evaluate .<br />

Wskazówka<br />

• Po zaznaczeniu klipu filmowego wystarczy<br />

tylko wybrac akcje i Flash automatycznie<br />

wstawi manipulator zdarzenia klipu<br />

filmowego przed akcje. Domyslne zdarzenia<br />

klipu filmowego to onClipEvent (load).<br />

Zeby je zmienic, zaznacz to wyrazenie,<br />

a nastepnie wybierz inne zdarzenie.<br />

W celu uzycia zdarzen Key up<br />

lub Key down wraz z obiektem Key:<br />

1. Utwórz symbol klipu filmowego<br />

i przeciagnij jego klon z biblioteki na scene.<br />

2. Zaznacz klon i otwórz palete akcji.<br />

3. W oknie narzedzi palety wybierz Actions/<br />

onClipEvent.<br />

4. W bloku edycji parametrów wybierz Key up<br />

lub Key down (rys. 5.41).<br />

5. Wybierz Actions/if. W bloku edycji<br />

parametrów pojawi sie pole Condition.<br />

6. W polu Condition wprowadz wyrazenie:<br />

Key.getCode()==Key.SPACE<br />

Pierwszy fragment wyrazenia wywoluje<br />

metode getCode() obiektu Key,<br />

zwracajaca ostatnio wcisniety klawisz.<br />

Ostatni fragment wyrazenia stanowi<br />

wlasciwosc obiektu Key, specyfikujaca<br />

klawisz spacji. Podwójny znak równosci (=)<br />

oznacza sprawdzenie równosci.<br />

Rys. 5.40. Pole Expression dla wyrazenia<br />

evaluate<br />

Rys. 5.41. Zdarzenie klipu filmowego Key up<br />

140


Zarzadzanie zasobami Flasha<br />

Rys. 5.42. Akcja nextFrame() pojawia sie<br />

w glównej listwie czasowej, kiedy wystapi<br />

zdarzenie Key up i warunek if okaze sie<br />

prawdziwy<br />

Rys. 5.43. Zdarzenie klipu filmowego<br />

EnterFrame<br />

Rys. 5.44. Akcja nextFrame() wystepuje<br />

w glównej listwie czasowej kiedy spelniony<br />

zostaje warunek w wyrazeniu if<br />

Wskazówka<br />

• Zawsze, gdy chcesz, zeby wyrazenie<br />

ActionScript bylo wykonywane nieustannie,<br />

uzywaj zdarzenia klipu filmowego<br />

onClipEvent (enterFrame).<br />

Z nastepnych akapitów dowiesz sie, jak<br />

wykorzystac to zdarzenie do sprawdzenia<br />

czasu wczytywania sie filmu do okna<br />

witryny sieciowej.<br />

7. Wybierz Actions/evaluate .<br />

8. W polu Expression w bloku edycji<br />

parametrów wprowadz sciezke dostepu, po<br />

niej wpisz kropke i na koncu podstawowa<br />

akcje (rys. 5.42).<br />

9. Przetestuj film. Metoda getCode() obiektu<br />

Key zwraca ostatnio wcisniety klawisz. Jesli<br />

jednak uzyjesz zdarzenia klipu filmowego<br />

Key up, Flash tylko sprawdzi warunek<br />

obiektu Key, kiedy klawisz zostanie<br />

zwolniony. Kombinacja tych dwóch<br />

elementów daje ci dostep jednoczesnie<br />

do wlasciwosci obiektu Key i zdarzenia<br />

Key up, odpowiedzialnego za zwolnienie<br />

klawisza.<br />

W celu utworzenia petli akcji<br />

za pomoca zdarzenia EnterFrame:<br />

1. Utwórz symbol klipu filmowego<br />

i przeciagnij jego klon z biblioteki na scene.<br />

2. Zaznacz klon i otwórz palete akcji.<br />

3. Wybierz Actions/onClipEvent.<br />

4. W bloku edycji parametrów wybierz<br />

EnterFrame (rys. 5.43).<br />

5. Wybierz Actions/if. W bloku edycji<br />

parametrów pojawi sie pole Condition.<br />

6. W polu Condition wprowadz wyrazenie:<br />

Key.getCode()==Key.SPACE<br />

Jest to takie samo wyrazenie warunkowe,<br />

jakie skonstruowales w poprzednim<br />

cwiczeniu. Jednak w tym przypadku Flash<br />

nie czeka ze sprawdzeniem warunku na<br />

pojawienie sie zdarzenia Key up lub Key<br />

down. Tutaj warunek jest sprawdzany przy<br />

kazdym odtworzeniu klatki klipu<br />

filmowego.<br />

7. Wybierz Actions/evaluate .<br />

8. W polu Expression w bloku edycji<br />

parametrów wprowadz sciezke dostepu,<br />

kropke i na koncu podstawowa akcje<br />

(rys. 5.44).<br />

9. Przetestuj film.<br />

Manipulatory klipów filmowych<br />

141


Rozdzial 5.<br />

Animacje wstepne<br />

Animacje wstepne<br />

Caly wysilek wlozony w przygotowanie<br />

zlozonych elementów interaktywnych,<br />

dzialajacych na wielu listwach czasowych,<br />

pójdzie na marne, jesli odbiorca filmu bedzie<br />

musial czekac zbyt dlugo na jego wczytanie do<br />

okna witryny sieciowej lub wrecz zrezygnuje<br />

z jej ogladania. Mozna tego uniknac dzieki<br />

przygotowaniu krótkich animacji zajmujacych<br />

uwage uzytkownika i niedopuszczajacych do<br />

odtworzenia glównego filmu Flasha do<br />

momentu, kiedy do komputera uzytkownika<br />

zostanie przekazana z sieci wystarczajaca ilosc<br />

danych. Oznacza to, ze odtwarzanie jest<br />

opózniane, dopóki nie beda gotowe wszystkie<br />

klatki filmu. Dopiero wtedy rozpoczyna sie<br />

odtwarzanie od pierwszego ujecia. W czasie<br />

oczekiwania na ukonczenie ladowania filmu<br />

powszechnie stosowanym urozmaiceniem sa<br />

animacje wstepne (preloaders) lub inne<br />

króciutkie, zapetlone animacje, przykuwajace<br />

uwage odbiorców. Takie animacje wstepne<br />

musza miec niewielkie rozmiary, z uwagi na to,<br />

iz maja sie wczytywac niemal natychmiast,<br />

a takze powinny byc komunikatywne,<br />

pozwalajac ocenic odbiorcom, na co czekaja,<br />

ewentualnie – jak dlugo to ma potrwac.<br />

Istnieja dwa sposoby tworzenia wyrazen<br />

warunkowych wewnatrz animacji wstepnych,<br />

pozwalajacych sprawdzic ilosc wczytanych<br />

klatek. Pierwszy z nich opiera sie na akcji<br />

ifFrameLoaded. Chociaz jest to jedna<br />

z odrzuconych akcji, latwo zrobic z niej uzytek,<br />

poniewaz wystarczy tylko okreslic pozadana<br />

liczbe klatek w jednym prostym wyrazeniu.<br />

Wada akcji ifFrameLoaded jest to, ze nie<br />

podaje ona informacji o tym, ile klatek zostalo<br />

wczytanych w stosunku do calkowitej liczby<br />

klatek twojego filmu. Dla uzyskania takiej<br />

informacji uzywa sie wlasciwosci<br />

_framesloaded i _totalframes. Kiedy te<br />

dwie wlasciwosci sa porównywane w wyrazeniu<br />

warunkowym z akcja if, mozna przygotowac<br />

animacje wstepna, mierzaca ilosc wczytanych<br />

klatek i wyswietlajaca pasek postepu.<br />

142


Zarzadzanie zasobami Flasha<br />

Akcja stop<br />

W czasie odtwarzania animacji<br />

wstepnej jednoczesnie sprawdzany jest<br />

postep we wczytywaniu<br />

Po wczytaniu wszystkich klatek rozpoczyna sie ich<br />

odtwarzanie, a klon animacji wstepnej jest usuwany<br />

z glównej listwy czasowej<br />

Rys. 5.45. Zasada funkcjonowania animacji<br />

wstepnej. Klip filmowy jest odtwarzany, dopóki<br />

nie bedzie dostepna wystarczajaca ilosc klatek.<br />

Dopiero wtedy rozpoczyna sie odtwarzanie ujec<br />

z glównej listwy czasowej<br />

W przypadku obu typów animacji<br />

wstepnych strategia jest taka sama. Taka<br />

animacja to z reguly klip filmowy<br />

rezydujacy w pierwszym ujeciu na glównej<br />

listwie czasowej. Omawiane ujecie zawiera<br />

akcje stop, zabezpieczajaca film przed<br />

odtworzeniem. Zdarzenie klipu filmowego<br />

EnterFrame sprawdza, czy okreslone ujecia<br />

z glównej listwy czasowej zostaly juz<br />

wczytane. Jesli warunek jest spelniony,<br />

Flash przechodzi do odtwarzania ujec<br />

z glównej listwy czasowej. W przypadku,<br />

gdy warunek nie zostanie spelniony,<br />

w dalszym ciagu odtwarzana bedzie<br />

animacja zawarta w klipie filmowym<br />

(rys. 5.45).<br />

W celu utworzenia<br />

prostej animacji wstepnej:<br />

1. Utwórz symbol klipu filmowego<br />

zawierajacy krótka animowana petle, sluzaca<br />

jako zabawne urozmaicenie (rys. 5.46).<br />

2. Przeciagnij klon symbolu z biblioteki na<br />

scene.<br />

3. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i przypisz mu<br />

akcje stop.<br />

Animacje wstepne<br />

Rys. 5.46. Ten wstepny klip filmowy zawiera<br />

animacje goscia przytupujacego sobie noga<br />

i wyswietla wyjasniajacy tekst. Animacja<br />

bedzie odtwarzana w petli<br />

143


Rozdzial 5.<br />

Animacje wstepne<br />

4. Wstaw nowe ujecie kluczowe w klatce 2.<br />

i utwórz swoja glówna animacje, zaczynajac<br />

od tego punktu (5.47).<br />

5. Zaznacz klip filmowy i otwórz palete akcji.<br />

6. Wybierz Actions/onClipEvent. W bloku<br />

edycji parametrów wybierz EnterFrame.<br />

7. Wybierz Actions/onClipEvent. W bloku<br />

edycji parametrów wybierz odpowiednia<br />

klatke (rys. 5.48). Warunek zostanie<br />

spelniony w momencie wczytania podanej<br />

ilosci klatek, a wówczas Flash wykona akcje<br />

podana w wyrazeniu ifFrameLoaded.<br />

8. Wybierz Actions/evaluate . W polu<br />

Expression wprowadz:<br />

_root.gotoAndPlay(2)<br />

Wpisanie _root jest konieczne z uwagi<br />

na fakt, ze zdarzenie klipu filmowego<br />

przypisane jest do listwy czasowej klipu<br />

filmowego, nie do listwy czasowej<br />

glównego filmu.<br />

9. Przetestuj film. Z menu View wybierz<br />

Bandwidth Profiler. Jest to okno<br />

informacyjne powyzej twojego filmu,<br />

dostepne w trybie Test Movie, a pokazujace<br />

liczbe klatek filmu oraz ilosc danych<br />

w kazdym ujeciu – w postaci pionowych<br />

slupków (rys. 5.49). Jesli slupki wykraczaja<br />

poza dolna pozioma czerwona linie, to<br />

znaczy, ze ilosc danych jest zbyt duza –<br />

jak na wybrane ustawienie przepustowosci<br />

(bandwidth) – i beda one odczytywane<br />

skokowo.<br />

10. Z menu View wybierz Show Streaming.<br />

Akcja stop<br />

Klip filmowy<br />

animacji wstepnej<br />

Rys. 5.47. Glówna listwa czasowa zawiera<br />

animacje wstepna w pierwszym ujeciu,<br />

a takze reszte filmu pojawiajacego sie pózniej<br />

Rys. 5.48. Zeby warunek ifFrameLoaded<br />

zostal spelniony, klatka 10. musi zostac<br />

wczytana do konca. Skoro Flash wczytuje<br />

ujecia sekwencyjnie, to znaczy, ze najpierw<br />

musza byc wczytane klatki od 1. do 9.<br />

Przepustowosc polaczenia<br />

Ujecia filmu, które<br />

zostana wczytane<br />

Powoduje przerwy<br />

w odtwarzaniu<br />

Klatka 10.<br />

Rys. 5.49. Okno narzedzia Bandwidth<br />

Profiler pokazuje pojedyncze klatki<br />

powodujace przerwy w odtwarzaniu, gdyz<br />

ilosc danych przekracza ustawiona<br />

przepustowosc polaczenia. Dodatkowe jasne<br />

i ciemne slupki reprezentuja rózne ujecia<br />

144


Zarzadzanie zasobami Flasha<br />

Aktualnie<br />

odtwarzane ujecie<br />

Wskaznik postepu<br />

ladowania<br />

Flash umozliwia zasymulowanie okreslonej<br />

przepustowosci polaczenia (rys. 5.50). Zielony<br />

pasek u góry jest wskaznikiem postepu.<br />

Trójkatny znacznik wskazuje punkt poczatkowy<br />

odtwarzania – znajduje sie on w klatce 1. do<br />

momentu, kiedy wskaznik postepu minie klatke<br />

podana przez ciebie w parametrze<br />

ifFrameLoaded. Dopiero wtedy nastapi skok<br />

do klatki 2. i rozpocznie sie odtwarzanie filmu.<br />

Wskazówka<br />

Wskaznik postepu<br />

ladowania<br />

Rys. 5.50. Okno narzedzia Bandwidth Profiler<br />

po wybraniu Show Streaming<br />

Bandwidth Profiler jest bardzo porecznym<br />

narzedziem, pozwalajacym ocenic sposób<br />

przeplywu danych w twoich filmach Flasha<br />

oraz szybkosc wczytywania do okna witryny<br />

sieciowej. W trybie Test Movie wybierz<br />

View/Bandwidth Profiler (lub wcisnij<br />

Ctrl+B ), aby uzyskac taka informacje. W<br />

lewym segmencie okna podawane sa<br />

informacje o filmie, np. rozmiar sceny,<br />

predkosc odtwarzania, rozmiar pliku, calkowity<br />

czas trwania filmu oraz animacji wstepnej<br />

(w klatkach i sekundach). Znajdziesz tam takze<br />

ustawienia przepustowosci, symulujace<br />

rzeczywista szybkosc transferu dla ustawionej<br />

wartosci. Wartosc te mozna zmienic w menu<br />

Debug, wybierajac prawdopodobna predkosc<br />

modemu odbiorcy filmu. Wybrac mozna np.<br />

pomiedzy wartosciami 28,8 i 56 kb.<br />

Wykres po prawej stronie okna narzedzia<br />

Bandwidth Profiler pokazuje, jaka ilosc<br />

danych zawiera kazda z klatek w twoim filmie.<br />

Narzedzie Bandwidth Profiler<br />

• Nie ujrzysz animacji wstepnej w dzialaniu,<br />

dopóki twoja glówna animacja nie bedzie<br />

zawierala odpowiednio duzych grafik,<br />

wymagajacych dluzszego czasu ladowania.<br />

Jezeli przygotowales mala animacje,<br />

animacja wstepna tylko mignie, jako ze dane<br />

zostana wczytane bardzo szybko i niemal<br />

natychmiast rozpocznie sie odtwarzanie<br />

glównego filmu.<br />

Wykres ten mozna wyswietlic na dwa<br />

sposoby: w trybie Streaming Graph<br />

(View/Streaming Graph) lub w trybie<br />

Frame By Frame Graph (View/Frame<br />

By Frame Graph). Pierwszy tryb prezentuje<br />

przebieg ladowania filmu na strone metoda<br />

strumieniowa, drugi pozwala zobaczyc ilosc<br />

danych w poszczególnych klatkach. W trybie<br />

Streaming Graph mozesz okreslic, które<br />

z ujec beda prawdopodobna przyczyna<br />

opóznien w odtwarzaniu. Wystarczy, ze<br />

spojrzysz na slupki przekraczajace ustawiona<br />

wartosc przepustowosci.<br />

Zeby poznac rzeczywista szybkosc transmisji<br />

twojego filmu, wybierz View/Show<br />

Streaming. Flash zasymuluje odtwarzanie<br />

filmu na witrynie sieciowej przy zadanej<br />

szybkosci polaczenia. Zielony poziomy pasek<br />

w górze okna pokazuje klatki, które zostaly<br />

juz wczytane, podczas gdy ikona trójkata<br />

oznacza aktualnie odtwarzana klatke.<br />

Animacje wstepne<br />

145


Rozdzial 5.<br />

Animacje wstepne<br />

W celu utworzenia<br />

zlozonej animacji wstepnej:<br />

1. Utwórz symbol klipu filmowego<br />

zawierajacy krótka sekwencje animacji<br />

z czytelnie zaznaczonymi poczatkiem<br />

i zakonczeniem (rys. 5.51).<br />

2. Przeciagnij klon symbolu z biblioteki<br />

na scene.<br />

3. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i przypisz mu<br />

akcje stop.<br />

4. Wstaw nowe ujecie kluczowe w klatce 2.<br />

i utwórz swoja glówna animacje, zaczynajac<br />

od tego punktu.<br />

5. Zaznacz klip filmowy i otwórz palete akcji.<br />

6. Wybierz Actions/onClipEvent, a w bloku<br />

edycji parametrów – EnterFrame .<br />

7. Wybierz Actions/if.<br />

8. W polu Condition wpisz:<br />

_root._framesloaded >=<br />

_root._totalframes<br />

Pierwszy czlon wyrazenia zwraca ilosc<br />

klatek juz wczytanych do glównej listwy<br />

czasowej. Drugi czlon zwraca calkowita<br />

liczbe ujec w glównej listwie czasowej.<br />

Znak „wieksze niz” (>) oraz znak równosci<br />

(=), wystepujace razem, oznaczaja „wieksze<br />

lub równe niz” .<br />

9. Wybierz Actions/evaluate . W polu<br />

Expression wpisz:<br />

_root.gotoAndPlay(2)<br />

10. Teraz wybierz Actions/else. Wyrazenie<br />

else wprowadza alternatywe dla<br />

pierwszego warunku w wyrazeniu if. Jezeli<br />

warunek zostanie spelniony, Flash przejdzie<br />

do klatki 2. na glównej lis twie czasowej<br />

i rozpocznie odtwarzanie. W przypadku<br />

niespelnienia warunku, Flash mimo<br />

wszystko wykona wszelkie akcje<br />

poprzedzone wyrazeniem else.<br />

Rys. 5.51. Ten klip filmowy zawiera animacje<br />

wypelniajacego sie paska oraz wyjasniajacy<br />

tekst umieszczony powyzej<br />

146


Zarzadzanie zasobami Flasha<br />

Rys. 5.52. Kompletny kod ActionScript dla tej<br />

nieco bardziej skomplikowanej animacji wstepnej<br />

Rys. 5.53. Narzedzie Bandwidth Profiler po<br />

wybraniu Show Streaming. Zwróc uwage, jak<br />

postep w ladowaniu (5 z 10 klatek zostalo<br />

calkowicie wczytanych) wplywa na proporcje<br />

pokazywane na wskazniku (okolo 50 procent)<br />

w czasie jego animacji (klip filmowy animacji<br />

wstepnej)<br />

11. Wybierz Actions/evaluate . W polu<br />

Expression wpisz:<br />

this.gotoAndStop<br />

(Math.floor<br />

((_root._framesloaded/<br />

_root._totalframes)*<br />

this._totalframes))<br />

To wyrazenie wyglada dosc<br />

skomplikowanie, ale okaze sie proste, kiedy<br />

juz raz je odczytasz. Oblicza ono ilosc klatek<br />

zaladowanych do glównej listwy czasowej,<br />

a nastepnie przeskakuje do odpowiedniej<br />

klatki na listwie czasowej animacji wstepnej.<br />

Spróbujmy przeanalizowac kod. Po<br />

pierwsze, wewnetrzne wyrazenie<br />

_root._framesloaded/_root.<br />

_totalframes<br />

podaje ilosc wczytanych klatek. Ta linia<br />

zostaje pomnozona przez wyrazenie<br />

this._totalframes, które okresla ilosc<br />

klatek w animacji wstepnej. Dalej uzywamy<br />

metody floor obiektu Math, zamieniajacej<br />

dowolna wartosc na liczbe calkowita<br />

(i zaokraglajacej w dól). Wkrótce nauczysz<br />

sie wiecej o obiekcie Math; na razie<br />

wystarczy wiedziec, ze umozliwia on<br />

wykonywanie obliczen matematycznych.<br />

Kiedy wiec Flash ma juz liczbe calkowita<br />

(czyli taka, która nie zawiera ulamków lub<br />

czesci dziesietnych), uzywa jej jako numeru<br />

ujecia w wyrazeniu this.gotoAndStop<br />

(rys. 5.52).<br />

12. Przetestuj film za pomoca narzedzia<br />

Bandwidth Profiler w trybie Show<br />

Streaming (rys. 5.53).<br />

Animacje wstepne<br />

147


Rozdzial 5.<br />

Animacje wstepne<br />

Wskazówki<br />

• Wartosc zwracana przez wyrazenie<br />

_framesloaded/_totalframes nie<br />

odpowiada dokladnie wskazaniom postepu<br />

wczytywania. Odpowiada ona procentowej<br />

ilosci ujec, ale niekoniecznie procentowej<br />

ilosci danych. Jesli twój film zawiera dane<br />

rozrzucone po róznych ujeciach, wartosc<br />

wyrazenia _framesloaded/<br />

_totalframes nie da ci obrazu ilosci<br />

danych dotychczas zaladowanych i ilosci<br />

wciaz jeszcze oczekiwanej.<br />

• To tylko jeden z wielu sposobów na<br />

przygotowanie animacji wstepnej,<br />

obrazujacej postep wczytywania filmu.<br />

Jednak podstawowa idea dzialania tej<br />

funkcji jest jednakowa dla kazdego z nich.<br />

Najpierw porównujesz wlasciwosci<br />

_framesloaded oraz _totalframes.<br />

Potem sprawiasz, zeby twój klip filmowy<br />

animacji wstepnej odpowiadal w jakis<br />

sposób rosnacej powoli wartosci zwracanej<br />

przez wyrazenie _framesloaded/<br />

_totalframes. W kolejnych rozdzialach<br />

nauczysz sie, w jaki sposób szacowac inne<br />

wlasciwosci filmu, np. ich rozmiar lub<br />

krycie. Tak wiec, zamiast odtwarzac<br />

niektóre tylko klatki, mozna – w zaleznosci<br />

od postepu w ladowaniu – zwiekszac<br />

rozmiar okna klipu filmowego lub jego<br />

krycie.<br />

148


Zarzadzanie<br />

zasobami zewnetrznymi<br />

6<br />

Czesci skladowe jezyka HTML<br />

Flash udostepnia potezne narzedzia do zarzadzania komunikacja z innymi aplikacjami oraz<br />

zewnetrznymi danymi, skryptami i plikami, zwiekszajacymi funkcjonalnosc programu. Uzywajac<br />

Flasha do laczenia sie z siecia, mozesz tworzyc strony laczace animacje i interaktywnosc Flasha<br />

z innymi mediami dostepnymi dla przegladarki, a w efekcie projektowac dynamiczne interfejsy<br />

i przyciski we Flashu, dajace dostep do dokumentów PDF, scen QuickTime VR, a nawet apletów<br />

jezyka Java. Uzywaj Flasha do laczenia sie z witrynami FTP, wysylania poczty, komunikowania<br />

z jezykiem JavaScript lub wymiany informacji z serwerami korzystajacymi z metod CGI Get<br />

i Post. Flash wspiera takze standard XML, pozwalajacy tworzyc indywidualny kod na potrzeby<br />

rozwiazan dla elektronicznego biznesu. Niniejszy rozdzial wprowadzi cie w zagadnienia<br />

komunikacji Flasha z formatami HTML, JavaScript, CGI i XML. Flasha mozna tez uzywac do<br />

komunikacji z innymi filmami Flasha w sieci, ladujac jeden lub wiecej filmów tylko wtedy, gdy<br />

sa potrzebne. Dzieki temu mozliwe staje sie tworzenie latwych w edycji i niewielkich<br />

w rozmiarach modularnych projektów. Na przyklad, twój glówny film Flasha móglby sluzyc<br />

za rodzaj interfejsu, wczytujacego kolejne filmy w momencie, kiedy uzytkownik je wybierze.<br />

Ponadto Flash integruje sie z narzedziem Macromedia Generator, udostepniajacym w sieci<br />

wizualna zawartosc projektu w czasie rzeczywistym. Jesli wbudujesz do dokumentów Flasha<br />

szablony Generatora mozliwe stanie sie uaktualnianie danych „w locie” z poziomu bazy danych<br />

klienta.<br />

W tym rozdziale dowiesz sie tez, czym sa samodzielne odtwarzacze Flasha, zwane projektorami<br />

(projectors), i jak specjalne instrukcje pozwalaja okreslic ich wyglad, funkcje oraz charakter<br />

wspólpracy z innymi programami. Jako ze projektory nie potrzebuja przegladarki, by móc<br />

funkcjonowac, sa one idealnym sposobem dystrybucji dokumentów Flasha za pomoca nosników<br />

CD-ROM lub innych mediów.<br />

Na koniec zobaczysz, w jaki sposób Flash komunikuje sie z drukarka. Program umozliwia<br />

odbiorcy wydrukowanie tekstu i grafiki calej sceny lub jej czesci, w tym elementów<br />

niewidocznych na scenie.<br />

Z taka róznorodnoscia opcji drukowania, wyrafinowanymi sposobami komunikacji z siecia<br />

i serwerami, a takze mozliwoscia dokonywania natychmiastowych aktualizacji, Flash staje sie<br />

kluczowym elementem w budowaniu dynamicznych, komercyjnych aplikacji.<br />

Zarzadzanie zasobami zewnetrznymi<br />

149


Rozdzial 6.<br />

Komunikacja<br />

Komunikacja<br />

za posrednictwem przegladarki<br />

internetowej<br />

Flash laczy sie z przegladarka internetowa za<br />

posrednictwem podstawowej akcji getURL<br />

dostepnej z palety akcji (rys. 6.1). Akcja ta jest<br />

bardzo zblizona do znacznika <br />

w HTML-u, gdzie adres URL witryny podaje<br />

sie w formie – http://www.nazwadomeny.<br />

com/katalog. Adresów URL bezwzglednych<br />

(kompletnych adresów okreslonego pliku)<br />

uzywa sie do laczenia z dowolna witryna<br />

sieciowa, natomiast adresów URL wzglednych<br />

(sciezek dostepu do pliku pozostajacego<br />

w relacji z biezacym katalogiem) uzywa sie<br />

do laczenia z plikami lokalnymi, znajdujacymi<br />

sie na dysku lub nosniku CD-ROM. Ponadto<br />

akcja getURL umozliwia dostep do róznych<br />

ujec tworzonych wewnatrz okna przegladarki,<br />

a takze calkiem nowych okien przegladarki.<br />

Mozesz tworzyc filmy Flasha funkcjonujace<br />

w obrebie tych ujec oraz okien i miec kontrole<br />

od tym, co jest wczytywane do kazdego z nich.<br />

Laczenie sie z siecia<br />

Wykorzystaj akcje getURL do nawiazania<br />

polaczenia z siecia, poslugujac sie<br />

standardowym schematem http://, za którym<br />

podaje sie reszte adresu sieciowego. Uzywaj<br />

schematów odpowiednich dla rodzaju<br />

protokolu, np. ftp:// dla transmisji plików,<br />

czy mailto: w przypadku poczty.<br />

Jesli odtworzysz swój film Flasha za pomoca<br />

polecenia Control/Test Movie lub uzywajac<br />

odtwarzacza Flasha, akcja getURL spowoduje<br />

automatyczne uruchomienie domyslnej<br />

przegladarki internetowej i wczytanie podanej<br />

witryny w nowym oknie.<br />

Rys. 6.1. Akcja getURL na palecie akcji<br />

Rys. 6.2. Akcja getURL posiada parametry:<br />

adres URL (URL), nazwe okna (Window)<br />

oraz metody wstawiania zmiennych do<br />

skryptów CGI (Variables)<br />

Rys. 6.3. Wprowadz adres URL w bloku<br />

edycji parametrów akcji getURL<br />

150


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.4. Jezeli pole Window pozostawisz puste,<br />

film Flasha (u góry) polaczy sie z witryna firmy<br />

Macromedia, korzystajac z tego samego okna<br />

(u dolu)<br />

Rys. 6.5. Adres<br />

sieciowy wpisany<br />

w polu URL<br />

zakladki<br />

Character palety<br />

Character<br />

zmienia statyczny<br />

tekst w lacze do<br />

podanej strony<br />

W celu nawiazania polaczenia<br />

z witryna sieciowa<br />

za pomoca akcji getURL:<br />

1. Utwórz symbol przycisku i przeciagnij jego<br />

klon z biblioteki na scene.<br />

2. Zaznacz klon przycisku, otwórz palete akcji<br />

i wybierz Basic Actions/Get URL<br />

(Esc + gu). Przed akcja getURL zostanie<br />

automatycznie wstawiony manipulator<br />

zdarzenia on (release) (rys. 6.2).<br />

3. W polu URL, w bloku edycji parametrów<br />

palety akcji, wpisz pelny adres witryny<br />

sieciowej (rys. 6.3). Pole Expression<br />

pozostaw niezaznaczone.<br />

4. Wyeksportuj swój film i odtwórz za pomoca<br />

odtwarzacza Flasha lub przegladarki. Po<br />

kliknieciu utworzonego przycisku, witryna<br />

sieciowa zostanie wczytana do okna twojego<br />

filmu Flasha (rys. 6.4). Kliknij przycisk<br />

Back (z powrotem) w przegladarce,<br />

a powrócisz do filmu.<br />

Wskazówki<br />

• Z siecia mozesz polaczyc sie takze za pomoca<br />

statycznego bloku tekstowego. W tym celu, za<br />

pomoca narzedzia tekstowego (Text Tool)<br />

utwórz statyczny tekst, a nastepnie – w polu<br />

URL zakladki Character na palecie<br />

Character – wprowadz adres witryny<br />

(rys. 6.5). Po kliknieciu tekstu, w oknie<br />

przegladarki zajmowanym przez film Flasha<br />

zostanie wczytana podana strona internetowa.<br />

• Oprócz klonów przycisków, akcja getURL<br />

moze zostac przypisana takze do ujecia<br />

kluczowego. W takim przypadku akcja<br />

getURL wyzwoli polaczenie z witryna<br />

w momencie odtworzenia tego okreslonego<br />

ujecia. Metoda ta jest uzyteczna przy<br />

automatycznym ladowaniu laczy do innych<br />

witryn – np. po efektownej animacji<br />

wstepnej, ewentualnie jako sposób<br />

nasladowania automatycznie ladowanych<br />

bannerów. Co prawda nie pozwalasz<br />

odbiorcy kontrolowac tego, co sie dzieje, ale<br />

przynajmniej zapraszasz go na przechadzke.<br />

Komunikacja<br />

151


Rozdzial 6.<br />

Komunikacja<br />

W celu rozpoczecia transferu pliku<br />

za posrednictwem protokolu FTP:<br />

1. Tak jak w poprzednim cwiczeniu, utwórz<br />

symbol przycisku i przeciagnij jego klon<br />

z biblioteki na scene.<br />

2. Zaznacz klon przycisku, otwórz palete akcji<br />

i wybierz Basic Actions/Get URL.<br />

Przed akcje getURL zostanie automatycznie<br />

wstawiony manipulator zdarzenia on<br />

(release).<br />

3. W polu URL bloku edycji parametrów<br />

wpisz ftp://, dalej nazwe uzytkownika,<br />

dwukropek, symbol „@” i na koncu pelny<br />

adres FTP lokacji pozadanego pliku<br />

(rys. 6.6). Pole Expression zostaw<br />

niezaznaczone.<br />

4. Wyeksportuj twój film Flasha i uruchom<br />

go w oknie przegladarki lub odtwarzacza<br />

Flasha. Klikniecie utworzonego przycisku<br />

spowoduje wczytanie witryny FTP do okna<br />

zajmowanego przez film Flasha, dajac ci<br />

dostep do zasobów serwera (rys. 6.7).<br />

Rys. 6.6. Adres FTP wpisywany do pola URL<br />

akcji getURL moze zawierac nazwe<br />

uzytkownika i haslo lub po prostu adres FTP<br />

w przypadku anonimowego dostepu<br />

Rys. 6.7. Typowy katalog FTP w oknie<br />

przegladarki<br />

152


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.8. Wprowadz adres odbiorcy wiadomosci<br />

po instrukcji mailto: w polu URL. Dodatkowe<br />

adresy oddzielaj za pomoca przecinków<br />

Rys. 6.9. Projekt nowej wiadomosci e-mail<br />

pojawia sie w nowym oknie nad filmem Flasha<br />

Rys. 6.10. Ten adres e-mail jest takze przyciskiem<br />

uruchamiajacym przegladarke za posrednictwem<br />

akcji mailto:<br />

W celu utworzenia<br />

domyslnego adresu e-mail:<br />

1. Ponownie utwórz symbol przycisku<br />

i przeciagnij jego klon z biblioteki na scene.<br />

2. Zaznacz klon przycisku, otwórz palete akcji<br />

i wybierz Basic Actions/Get URL.<br />

3. W polu URL bloku edycji parametrów<br />

wpisz mailto: i adres e-mail osoby, która<br />

powinna otrzymac wiadomosc (rys. 6.8).<br />

Pole Expression pozostaw niezaznaczone.<br />

4. Wyeksportuj film i odtwórz go w oknie<br />

przegladarki lub odtwarzacza Flasha. Po<br />

kliknieciu utworzonego przycisku pojawi sie<br />

projekt nowej wiadomosci z domyslnie<br />

wypelnionym polem adresu odbiorcy<br />

(rys. 6.9). Uzytkownikowi pozostaje wpisac<br />

tresc wiadomosci i jej wyslanie. Utworzony<br />

w ten sposób, za pomoca akcji getURL,<br />

domyslny adres e-mail mozesz wykorzystac<br />

jako sposób na kontakt odbiorców z twoja<br />

witryna i uzyskanie dodatkowych<br />

informacji.<br />

Wskazówka<br />

• Dobrym pomyslem jest wprowadzanie<br />

przeliterowanego adresu e-mail odbiorcy<br />

w akcji getURL mailto: (rys. 6.10). Jesli<br />

przegladarka uzytkownika nie jest<br />

skonfigurowana tak, by móc wysylac<br />

wiadomosci, zamiast projektu nowej<br />

wiadomosci pojawi sie komunikat o bledzie<br />

(rys. 6.11). Dzieki podaniu adresu w pelnym<br />

brzmieniu uzytkownik bedzie mógl go uzyc<br />

w dowolnej aplikacji do przesylania poczty.<br />

Komunikacja<br />

Rys. 6.11. Niektórzy uzywaja oddzielnych<br />

programów do obslugi poczty i przegladania<br />

witryn sieciowych. W takich przypadkach ich<br />

przegladarki nie sa skonfigurowane tak, zeby<br />

wysylac wiadomosci za pomoca laczy Flasha<br />

153


Rozdzial 6.<br />

Komunikacja<br />

Laczenie z plikami lokalnymi<br />

Do okreslania plików lokalnych, a nie plików<br />

w sieci, uzywaj raczej wzglednych sciezek<br />

dostepu niz pelnych adresów URL. Dzieki temu<br />

mozna umieszczac filmy Flasha na dyskietkach<br />

lub plytach CD-ROM bez koniecznosci laczenia<br />

z Internetem. Przykladowo, zamiast uzywac<br />

pelnego adresu URL, http://www.<br />

myServer.com/images/photo.jpg,<br />

wystarczy podac po prostu images/<br />

photo.jpg, a Flash – szukajac pliku o nazwie<br />

photo.jpg – przeszuka tylko folder images.<br />

W celu polaczenia z plikiem lokalnym:<br />

1. Tak jak w poprzednim cwiczeniu, utwórz<br />

symbol przycisku i przeciagnij jego klon<br />

z biblioteki na scene.<br />

2. Zaznacz klon przycisku, otwórz palete akcji<br />

i wybierz Basic Actions/Get URL. Przed<br />

akcje getURL zostanie automatycznie<br />

wstawiony manipulator zdarzenia<br />

on (release).<br />

3. W polu URL bloku edycji parametrów<br />

wprowadz wzgledna sciezke dostepu do<br />

pozadanego pliku. Uzywaj ukosnika (/) do<br />

oddzielania katalogów i dwóch kropek (..)<br />

do przesuwania sie do góry o jeden poziom<br />

w strukturze katalogów (rys. 6.12). Pole<br />

Expression pozostaw niezaznaczone.<br />

4. Wyeksportuj film, a nastepnie umiesc<br />

go wraz z plikiem laczacym w katalogu<br />

zgodnym z hierarchia na dysku (rys. 6.13).<br />

Odtwórz film w przegladarce lub<br />

odtwarzaczu Flasha. Po kliknieciu<br />

utworzonego przycisku Flash wyszuka plik,<br />

korzystajac z podanej sciezki dostepu,<br />

a nastepnie otworzy go w tym samym oknie<br />

przegladarki (rys. 6.14).<br />

Rys. 6.12. Ten wzgledny adres URL<br />

powoduje przejscie do katalogu o jeden<br />

poziom wyzej i odszukanie folderu o nazwie<br />

images, zawierajacego plik photo.jpg<br />

Rys. 6.13. Twój film Flasha (SWF) wraz<br />

z towarzyszacym plikiem HTML znajduja sie<br />

w katalogu na tym samym poziomie<br />

w strukturze, co katalog zawierajacy plik<br />

photo.jpg<br />

154


Zarzadzanie zasobami zewnetrznymi<br />

Wskazówki<br />

• W polu URL akcji getURL mozna wpisac<br />

sciezke dostepu do dowolnego pliku.<br />

Wczytywac mozna pliki HTML, JPEG, GIF,<br />

QuickTime, PDF, jak równiez filmy Flasha.<br />

Trzeba pamietac jedynie o tym, czy<br />

przegladarka odbiorcy jest wyposazona<br />

w odpowiednie pluginy, umozliwiajace<br />

otwieranie wyzej wymienionych formatów<br />

plików.<br />

• W przegladarce Microsoft Internet Explorer<br />

4 lub wczesniejszej w wersji dla Mac OS –<br />

lacze getURL jest wzgledne wobec filmu<br />

Flasha (SWF), ale nie wobec<br />

towarzyszacego pliku HTML. Zwykle<br />

eksportuje sie film Flasha (SWF) wraz<br />

z plikiem HTML do tego samego folderu,<br />

lecz jesli rozdzielisz te dwa pliki, pamietaj,<br />

ze tylko Internet Explorer 5 dla Mac OS<br />

poprawnie odczyta lacze getURL (rys. 6.15).<br />

Komunikacja<br />

Rys. 6.14. Film Flasha (u góry) otwiera plik<br />

lokalny w tym samym oknie przegladarki (u dolu)<br />

Rys. 6.15. Oddzielenie pliku SWF od<br />

towarzyszacego pliku HTML sprawia, ze<br />

w Microsoft Internet Explorerze 4 w wersji<br />

dla MacOS odpowiadajacy tym plikom adres<br />

URL funkcjonuje inaczej. Uzywajac adresu<br />

URL photo.jpg, Internet Explorer szuka<br />

odpowiadajacego mu pliku SWF i moze<br />

próbowac odnalezc go w katalogu data.<br />

Internet Explorer 4 dla Windows i inne<br />

przegladarki wyszukuja plik HTML, wiec<br />

odwolaja sie raczej do katalogu my_Files.<br />

Problem ten nie istnieje jednak w Internet<br />

Explorerze 5 dla MacOS<br />

155


Rozdzial 6.<br />

Komunikacja<br />

Zestawy ramek i okna przegladarki<br />

Kiedy odtwarzasz swój film Flasha w oknie<br />

przegladarki, akcja getURL wczytuje nowa<br />

witryne w tym samym oknie, zajmujac miejsce<br />

filmu Flasha. Jesli chcesz, zeby witryna zostala<br />

wczytana do nowego okna lub nowej ramki, nie<br />

zastepujac filmu Flasha, skorzystaj z opcji<br />

Window akcji getURL (rys. 6.16).<br />

Jaka jest róznica pomiedzy oknem i ramka?<br />

Okna przegladarki moga byc dzielone na<br />

odrebne obszary lub ramki (frames),<br />

zawierajace pojedyncze witryny sieciowe.<br />

Grupa ramek nazywa sie zestawem ramek<br />

(frameset), a odpowiedni plik HTML pozwala<br />

zdefiniowac proporcje i nazwe kazdej ramki<br />

wchodzacej w sklad grupy (rys. 6.17).<br />

Parametr Window moze uzywac nazwy, która<br />

plik HTML zestawu ramek przypisuje ramce<br />

w tym celu, zeby zaladowac adres URL<br />

bezposrednio do wskazanej ramki. Podobnie<br />

uzywa sie atrybutu TARGET znacznika HTML<br />

. Na przyklad, jesli podzielisz<br />

witryne sieciowa na dwie ramki, ramke po<br />

lewej mozesz nazywac Navigator (nawigacja),<br />

a ramke po prawej Contents (zawartosc).<br />

Umiesc film Flasha w ramce Navigator<br />

z przyciskami, którym przypisano akcje<br />

getURL. Wprowadzajac nazwe ramki Conte nts<br />

w polu parametru Window akcji getURL,<br />

nakazujesz ramce po prawej (czyli Contents)<br />

wczytac podany adres URL.<br />

Parametr Window przewiduje takze<br />

wprowadzanie pewnych zarezerwowanych<br />

nazw, mozliwych do wykorzystania (rys. 6.18).<br />

Ponizsza tabela opisuje kazda z nich.<br />

Rys. 6.16. Pole Window daje dostep do menu<br />

rozwijanego, z którego mozesz wybrac<br />

zarezerwowane slowo kluczowe<br />

Rys. 6.17. Typowa witryna korzystajaca<br />

z ramek do dzielenia zawartosci. Okno<br />

podzielone jest poziomo na dwie ramki. Dolna<br />

ramka dodatkowo zostala podzielona na dwie<br />

pionowe ramki. Bannery, suwaki i zawartosc<br />

zwykle sa oddzielane w ten sposób<br />

Ramka<br />

Navigator<br />

Ramka<br />

Górna ramka<br />

Film Flasha<br />

(SWF)<br />

Dolna ramka<br />

156<br />

Rys. 6.18. U góry, zestaw ramek dzieli okno<br />

na lewa i prawa ramke. Prawa ramka<br />

zawiera kolejny zestaw ramek, dzielacy ja na<br />

ramke górna oraz dolna. Film Flasha (SWF)<br />

jest odtwarzany w górnej ramce drugiego<br />

zestawu. Nazwa okna okresla miejsce<br />

ladowania adresu URL


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.19. Plik z zestawem ramek (u góry) dzieli<br />

okno na dwie kolumny: lewa, o nazwie Navigator,<br />

majaca 20% szerokosci okna przegladarki<br />

i prawa, o nazwie Contents, majaca 80%<br />

szerokosci okna (u dolu)<br />

Rys. 6.20. Blok edycji parametrów akcji getURL<br />

okresla witryne Google.com jako domyslnie<br />

ladowana do ramki Contents<br />

Tabela 6.1. Parametry Window akcji getURL<br />

Nazwa okna Objasnienie<br />

_self<br />

_blank<br />

_parent<br />

_top<br />

Okresla biezaca ramke aktywnego<br />

okna przegladarki. Jest to domyslne<br />

zachowanie, gdy nie podano<br />

zadnego parametru Window.<br />

Okresla nowe okno przegladarki.<br />

Okresla zestaw ramek zawierajacy<br />

biezaca ramke.<br />

Okresla najwyzszy w hierarchii<br />

zestaw ramek biezacego okna<br />

przegladarki.<br />

W celu uruchomienia<br />

witryny sieciowej<br />

w ramce o okreslonej nazwie:<br />

1. Utwórz zestaw ramek HTML zawierajacy<br />

dwie ramki, z których kazda bedzie miala<br />

unikatowa nazwe. Film Flasha zostanie<br />

uruchomiony w jednej ramce, a lacza do<br />

innych stron pojawia sie w drugiej<br />

(rys. 6.19).<br />

2. Tak jak w poprzednich cwiczeniach, utwórz<br />

symbol przycisku i przeciagnij jego klon<br />

z biblioteki na scene.<br />

3. Zaznacz klon przycisku, otwórz palete akcji<br />

i wybierz Basic Actions/Get URL. Przed<br />

akcje getURL zostanie automatycznie<br />

wstawiony manipulator zdarzenia<br />

on (release).<br />

4. W polu URL, w bloku edycji parametrów<br />

palety akcji, wpisz adres witryny sieciowej,<br />

zaczynajac od http://. Pole Expression<br />

pozostaw niezaznaczone.<br />

5. W polu Window, w bloku edycji<br />

parametrów palety akcji, wpisz nazwe<br />

ramki ustalona w zestawie ramek HTML<br />

(rys. 6.20).<br />

6. Opublikuj film Flasha wraz<br />

z towarzyszacym plikiem HTML. Utwórz<br />

kolejny plik HTML dla nastepnej ramki<br />

z zestawu.<br />

Komunikacja<br />

157


Rozdzial 6.<br />

Komunikacja<br />

7. Nadaj obu plikom HTML nazwy, stosownie<br />

do znaczników <br />

w dokumencie zestawu ramek, a nastepnie<br />

umiesc wszystkie pliki w tym samym<br />

folderze (rys. 6.21).<br />

8. Otwórz w przegladarce dokument zestawu<br />

ramek. Twój film Flasha jest odtwarzany<br />

w jednej ramce, a utworzony przycisk<br />

powoduje wczytanie witryny sieciowej<br />

do kolejnej ramki (rys. 6.22).<br />

W celu uruchomienia<br />

witryny sieciowej w nowym oknie:<br />

1. Utwórz przycisk i przypisz akcje getURL<br />

do jego klonu.<br />

2. W polu URL bloku edycji parametrów<br />

palety akcji wprowadz adres witryny<br />

sieciowej.<br />

3. W polu Window – z menu rozwijanego<br />

wybierz _blank (rys. 6.23).<br />

4. Wyeksportuj film i odtwórz go w oknie<br />

przegladarki lub w odtwarzaczu Flasha.<br />

Klikniecie utworzonego przycisku otwiera<br />

nowe okno, do którego zostaje zaladowana<br />

witryna sieciowa.<br />

lub<br />

1. W polu parametru Window akcji getURL,<br />

zamiast wybierac z menu rozwijanego opcje<br />

_blank, po prostu wpisz unikatowa nazwe<br />

dla twojego nowego okna (rys. 6.24).<br />

2. Wyeksportuj film i odtwórz go w oknie<br />

przegladarki lub w odtwarzaczu Flasha.<br />

Po kliknieciu utworzonego przycisku Flash<br />

wyszuka ramke lub okno o nazwie<br />

okreslonej w polu parametru Window akcji<br />

getURL. W przypadku niemoznosci<br />

zlokalizowania, Flash utworzy nowe okno<br />

o tej samej nazwie.<br />

Rys. 6.21. Plik frameset.html powoduje<br />

umieszczenie pliku contents.html w ramce<br />

Contents i pliku navigator.html w ramce<br />

Navigator. Plik navigator.html wstawia<br />

tez film Flasha (navigator.swf)<br />

Rys. 6.22. Pokazano tu skrypt dla przycisku<br />

umieszczonego w ramce Navigator. Witryna<br />

Google wczytuje sie do drugiej ramki<br />

Rys. 6.23. Po wybraniu opcji _blank z menu<br />

rozwijanego parametru Window, witryna<br />

Peachpit zostanie wczytana do nowego,<br />

nienazwanego okna<br />

Rys. 6.24. Witryna Peachpit zostanie<br />

wczytana do nowego okna o nazwie<br />

myNewWindow, jesli taka wlasnie nazwe<br />

wprowadzono w polu Window<br />

158


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.25. Zlozone akcje getURL, z parametrem<br />

Window ustawionym na _blank (u góry) oraz<br />

w przypadku wykorzystania unikatowej nazwy<br />

(u dolu)<br />

Wskazówki<br />

• Istnieje zasadnicza róznica pomiedzy<br />

otwieraniem nowego okna za pomoca opcji<br />

_blank i uzywaniem wlasnorecznie<br />

wprowadzonej nazwy. Jesli skorzystasz<br />

z opcji _blank, to za kazdym razem, gdy<br />

klikniesz przycisk laczacy cie z kolejna<br />

witryna sieciowa, utworzone zostanie nowe<br />

okno. W przypadku posluzenia sie nazwa<br />

wprowadzana w polu Window, klikniecie<br />

przycisku po raz pierwszy spowoduje<br />

otworzenie nowego okna. Kolejne klikniecia<br />

tak naprawde tylko odnajduja nowo<br />

utworzone okno i Flash ponownie odswieza<br />

witryne w istniejacym juz oknie (rys. 6.25).<br />

Obydwie metody sa uzyteczne, w zaleznosci<br />

od tego, czy chcesz umieszczac lacza<br />

w oddzielnych oknach, czy tez lacza te maja<br />

sie zastepowac w pierwszym nowo<br />

utworzonym oknie.<br />

• Zachowuj ostroznosc, tworzac nowe okna<br />

przegladarki, i pamietaj, gdzie sie znajduja.<br />

Czasem moga pozostawac ukryte pod<br />

aktywnym oknem, wczytujac witryny,<br />

których odbiorca nie jest w stanie zobaczyc.<br />

Komunikacja<br />

159


Rozdzial 6.<br />

Uzywanie jezyka JavaScript<br />

do kontrolowania<br />

parametrów nowego okna<br />

Wprawdzie parametr Window akcji getURL<br />

umozliwia skierowanie nowo otwieranych<br />

witryn do nowych okien przegladarki, jednak<br />

wyglad i umiejscowienie tych okien zaleza od<br />

preferencji samej przegladarki. Dla przykladu,<br />

jesli odtworzysz film Flasha w przegladarce<br />

wyswietlajacej pasek adresowy i pasek narzedzi,<br />

a potem otworzysz nowe okno, to bedzie ono<br />

takze zawierac podobne paski. Takich<br />

parametrów okna nie mozna kontrolowac<br />

z poziomu Flasha, ale da sie to zrobic za<br />

pomoca jezyka JavaScript.<br />

W dokumencie HTML przechowujacym twój<br />

film Flasha mozesz zdefiniowac funkcje<br />

JavaScript kontrolujace sposób otwierania,<br />

a nawet zamykania nowych okien przegladarki.<br />

W filmie Flasha, owe funkcje mozna wywolac<br />

za pomoca akcji getURL. Zamiast podawac<br />

w polu URL adres sieciowy, wpisujesz<br />

javascript:, a nastepnie nazwe funkcji. Flash<br />

odnajduje JavaScript w dokumencie HTML<br />

i przegladarka wywoluje podana funkcje.<br />

Jezyka JavaScript mozna uzywac do<br />

kontrolowania wielu wlasciwosci okna.<br />

Wlasciwosci te okreslaja wyglad okien, ich<br />

dzialanie i umiejscowienie na ekranie<br />

(rys. 6.26), a definiuje sie je w funkcji<br />

JavaScript dokumentu HTML za pomoca<br />

okreslen tak (1) lub nie (0), ewentualnie liczby<br />

specyfikujacej rozmiary lub koordynaty.<br />

Ponizsza tabela zawiera zestawienie najczesciej<br />

uzywanych wlasciwosci, zgodnych zarówno<br />

z Internet Explorerem, jak i Netscape<br />

Navigatorem (Tabela 6.2).<br />

Komunikacja<br />

Szerokosc<br />

Góra<br />

Pasek menu<br />

Pasek narzedziowy<br />

Miejsca docelowe<br />

Adres<br />

Wysokosc<br />

Pasek stanu<br />

Pasek przewijania<br />

Lewy róg<br />

Rys. 6.26. Wlasciwosci okna przegladarki mozna ustawiac za pomoca<br />

jezyka JavaScript<br />

Skalowanie<br />

160


Zarzadzanie zasobami zewnetrznymi<br />

Tabela 6.2. Wlasciwosci okna w JavaScript<br />

Wlasciwosc<br />

height<br />

width<br />

left<br />

top<br />

Opis<br />

Rozmiar pionowy w pikselach.<br />

Rozmiar poziomy w pikselach.<br />

Wspólrzedna x lewej krawedzi.<br />

Wspólrzedna y górnej krawedzi.<br />

resizable Obszar skalowania w prawym<br />

dolnym rogu, umozliwiajacy<br />

zmiane rozmiarów okna – tak (nie)<br />

lub 1 (0).<br />

scrollbars Pionowy i poziomy pasek<br />

przewijania – tak (nie) lub 1 (0).<br />

directories Inaczej pasek osobisty, dajacy<br />

dostep do niektórych zakladek –<br />

tak (nie) lub 1 (0).<br />

locations Pasek adresowy, zawierajacy<br />

pole do wpisywania adresu URL –<br />

tak (nie) lub 1 (0).<br />

menubar<br />

status<br />

toolbar<br />

Kod<br />

JavaScript<br />

Pasek menu, zawierajacy menu<br />

rozwijane, np. Plik i Edycja.<br />

Wystepuje tylko w systemie<br />

Windows – tak (nie) lub 1 (0).<br />

Pasek stanu w lewym dolnym<br />

rogu, wyswietlajacy status<br />

przegladarki i zabezpieczenia – tak<br />

(nie) lub 1 (0).<br />

Pasek narzedziowy, z przyciskami<br />

Dalej i Wstecz oraz innymi<br />

ikonami nawigacji – tak (nie) lub 1<br />

(0).<br />

Zdefiniuj wlasciwosci<br />

w metodzie window.open<br />

Rys. 6.27. Kod JavaScript w naglówku dokumentu<br />

HTML. Film Flasha osadzony w tym dokumencie<br />

bedzie wywolywal funkcje openWindow (URL)<br />

W celu uruchomienia nowego okna<br />

za pomoca JavaScriptu:<br />

1. Najpierw musisz zdefiniowac funkcje<br />

w dokumencie HTML, przechowujacym twój<br />

film Flasha. Dodaj nastepujacy fragment<br />

skryptu do naglówka dokumentu HTML:<br />

<br />

function openWindow(URL) {<br />

newWindow = window.open(URL);<br />

}<br />

<br />

Powyzszy skrypt definiuje funkcje<br />

openWindow z argumentem URL. Po<br />

wywolaniu tej funkcji tworzony jest obiekt<br />

newWindow z adresem URL jako adresem<br />

witryny do zaladowania.<br />

2. Teraz dodaj do skryptu wlasciwosci okna,<br />

umieszczajac je w nawiasach przy metodzie<br />

window.open:<br />

<br />

function openWindow(URL) {<br />

newWindow = window.open(URL,<br />

"myNewWindow", "toolbar=0,<br />

location=0,directories=0,<br />

status=0,menubar=0,scrollbars=0,<br />

resizable=0,width=200,height=250,<br />

left=80,top=180")<br />

}<br />

<br />

3. Dodaj nastepujacy parametr wewnatrz<br />

znacznika za parametrami width<br />

i height w kodzie HTML – w miejscu,<br />

w którym wystepuje odwolanie do twojego<br />

filmu Flasha (SWF):<br />

SwLiveConnect=true<br />

To bardzo istotny parametr uruchamiajacy<br />

w interfejsie przegladarki funkcje<br />

zezwalajaca na komunikacje filmu Flasha<br />

z JavaScriptem. Dokument HTML powinien<br />

wygladac podobnie jak na rys. 6.27.<br />

Komunikacja<br />

161


Rozdzial 6.<br />

Komunikacja<br />

4. Teraz zaprojektuj film Flasha komunikujacy<br />

sie z nowo utworzonymi funkcjami<br />

JavaScript. Przygotuj przycisk i przypisz<br />

akcje getURL do jego klonu na scenie.<br />

5. W polu URL wpisz:<br />

javascript:openWindow<br />

('http://www.peachpit.com')<br />

Pole Expression pozostaw niezaznaczone,<br />

a pole Window puste. Adres witryny ujety<br />

w pojedynczy cudzyslów i nawiasy zostaje<br />

podstawiony do funkcji JavaScript jako<br />

argument URL (rys. 6.28).<br />

6. Wyeksportuj film Flasha i otwórz<br />

w przegladarce dokument HTML<br />

przechowujacy plik SWF.<br />

Po kliknieciu utworzonego przycisku –<br />

Flash podstawia adres witryny do funkcji<br />

JavaScript o nazwie openWindow.<br />

Nastepnie funkcja JavaScript tworzy nowe<br />

okno, o parametrach zdefiniowanych<br />

w dokumencie HTML (rys. 6.29).<br />

Wskazówki<br />

• Powyzsza metoda komunikacji Flasha<br />

z JavaScriptem nie bedzie dzialac ze<br />

starszymi wersjami Internet Explorera<br />

(wersja 3. i wczesniejsze), a takze Internet<br />

Explorerem 4.5 lub wczesniejszym dla<br />

Macintosha.<br />

• Istnieje wiecej wlasciwosci okna<br />

w JavaScripcie, lecz wiele z nich dziala<br />

tylko z jedna z dwóch najpopularniejszych<br />

przegladarek. Na przyklad, wlasciwosci<br />

innerHeight oraz innerWidth definiuja<br />

wlasciwy obszar zawartosci okna, ale sa to<br />

wlasciwosci unikalne dla Netscape<br />

Navigatora. Najbezpieczniej jest uzywac<br />

wlasciwosci wymienionych w tabeli 6.2.<br />

Rys. 6.28. Wyrazenie javascript: wywoluje<br />

funkcje openWindow w dokumencie HTML,<br />

zawierajacym film Flasha<br />

Rys. 6.29. Okno bez zadnych dodatkowych<br />

cech nazywa sie oknem „bez wodotrysków”.<br />

„Wodotryski” oznaczaja wszystkie cechy<br />

interfejsu okna<br />

• Tak jak podstawiasz argument URL do<br />

funkcji JavaScript z poziomu Flasha, tak<br />

tez mozesz wymusic na twojej funkcji<br />

openWindow akceptacje wiekszej ilosci<br />

argumentów. W ten sposób mozliwe<br />

staje sie definiowanie wysokosci,<br />

szerokosci i innych wlasciwosci okna<br />

z poziomu Flasha, zamiast<br />

predefiniowania ich za pomoca kodu<br />

JavaScript w dokumencie HTML.<br />

162


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.30. Akcja getURL wywoluje funkcje<br />

JavaScript closeWindow. Obiekt okna o nazwie<br />

newWindow zamyka okno<br />

W celu zamkniecia okna<br />

za pomoca JavaScriptu:<br />

1. Kiedy juz otworzysz okno za pomoca<br />

JavaScript, w podobny sposób mozesz<br />

je zamknac. Najpierw zdefiniuj funkcje<br />

JavaScript w dokumencie HTML<br />

przechowujacym twój film Flasha. Potem<br />

wywolaj funkcje akcja getURL. Postepuj<br />

jak w poprzednim cwiczeniu i dodaj nowa<br />

funkcje za funkcja openWindow:<br />

function closeWindow() {<br />

newWindow.close()<br />

}<br />

Funkcja closeWindow zasadniczo<br />

wywoluje metode close() dla obiektu<br />

newWindow, utworzonego w pierwszej<br />

funkcji.<br />

2. Utwórz w twoim filmie drugi przycisk<br />

i przypisz akcje getURL do jego klonu<br />

na scenie.<br />

3. W polu URL wpisz:<br />

javascript:closeWindow()<br />

Pole Expression pozostaw niezaznaczone,<br />

a pole Window puste (rys. 6.30).<br />

4. Wyeksportuj film i otwórz w oknie<br />

przegladarki dokument HTML<br />

przechowujacy plik SWF. Kiedy klikniesz<br />

pierwszy przycisk, utworzony kod<br />

JavaScript spowoduje uruchomienie nowego<br />

okna o nazwie newWindow. Klikniecie<br />

drugiego z przycisków, analogicznie,<br />

zamyka obiekt newWindow.<br />

Wskazówka<br />

• Zwróc uwage, ze nazwa obiektu okna rózni<br />

sie od nazwy okna. Nazwa obiektu sluzy do<br />

zamykania okna, tymczasem nazwa okna<br />

umozliwia wskazanie do niego dostepu<br />

i w efekcie zaladowanie adresu URL.<br />

W powyzszych przykladach obiekt nazywa<br />

sie newWindow, ale nazwa wystepujaca<br />

w sciezkach dostepu to myNewWindow.<br />

Komunikacja<br />

163


Rozdzial 6.<br />

Komunikacja<br />

CGI oraz metoda GET i POST<br />

Ostatni parametr akcji getURL umozliwia<br />

przesylanie informacji za posrednictwem metod<br />

GET i POST. Metody te przesylaja zmienne,<br />

zadeklarowane w filmie Flasha, do aplikacji<br />

serwerowej – np. aplikacji CGI – w celu<br />

przetworzenia. Do przesylania zmiennych<br />

uzywa sie zwykle informacji w rodzaju slów<br />

kluczowych w mechanizmach wyszukiwania,<br />

czy tez nazw logowania i hasel dostepu do<br />

witryn sieciowych. Róznice pomiedzy GET<br />

i POST sa latwo zauwazalne:<br />

Metoda GET dodaje zmienne na koncu adresu<br />

URL w akcji getURL i jest uzywana tylko<br />

z kilkoma typami zmiennych, i to takich, które<br />

przechowuja niewielka ilosc informacji.<br />

Zmienne term=CGI, category=All<br />

i pref=all sa dodawane na koncu adresu<br />

URL w nastepujacy sposób: http://search.<br />

domain.com/cgi-bin/search?term=<br />

CGI&category=All&pref=all<br />

Zapewne widziales juz podobny, dlugi adres<br />

URL, kiedy zazadales odnalezienia informacji<br />

w wyszukiwarce internetowej.<br />

Metoda POST przesyla zmienne w naglówku<br />

HTTP przegladarki uzytkownika. Korzystaj z tej<br />

metody przy przesylaniu dlugich lancuchów<br />

danych w operacjach getURL. Na przyklad,<br />

tablica informacyjna moglaby dzialac lepiej,<br />

jesli uzyc metody POST.<br />

Po przeslaniu do serwera sieciowego, zmienne<br />

sa przetwarzane przez skrypty CGI<br />

w naglówkach URL lub HTTP. Skrypty te<br />

sa obslugiwane przez twojego dostawce<br />

internetowego lub Webmastera, powinienes<br />

wiec tam wlasnie poszukac dodatkowych<br />

informacji.<br />

164


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.31. Wybranie Window/Panels/Text<br />

Options otwiera okno dialogowe umozliwiajace<br />

zmiane zwyklego bloku tekstowego w okno<br />

wprowadzania informacji<br />

Rys. 6.32. W polu Variable palety<br />

Text Options wpisz emailStr<br />

W celu przeslania informacji<br />

przy uzyciu metody GET:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i utwórz na scenie blok tekstowy.<br />

2. Otwórz palete Text Options, wybierajac<br />

Window/Panels/Text Options (rys. 6.31).<br />

3. Na palecie Text Options, z menu<br />

rozwijanego wybierz Input Text. Opcja<br />

ta umozliwia wykorzystanie utworzonego<br />

bloku tekstowego do wprowadzania<br />

informacji.<br />

4. W polu Variable wpisz emailStr<br />

(rys. 6.32). Cokolwiek wpiszesz w bloku<br />

tekstowym, zostanie to przyporzadkowane<br />

do zmiennej o nazwie emailStr.<br />

5. Utwórz przycisk i umiesc jego klon na<br />

scenie,<br />

6. Zaznacz przycisk, otwórz palete akcji<br />

i wybierz Actions/Get URL. Ponizej<br />

zdarzenia myszy on (release) pojawi<br />

sie wyrazenie getURL.<br />

7. W polu URL bloku edycji parametrów<br />

palety akcji wprowadz adres skryptu<br />

serwera – np.<br />

http://www.myserver.com/<br />

cgi-bin/list.cgi<br />

8. W polu Window wybierz _self.<br />

9. Z menu rozwijanego Variables wybierz<br />

Send using GET (rys. 6.33). Zapis akcji<br />

powinien wygladac nastepujaco:<br />

on (release) {<br />

getURL (<br />

"http://www.myserver.com/cgibin/list.cgi",<br />

"_self", "GET");<br />

}<br />

Kiedy uzytkownik wprowadzi w bloku<br />

tekstowym adres e-mail i kliknie przycisk,<br />

adres ten zostanie dopisany na koncu adresu<br />

URL i przeslany do skryptu CGI.<br />

Wiecej o zmiennych i wprowadzaniu tekstu<br />

dowiesz sie w czesci V, „Praca z informacja”.<br />

Komunikacja<br />

165


Rozdzial 6.<br />

Komunikacja<br />

Oprócz standardów HTML i JavaScript, Flash<br />

5 wspiera takze XML. Chociaz wglebienie sie<br />

w XML-a wykracza poza ramy tej ksiazki,<br />

ponizszy krótki akapit pomoze ci pojac<br />

ekscytujace mozliwosci, jakie Flash<br />

wprowadza do XML-a.<br />

XML (skrót od extensible markup language,<br />

strukturalny jezyk znacznikowy) jest poteznym<br />

jezykiem, aktualnie zatwierdzanym przez World<br />

Wide Web Consortium (W3C). Jego rozszerzalna<br />

natura umozliwia definiowanie zawartosci<br />

w zaleznosci od jej znaczenia i kregu odbiorców.<br />

XML bardzo rózni sie od tradycyjnych jezyków<br />

znacznikowych w rodzaju HTML, które mówia<br />

przegladarce, w jaki sposób rozmieszczac<br />

zawartosc – wedlug zasady umiesc tekst tutaj,<br />

ustaw taka czcionke, ustaw go obok tego obrazka.<br />

XML definiuje typy danych, co czyni zen w pelni<br />

skalowalny system – zawartosc nie jest zwiazana<br />

ze sposobem prezentacji i moze byc ustalana<br />

w zaleznosci od wymagan odbiorców. Fragment<br />

kodu XML moze wygladac nastepujaco:<br />

<br />

Big Tents<br />

MYBDAY021570<br />

03SUIRAUQA.GIF<br />

<br />

<br />

All-Weather Tent<br />

<br />

7.25"<br />

7.25"<br />

48.5"<br />

8lbs.<br />

<br />

$75.43<br />

$135.99<br />

<br />

<br />

Komunikacja z obiektami XML<br />

We Flashu 5, XML oraz obiekty<br />

XMLSocket umozliwiaja komunikacje<br />

z innymi aplikacjami i arkuszami stylów<br />

w celu zarzadzania bogata w media<br />

zawartoscia, unikalna dla kazdego<br />

uzytkownika. Przemysly rozrywkowy,<br />

samochodowy, bankowy i handlu<br />

elektronicznego odkryly juz korzysci<br />

plynace z polaczenia Flasha i XML-a.<br />

Prawdziwa aplikacja dla handlu<br />

elektronicznego wprowadza rozszerzalny<br />

interfejs pomiedzy sieciowym sprzedawca<br />

koncowym a jego partnerami,<br />

hurtownikami i dostawcami – za<br />

posrednictwem korzystajacej z technologii<br />

Flasha supersieci. Poslugujac sie Flashem<br />

jako narzedziem do tworzenia interfejsu –<br />

przycisków, pasków przewijania, bloków<br />

wprowadzania tekstu, itd. – mozesz<br />

wyposazyc handlowca w interfejs<br />

przeciagnij-i-upusc, pozwalajacy zamawiac<br />

produkty i odsylac je do magazynu. Ten<br />

sam obiekt XML moze identyfikowac<br />

i umozliwiac hurtownikowi zmiane calego<br />

systemu sprzedazy, jak i poszczególnych<br />

cen w czasie negocjacji dotyczacych<br />

umieszczenia produktu na witrynie<br />

sprzedawcy i prowadzenia kampanii przez<br />

e-mail. Gdyby wykonac je w tradycyjny<br />

sposób, wszystkie te tak rózne formy<br />

sieciowe pochlonelyby olbrzymia ilosc<br />

czasu potrzebnego na ich przygotowanie,<br />

a kolejne trzeba by tworzyc wraz<br />

z pojawianiem sie nowych uzytkowników.<br />

166


Zarzadzanie zasobami zewnetrznymi<br />

XSL jest arkuszem stylu dolaczanym do XML,<br />

a wystarczylby jeden lub dwa takie szablony<br />

do okreslenia róznych typów odbiorcy twoich<br />

projektów Flasha. Arkusz stylu przeksztalca<br />

interfejs w oparciu o typ uzytkownika.<br />

Handlowiec móglby ogladac jakies<br />

strumieniowe dane przedstawiajace dzienna<br />

sprzedaz i zamówienia, jak równiez<br />

negocjowac z hurtownikiem na zywo. Z d rugiej<br />

strony, partner móglby sprawdzic efekty<br />

promocji wsród klientów sprzedawcy<br />

koncowego i zadecydowac o przedluzeniu<br />

promocji na nastepny rok.<br />

Komunikacja z obiektami XML<br />

Flash 5 umozliwia wprowadzenie tej<br />

szczególnie rozszerzalnej warstwy<br />

pomiedzy bogata w media zawartoscia<br />

a systemami negocjacji i przeplywu danych.<br />

XML nie sprawi co prawda, ze twoje<br />

animacje beda bardziej plynne, a przekazy<br />

audio wyrazniejsze, jednak dzieki niemu<br />

latwiej jest tworzyc unikalne i skalowalne<br />

systemy uzytkowania. Jesli chcialbys<br />

nauczyc sie wiecej o XML-u i obiektach<br />

XMLSocket, siegnij do opisu jezyka<br />

ActionScript, który otrzymales wraz<br />

z programem.<br />

Komunikacja<br />

167


Dolaczanie filmów z zewnatrz<br />

Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

Nauczyles sie juz, jak Flash wykorzystuje akcje<br />

getURL do laczenia sie z dowolnym plikiem,<br />

takze innym filmem Flasha. Wyglada to tak, ze<br />

nowy plik SWF zostaje wczytany do biezacego<br />

okna przegladarki, zastepujac tym samym<br />

pierwotny film, lub tez pojawia sie w zupelnie<br />

nowym oknie. Innym sposobem na dolaczanie<br />

zewnetrznych filmów do oryginalnego filmu<br />

Flasha jest skorzystanie z akcji loadMovieNum<br />

(oznaczona jako Load Movie w grupie Basic<br />

Actions) (rys. 6.34). Akcja ta umozliwia<br />

zintegrowanie dodatkowego pliku SWF<br />

z biezaca zawartoscia. Oryginalny film Flasha<br />

okresla predkosc odtwarzania, rozmiar sceny<br />

i kolor tla, ale mozliwe jest tworzenie warstw<br />

dla kilku zewnetrznych plików SWF, a takze<br />

nawigowanie po ich listwach czasowych.<br />

W poprzednim rozdziale nauczyles sie<br />

kontrolowac listwy czasowe klipów filmowych<br />

w obrebie pojedynczego filmu Flasha. Teraz<br />

spróbuj wyobrazic sobie zlozonosc nawigacji<br />

po wielu listwach czasowych w wielu filmach!<br />

Jedna z korzysci plynacych z wykorzystywania<br />

zewnetrznych filmów Flasha jest ograniczenie<br />

wielkosci calego projektu i skrócenie czasów<br />

ladowania. Jesli, na przyklad, budujesz witryne<br />

sieciowa majaca prezentowac twoje osiagniecia<br />

w tworzeniu animacji Flasha, mozesz<br />

przechowywac poszczególne animacje<br />

w postaci oddzielnych plików SWF. Wystarczy<br />

zaprojektowac glówny interfejs, umozliwiajacy<br />

twoim potencjalnym klientom wczytanie<br />

wybranej animacji w dowolnej chwili. W ten<br />

sposób twoi odbiorcy korzystaja tylko z tej<br />

zawartosci strony, której potrzebuja, i tylko<br />

wtedy, kiedy jest to niezbedne, a glówny<br />

interfejs nie peka w szwach od zawartosci<br />

kazdej jednej animacji (rys. 6.35).<br />

Rys. 6.34. Akcja loadMovieNum w menu<br />

palety akcji<br />

Akcja<br />

loadMovieNum<br />

Rys. 6.35. Sposobem na separowanie bogatej<br />

w dane zawartosci jest wykorzystanie<br />

zewnetrznych plików SWF. W tym przykladzie<br />

film interface.swf wczytuje pliki animacji<br />

jeden po drugim na zadanie<br />

168


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.36. Animacja kuli odbijajacej sie<br />

wzdluz obrzezy prostokata<br />

Rys. 6.37. Akcja loadMovieNum posiada<br />

parametry: URL (sciezka dostepu), Location<br />

(umiejscowienie – poziom) i Variables (zmienne)<br />

Poziomy<br />

Po wczytaniu zewnetrznych plików SWF<br />

do innego filmu Flasha ich rozmieszczanie<br />

kontroluje sie za pomoca poziomów.<br />

Oryginalny film jest zawsze na poziomie 0<br />

(Level 0), a kazdy nastepny zostaje<br />

umieszczony o jeden poziom wyzej. Wyzsze<br />

poziomy nakladane sa na nizsze, tak wiec<br />

zaladowane filmy beda zawsze pojawiac sie<br />

powyzej pierwotnego filmu na scenie. Jesli<br />

chcesz usunac film, wystarczy podac numer<br />

poziomu, a wówczas wymuszane jest<br />

zastosowanie akcji unloadMovieNum wobec<br />

filmu o okreslonym poziomie. Podobny efekt<br />

osiagniesz, zastepujac niechciany film nowym<br />

filmem. Jesli wczytasz nowy film do poziomu<br />

zajmowanego przez inny film, nowy zajmie<br />

miejsce starego.<br />

W celu wczytania zewnetrznego filmu:<br />

1. Najpierw przygotuj film, który chcialbys<br />

wczytac. Utwórz krótka animacje z kilkoma<br />

elementami tla i scena o wzglednie<br />

niewielkich rozmiarach (rys. 6.36).<br />

2. Wyeksportuj gotowy film do pliku SWF.<br />

3. Otwórz nowy dokument Flasha, w którym<br />

utworzysz swój glówny film. Do<br />

wspomnianego dokumentu ladowany bedzie<br />

film zewnetrzny.<br />

4. Utwórz symbol przycisku i przeciagnij jego<br />

klon z biblioteki na scene.<br />

5. Zaznacz klon i otwórz palete akcji. Wybierz<br />

Basic Actions/Load Movie (Esc + lm).<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie akcja<br />

loadMovieNum (rys. 6.37).<br />

Dolaczanie filmów z zewnatrz<br />

169


Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

6. W polu URL wpisz nazwe zewnetrznego<br />

pliku SWF. Pole Expression pozostaw<br />

niezaznaczone (rys. 6.38).<br />

Pole URL okresla sciezke dostepu do pliku.<br />

Tutaj wprowadzamy sciezke wzgledna, tak<br />

wiec Flash sprawdza w poszukiwaniu pliku<br />

SWF biezaca lokalizacje. Katalogi mozna<br />

zmieniac za pomoca ukosnika (/) i dwóch<br />

kropek (..), ewentualnie wprowadzajac<br />

bezwzgledna sciezke dostepu do pliku SWF<br />

umieszczonego na witrynie internetowej.<br />

7. W przypadku parametru Location z menu<br />

rozwijanego wybierz opcje Level, a w polu<br />

obok wpisz cyfre o wartosci wiekszej niz 0<br />

(rys. 6.39).<br />

8. Wyeksportuj film. Umiesc zarówno glówny<br />

plik SWF, jak i plik zewnetrzny w tym<br />

samym katalogu.<br />

9. Odtwórz film zawierajacy utworzony<br />

wczesniej przycisk w przegladarce lub<br />

za pomoca odtwarzacza Flasha.<br />

Klikniecie przycisku spowoduje wczytanie<br />

filmu umieszczonego powyzej oryginalnego<br />

filmu (rys. 6.40).<br />

Rys. 6.38. Podanie wzglednego adresu URL<br />

oznacza, ze plik bouncingball.swf powinien<br />

znajdowac sie w tym samym katalogu<br />

co oryginalny film Flasha<br />

Rys. 6.39. Na jednym poziomie moze znalezc<br />

sie tylko jeden film, ale ilosc poziomów nie<br />

jest ograniczona<br />

Film bouncingball.swf na poziomie 1<br />

Rys. 6.40. Film oryginalny na poziomie 0<br />

(Level 0) (u góry) i film wczytywany na<br />

poziomie 1 (Level 1) (na dole). Przycisk na<br />

poziomie 0 jest caly czas aktywny<br />

170


Zarzadzanie zasobami zewnetrznymi<br />

υ Filmy wczytywane do wyzszego poziomu<br />

beda nakladac sie na filmy wczytywane do<br />

nizszych poziomów.<br />

υ Wczytywane filmy posiadaja przezroczyste<br />

sceny. Jesli chcesz, by sceny byly kryjace,<br />

utwórz wypelniony prostokat w dolnej<br />

warstwie wczytywanego filmu (rys. 6.41).<br />

Film na poziomie 1<br />

Film na poziomie 0<br />

Film na<br />

poziomie 1<br />

Rys. 6.41. Jesli plik SWF jest wczytywany<br />

i umieszczany powyzej filmu na poziomie 0,<br />

jego scena staje sie przezroczysta<br />

Film na poziomie 1<br />

Cechy wczytywanych filmów<br />

Film na<br />

poziomie 0<br />

Film na poziomie 1<br />

υ Wczytywane filmy sa pozycjonowane<br />

wzgledem ich górnego lewego rogu od<br />

górnego lewego rogu oryginalnego<br />

filmu. Tak wiec wczytywane filmy ze<br />

scena o mniejszych rozmiarach beda<br />

wciaz wyswietlac obiekty znajdujace sie<br />

poza ich scena (rys. 6.42). Przygotuj<br />

maske, która zablokuje obiekty mogace<br />

wykroczyc poza scene, skoro odbiorca<br />

nie powinien ich widziec. Podobnie<br />

filmy z wieksza scena beda ucinane<br />

wzdluz dolnego i prawego brzegu<br />

(rys. 6.43).<br />

υ Filmy wczytywane do poziomu 0<br />

zajmuja miejsce oryginalnego filmu,<br />

jednak rozmiar sceny, predkosc<br />

odtwarzania i kolor tla pozostaja<br />

niezmienione. Jesli wczytany film<br />

posiada scene wieksza niz oryginal,<br />

zostanie wycentrowany i wyskalowany,<br />

co spowoduje dopasowanie sie do<br />

sceny.<br />

Film na poziomie 1<br />

Film na poziomie 1<br />

Dolaczanie filmów z zewnatrz<br />

Film na poziomie 0 Film na poziomie 0<br />

Rys. 6.42. Mniejsze pliki SWF sa pozycjonowane<br />

wzgledem lewego górnego rogu i wyswietlaja<br />

obszar roboczy poza scena. Rozwaz uzycie w tym<br />

miejscu masek zewnetrznych plików SWF<br />

o rozmiarach zgodnych z rozmiarami ich scen<br />

Film na poziomie 0 Film na poziomie 0<br />

Rys. 6.43. Wieksze pliki SWF sa obcinane,<br />

gdy wczytuje sie je nad filmem poziomu 0<br />

171


Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

W celu usuniecia filmu:<br />

1. Korzystajac dalej z plików przygotowanych<br />

w poprzednim cwiczeniu, utwórz kolejny<br />

klon przycisku w oryginalnym filmie,<br />

a nastepnie otwórz palete akcji.<br />

2. Wybierz Basic Actions/Unload Movie<br />

(Esc + um).<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie akcja<br />

unloadMovieNum (rys. 6.44).<br />

3. Dla parametru Location wybierz z menu<br />

rozwijanego opcje Level, a nastepnie wpisz<br />

te sama cyfre, która wprowadziles dla akcji<br />

loadMovieNum (rys. 6.45).<br />

4. Wyeksportuj glówny film do pliku SWF<br />

i umiesc go w tej samej lokalizacji, co<br />

zewnetrzny plik SWF.<br />

5. Odtwórz film w przegladarce lub<br />

odtwarzaczu Flasha.<br />

Pierwszy z przycisków wczytuje zewnetrzny<br />

film do podanego poziomu. Drugi przycisk<br />

usuwa film z tego poziomu.<br />

W celu zastapienia wczytanego<br />

filmu innym filmem:<br />

1. Otwórz nowy dokument Flasha i przygotuj<br />

nastepna niewielka animacje, która posluzy<br />

za drugi film zewnetrzny.<br />

2. Dodaj trzeci klon przycisku do tego samego<br />

glównego filmu, którego uzywales w<br />

poprzednim cwiczeniu, a nastepnie otwórz<br />

palete akcji.<br />

3. Wybierz Basic Actions/Load Movie.<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie akcja<br />

loadMovieNum (rys. 6.46).<br />

4. W polu URL wpisz nazwe drugiego filmu<br />

zewnetrznego. Pole Expression pozostaw<br />

niezaznaczone (rys. 6.47).<br />

Rys. 6.44. Akcja unloadMovieNum ma tylko<br />

jeden parametr: Location<br />

Rys. 6.45. Parametr Location akcji<br />

unloadMovieNum. Dowolny film z poziomu 1<br />

zostanie usuniety<br />

Rys. 6.46. Akcja loadMovieNum przypisana<br />

do przycisku<br />

Rys. 6.47. Plik bouncingsquare.swf stanowi<br />

sciezke dostepu<br />

172


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.48. Plik bouncingsquare.swf zostanie<br />

wczytany do poziomu 1.<br />

Film bouncingball.swf na poziomie 1<br />

5. Dla parametru Location wybierz z menu<br />

rozwijanego opcje Level, a nastepnie wpisz<br />

te sama cyfre, której uzyles dla pierwszej<br />

akcji loadMovieNum (rys. 6.48).<br />

6. Wyeksportuj glówny film do pliku SWF<br />

i umiesc go w tej samej lokalizacji, co<br />

obydwa zewnetrzne pliki SWF.<br />

7. Odtwórz glówny film, zawierajacy trzy<br />

przyciski, w przegladarce lub odtwarzaczu<br />

Flasha.<br />

Po kliknieciu pierwszego przycisku Flash<br />

wczyta zewnetrzny film, rezydujacy nad<br />

oryginalnym filmem. Klikniecie trzeciego<br />

z utworzonych przycisków sprawi, ze Flash<br />

wczyta drugi film zewnetrzny do tego<br />

samego poziomu, zastepujac tym samym<br />

pierwszy z filmów (rys. 6.49).<br />

Dolaczanie filmów z zewnatrz<br />

Film bouncingsquare.swf na poziomie 1<br />

Rys. 6.49. Poczatkowo film bouncingball.swf<br />

zajmuje poziom 1 (u góry). Inny film, po<br />

wczytaniu do tego samego poziomu, zastapi<br />

plik bouncingball.swf<br />

173


Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

Wczytywanie filmów<br />

do klipów filmowych<br />

Wczytywanie zewnetrznych filmów do<br />

poziomów podlega pewnym ograniczeniom,<br />

z uwagi chocby na fakt pozycjonowania ich<br />

wzgledem lewego górnego rogu glównej sceny.<br />

Przeszkode te mozna ominac i przesuwajac<br />

odpowiednio elementy zewnetrznego filmu<br />

i majac na uwadze miejsca, w których beda<br />

wyswietlane. Mozna tez zmienic caly film,<br />

dopasowujac rozmiar jego sceny do rozmiarów<br />

sceny glównego filmu.<br />

Jednak jeszcze lepszym rozwiazaniem jest<br />

umieszczanie takich filmów w klipach<br />

filmowych, zamiast wczytywanie ich do<br />

poziomów. W takim przypadku lewy górny róg<br />

wczytywanego filmu jest umieszczany<br />

w punkcie srodkowym wskazanego klipu<br />

filmowego (rys. 6.50), a poniewaz klipy<br />

filmowe moga byc rozmieszczane po calej<br />

scenie, w ten sposób równiez wczytywane filmy<br />

mozesz rozkladac dokladnie tak, jak chcesz.<br />

Wczytany film zajmuje miejsce klipu – listwa<br />

czasowa klipu filmowego zostaje zastapiona<br />

listwa czasowa wczytanego filmu. Mimo<br />

wszystko klip filmowy zachowuje nazwe<br />

przypisana do jego klonu; równiez wszystkie<br />

efekty skalowania, rotacji, przekrzywiania,<br />

kolorowania i nakladania przezroczystosci,<br />

wykonane na klonie klipu filmowego, zostana<br />

przypisane wczytanemu filmowi (rys. 6.51).<br />

W celu wczytania<br />

zewnetrznego filmu<br />

do klipu filmowego:<br />

1. Utwórz symbol klipu filmowego<br />

i przeciagnij jego klon z biblioteki na scene<br />

(rys. 6.52).<br />

2. Zaznacz klon i za pomoca palety Instance<br />

nadaj mu nazwe.<br />

3. Utwórz symbol przycisku i przeciagnij jego<br />

klon z biblioteki na scene.<br />

4. Zaznacz klon przycisku i otwórz paleteakcji.<br />

Klip filmowy<br />

w ksztalcie trójkata<br />

Klip filmowy<br />

na poziomie 0<br />

Zewnetrzny<br />

film<br />

Klip filmowy<br />

na poziomie 0<br />

Punkt poczatkowy<br />

klipu filmowego<br />

w ksztalcie trójkata<br />

Rys. 6.50. Film wczytany do klipu filmowego<br />

jest pozycjonowany wzgledem lewego<br />

górnego rogu w punkcie srodkowym filmu<br />

Klip filmowy – obrócony,<br />

przeskalowany i przekrzywiony<br />

Klip filmowy<br />

w ksztalcie<br />

trójkata<br />

Klip filmowy<br />

na poziomie 0<br />

Zewnetrzny film<br />

Wczytany film –<br />

obrócony,<br />

przeskalowany<br />

i przekrzywiony<br />

Film wczytany do<br />

klipu filmowego<br />

w ksztalcie trójkata<br />

Klip filmowy<br />

na poziomie 0<br />

Film wczytany do<br />

klipu filmowego<br />

w ksztalcie trójkata<br />

Rys. 6.51. Wczytywany film przejmuje nazwe,<br />

pozycje, skalowanie, przekrzywienie, rotacje,<br />

kolory i efekt przezroczystosci przypisane do<br />

klonu klipu filmowego<br />

Rys. 6.52.<br />

Klon klipu<br />

filmowego<br />

posluzy za<br />

miejsce<br />

przeznaczeni<br />

a dla<br />

wczytanego<br />

w przyszlosci<br />

filmu<br />

174


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.53. Parametry akcji loadMovieNum.<br />

Klip filmowy greensquare, obrócony o 45 stopni<br />

Film bouncingball.swf wczytany<br />

do pliku _root.greensquare<br />

Rys. 6.54. Film bouncingball.swf zostaje<br />

wczytany do klipu filmowego greensquare, który<br />

wczesniej zostal obrócony<br />

5. Wybierz Basic Actions/Load Movie.<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie akcja<br />

loadMovieNum.<br />

6. W polu URL wpisz nazwe zewnetrznego<br />

pliku SWF. Dla parametru Location<br />

wybierz z menu rozwijanego opcje Target,<br />

a nastepnie wprowadz sciezke dostepu do<br />

klonu klipu filmowego na scenie (rys. 6.53).<br />

7. Wyeksportuj glówny film do pliku SWF<br />

i umiesc go w tej samej lokalizacji, co<br />

zewnetrzny plik SWF.<br />

8. Odtwórz glówny film zawierajacy przycisk<br />

i klip filmowy za pomoca przegladarki lub<br />

odtwarzacza Flasha.<br />

Po kliknieciu utworzonego przycisku Flash<br />

wczyta zewnetrzny film do klipu filmowego.<br />

Wczytany film przejmie wszystkie<br />

ustawienia klipu filmowego, np. pozycje,<br />

skalowanie, rotacje, nazwe klonu, jednak<br />

listwa czasowa na scenie bedzie od teraz<br />

listwa czasowa wczytanego filmu<br />

(rys. 6.54).<br />

Wskazówka<br />

• Zostaw pierwsze ujecie kluczowe twojego<br />

klipu filmowego puste, zeby sluzylo za<br />

pojemnik, do którego trafi wczytany film.<br />

Pamietaj, ze pusty okrag, reprezentujacy<br />

punkt poczatkowy tego klipu filmowego<br />

wskazuje pozycje lewego górnego rogu<br />

kazdego wczytywanego filmu.<br />

Dolaczanie filmów z zewnatrz<br />

175


Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

Nawigowanie<br />

listwami czasowymi<br />

wczytywanych filmów<br />

Po wczytaniu filmów do glównego filmu,<br />

zyskujesz dostep do ich listew czasowych<br />

i w efekcie kontrole nad procesem odtwarzania.<br />

Jesli myslales, ze nawigowanie pomiedzy<br />

listwami czasowymi klipów filmowych bylo<br />

zlozone, to teraz spróbuj wyobrazic sobie<br />

stopien skomplikowania sytuacji, w której masz<br />

do czynienia z wieloma filmami, przy czym<br />

kazdy zawiera dodatkowo wlasny zestaw<br />

klipów filmowych!<br />

Flash umozliwia okreslanie sciezek dostepu do<br />

wczytywanych filmów i ich listew czasowych<br />

w logiczny, minimalizujacy ryzyko pomylki,<br />

sposób. Jako ze wczytane filmy rezyduja na<br />

róznych poziomach, program uzywa terminu<br />

_level1 w odniesieniu do filmu na poziomie<br />

1, _level2 w odniesieniu do filmu na<br />

poziomie 2, itd. Filmy wczytywane do klipów<br />

filmowych przejmuja nazwy przypisane do<br />

klonów tych klipów, tak wiec sciezki dostepu<br />

do tych wczytanych filmów sa w zasadzie<br />

sciezkami dostepu do klipów filmowych. Jesli<br />

wczytywane filmy zawieraja w sobie kolejne<br />

klipy filmowe, uzyj kropki do tworzenia sciezek<br />

dostepu do plików znajdujacych sie nizej<br />

w hierarchii listwy czasowej, podobnie, jak robi<br />

sie to w przypadku klipów filmowych na<br />

glównej listwie czasowej. Przykladowo,<br />

_level2.bigCircle.smallCircle jest<br />

sciezka dostepu do klipu filmowego o nazwie<br />

smallCircle, zawierajacego sie w klipie<br />

filmowym bigCircle, a rezydujacego w filmie<br />

wczytanym do poziomu 2.<br />

W celu utworzenia<br />

sciezki dostepu do wczytanego filmu:<br />

1. Tak jak w poprzednich cwiczeniach, utwórz<br />

animacje, która posluzy za zewnetrzny film<br />

Flasha. Wyeksportuj ja do pliku SWF.<br />

2. Otwórz nowy dokument Flasha. Utwórz<br />

przycisk i przeciagnij jego klon z biblioteki<br />

na scene.<br />

176


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.55. Akcja loadMovieNum przypisana<br />

do przycisku umieszcza plik bouncingball na<br />

poziomie 1<br />

Rys. 6.56. Metoda stop wykonywana jest w filmie<br />

na poziomie 1<br />

Rys. 6.57. Manipulator onClipEvent (data)<br />

w menu palety akcji<br />

3. Przypisz do przycisku akcje<br />

loadMovieNum, podajac nazwe<br />

zewnetrznego pliku SWF jako adres w polu<br />

URL i wpisujac liczbe wieksza niz 0 w polu<br />

Location (rys. 6.55)<br />

4. Przeciagnij na scene kolejny klon<br />

utworzonego przycisku, który posluzy do<br />

kontrolowania listwy czasowej<br />

wczytywanego filmu.<br />

5. Z palety akcji wybierz Actions/evaluate<br />

(Esc + ev). Ponizej manipulatora zdarzenia<br />

myszy on (release) pojawi sie wyrazenie<br />

evaluate.<br />

6. W polu Expression wpisz _level,<br />

nastepnie numer poziomu, a potem kropke<br />

i na koncu metode stop() (rys. 6.56).<br />

Wyrazenie to wstrzymuje odtwarzanie na<br />

listwie czasowej filmu umieszczonego na<br />

podanym poziomie.<br />

7. Wyeksportuj glówny film do pliku SWF<br />

i umiesc go w tej samej lokalizacji, co<br />

zewnetrzny plik SWF. Odtwórz film<br />

zawierajacy przyciski za pomoca<br />

przegladarki lub odtwarzacza Flasha.<br />

Pierwszy z przycisków wczytuje zewnetrzny<br />

plik SWF do wskazanego poziomu. Drugi<br />

przycisk powoduje przejscie do tego<br />

poziomu i zatrzymuje odtwarzanie.<br />

Wykrywanie zdarzenia Load Movie<br />

Wczytanie zewnetrznego filmu wyzwala<br />

zdarzenie, które mozesz wykryc. Zewnetrzne<br />

pliki SWF sa plikami danych, wiec mozna uzyc<br />

zdarzenia klipu filmowego onClipEvent<br />

(data) do okreslania, czy pliki SWF zostaly<br />

wczytane w calosci (rys. 6.57).<br />

Dolaczanie filmów z zewnatrz<br />

177


Rozdzial 6.<br />

Dolaczanie filmów z zewnatrz<br />

Ten manipulator zdarzenia jest przydatny, gdy<br />

akcja loadMovieNum pojawia sie<br />

automatycznie lub dynamicznie. Ostatecznie,<br />

jesli akcja loadMovieNum jest wykonywana<br />

po wcisnieciu przycisku, mozesz po prostu uzyc<br />

zdarzenia myszy jako manipulatora.<br />

Manipulator onClipEvent (data) jest<br />

uzywany takze do wykrywania danych<br />

nadchodzacych w formie zmiennych. Dane<br />

z zewnatrz moga byc wczytywane do Flasha<br />

tak, jak zewnetrzne pliki SWF. Wiecej na temat<br />

zmiennych dowiesz sie z czesci V, „Praca<br />

z informacja”.<br />

W celu wczytania<br />

manipulatora zdarzenia<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego<br />

i przeciagnij jego klon z biblioteki na scene.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Wybierz Actions/onclipEvent (Esc + oc)<br />

(rys. 6.58).<br />

4. W bloku edycji parametrów kliknij Data<br />

radio button.<br />

5. Z okna narzedzi wybierz odpowiednia akcje,<br />

wykonywana w odpowiedzi na wczytanie<br />

zdarzenia klipu filmowego (rys. 6.59).<br />

Jesli rozpocznie sie wczytywanie pliku SWF<br />

do glównego filmu, wystapi zdarzenie<br />

onClipEvent (data) i zostanie<br />

wykonana akcja przypisana do tego<br />

zdarzenia.<br />

Rys. 6.58. Zdarzenie onClipEvent<br />

Rys. 6.59. Po wczytaniu zewnetrznego filmu<br />

Flash przechodzi do ujecia o nazwie<br />

incoming w klipie filmowym display<br />

178


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.60. Wybierz Window/Generator Objects<br />

Rys. 6.61. Przeciagnij obiekt Insert Flash Movie<br />

z palety Generator Objects na scene<br />

Wspólpraca<br />

z narzedziem Generator<br />

Z pewnoscia akcja loadMovieNum przydaje sie<br />

do wczytywania zewnetrznych filmów Flasha,<br />

jednak filmy takie pozostaja statyczne, jako ze<br />

ich grafika i animacje zostaly wczesniej<br />

zaprojektowane i wyrenderowane. Jesli chcesz<br />

wprowadzac zawartosc „w locie” i tworzyc<br />

grafike oraz animacje Flasha z dynamiczna<br />

zawartoscia, potrzebujesz narzedzia zwanego<br />

Flash Generator.<br />

Praca z Generatorem przebiega w dwóch<br />

fazach. Najpierw tworzysz we Flashu szablony,<br />

nazywane plikami szablonu Shockwave Flash<br />

(SWT). Szablony te okreslaja typ<br />

wykorzystywanych danych oraz ich<br />

przeznaczenie. Nastepnie, kiedy uzyskasz<br />

dostep do owych plików SWT za pomoca<br />

przegladarki, Generator Dynamic Graphics<br />

Sever laczy szablony z danymi i dostarcza<br />

zintegrowane media odbiorcy. Generator jest<br />

idealnym narzedziem do tworzenia grafik<br />

Flasha z nieustannie zmieniajacymi sie<br />

informacjami. Na przyklad, grafic zna mapa<br />

pogody moze byc tworzona w czasie<br />

rzeczywistym na podstawie informacji<br />

pogodowych dostepnych na serwerze; podobnie<br />

odpowiedni banner móglby wyswietlac na<br />

biezaco uaktualnienia cen na gieldzie.<br />

Jako ze praca z Generatorem opiera sie na<br />

wykorzystaniu osobnej aplikacji serwerowej,<br />

ograniczymy sie w ponizszym cwiczeniu do<br />

przygotowania pojedynczego pliku SWT,<br />

wywolujacego film Flasha.<br />

W celu utworzenia<br />

szablonu Generatora:<br />

1. Wybierz Window/Generator Objects<br />

(rys. 6.60). Pojawi sie paleta Generator<br />

Objects.<br />

2. Umiesc na scenie obiekt Insert Flash Movie<br />

(rys. 6.61).<br />

Wspólpraca z narzedziem Generator<br />

179


Rozdzial 6.<br />

Wspólpraca z narzedziem Generator<br />

3. Kliknij dwukrotnie obiekt Insert Flash<br />

Movie lub wybierz Window/Panels/<br />

Generator . Pojawi sie paleta Generator.<br />

4. Jako nazwe pliku (File Name) wprowadz<br />

nazwe innego pliku SWF, który zostanie<br />

umieszczony w tej samej lokacji (rys. 6.62).<br />

5. Wybierz File/Publish Settings. Otworzy sie<br />

okno dialogowe Publish Settings.<br />

6. W zakladce Formats zaznacz opcje Flash,<br />

Generator Template i HTML (rys. 6.63).<br />

7. W zakladce Generator wybierz kolor tla<br />

(pole Background), poniewaz Generator<br />

zastapi ustawienia filmu Flasha (rys. 6.64).<br />

8. Kliknij Publish. Flash wyeksportuje pliki<br />

HTML, SWF i SWT.<br />

9. Umiesc wszystkie pliki (HTML, SWF<br />

i SWT) w tej samej lokacji na twoim<br />

serwerze sieciowym.<br />

10. W przegladarce wpisz pelny adres URL<br />

pliku SWT, np.:<br />

http://www.myserver.com/intro.swt<br />

Rys. 6.62. Plik<br />

myMovie.swf jest<br />

wzgledna sciezka<br />

dostepu do filmu,<br />

który ma zostac<br />

wstawiony. Plik<br />

ten powinien<br />

znajdowac<br />

sie w tej samej<br />

lokalizacji co plik<br />

SWT<br />

Rys. 6.63. W zakladce Formats okna<br />

dialogowego Publish Settings wybierz<br />

nastepujace typy plików: Flash, Generator<br />

Template oraz HTML<br />

Rys. 6.64. Wybierz kolor tla (Background)<br />

w zakladce Generator okna dialogowego<br />

Publish Settings<br />

180


Zarzadzanie zasobami zewnetrznymi<br />

Tabela 6.3. Parametry akcji FSCommand dla<br />

projektorów<br />

Parametr<br />

Opis i argumenty<br />

fullscreen Zezwala na odtwarzanie<br />

w trybie pelnoekranowym<br />

i uniemozliwia skalowanie<br />

(prawda lub falsz).<br />

allowscale Skaluje grafike przy zmianie<br />

rozmiaru okna (prawda lub falsz).<br />

trapallkeys Zezwala filmowi<br />

(w miejsce odtwarzacza)<br />

na przechwytywanie zdarzen<br />

naciskania klawiszy (prawda<br />

lub falsz).<br />

showmenu<br />

exec<br />

quit<br />

Wyswietla menu podreczne<br />

w przypadku klikniecia obszaru<br />

filmu prawym przyciskiem<br />

myszy (prawda lub falsz).<br />

Uruchamia plik wykonawczy<br />

(sciezka dostepu do pliku).<br />

Zamyka projektor<br />

Projektory i akcja FSCommand<br />

Najczesciej twoje filmy Flasha beda odtwarzane<br />

w przegladarkach, za posrednictwem sieci<br />

Internet. Flash zostal zaprojektowany<br />

i skonstruowany wlasnie z ta mysla. Jednak<br />

program umozliwia takze tworzenie<br />

projektorów, samouruchamiajacych sie<br />

aplikacji, które nie wymagaja przegladarki,<br />

czy odtwarzacza filmów Flasha. Zarówno<br />

w systemie Windows, jak Mac OS mozesz<br />

tworzyc projektory zgodne jednoczesnie z obu<br />

tymi platformami. W przypadku Windows pliki<br />

takie posiadaja rozszerzenie .EXE, w Mac OS<br />

do nazwy pliku dodawane jest slowo projector .<br />

Projektory maja wieksze rozmiary niz<br />

tradycyjne pliki SWF, jednak zawieraja<br />

wszystko, co jest potrzebne do obejrzenia<br />

zawartosci, która przygotowales, wlaczajac<br />

w to grafike, animacje, dzwiek i funkcje<br />

interaktywne. Uzywaj projektorów do<br />

umieszczania projektów Flasha na przenosnych<br />

mediach, jak dyskietki i plyty CD-ROM, co jest<br />

idealnym sposobem na przygotowanie<br />

wszelkiego rodzaju prezentacji i materialów<br />

reklamowych.<br />

Jednak odtwarzanie filmów Flasha za<br />

posrednictwem projektorów jest wyjatkowe<br />

w jednym aspekcie. Projektory nie uzywaja<br />

dokumentu HTML, zawierajacego znaczniki,<br />

czyli „instrukcje” okreslajace sposób<br />

wyswietlania. Czy odtwarzanie ma byc<br />

pelnoekranowe? Czy mozna zmieniac rozmiar<br />

okna? Takie opcje sa dostepne w przypadku<br />

publikacji w formacie HTML, ale nie wtedy,<br />

gdy korzystasz z projektorów. Jesli chcialbys<br />

ustawic lub zmienic podobne parametry<br />

wyswietlania, skorzystaj z akcji FSCommand,<br />

która sama w sobie zawiera tylko kilka prostych<br />

parametrów odnosnie projektorów, tak jak<br />

przedstawiono to w tabeli 6.3.<br />

Projektory i akcja FSCommand<br />

181


Rozdzial 6.<br />

Projektory i akcja FSCommand<br />

W celu opublikowania projektora:<br />

1. Otwórz swój plik Flasha. Wybierz<br />

File/Publish Settings (Shift+Ctrl+F12)<br />

(rys. 6.65). Pojawi sie okno dialogowe<br />

Publish Settings.<br />

2. Usun zaznaczenie wszystkich pól wyboru,<br />

z wyjatkiem pozycji Macintosh Projector<br />

lub Windows Projector (rys. 6.66).<br />

3. Jesli zamierzasz nadac projektorowi nazwe<br />

inna od domyslnej, usun zaznaczenie pola<br />

wyboru Use default names i wprowadz<br />

wlasciwa nazwe.<br />

4. Kliknij Publish.<br />

Plik projektora zostanie zapisany w tym<br />

samym folderze co plik Flasha.<br />

lub<br />

1. Uruchom odtwarzacz Flasha.<br />

2. Wybierz File/Open File (Ctrl+O). Zaznacz<br />

plik Flasha.<br />

3. Wybierz File/Create Projector... (Ctrl+K)<br />

(rys. 6.67).<br />

4. Wybierz folder docelowy oraz nazwe.<br />

Kliknij OK.<br />

Wskazówka<br />

• Uzycie akcji getURL w projektorze<br />

umozliwia uruchomienie domyslnej<br />

przegladarki internetowej i dowolnego lacza<br />

sieciowego.<br />

Rys. 6.65. Klikniecie Publish spowoduje<br />

wyeksportowanie wszystkich typów<br />

zaznaczonych w zakladce Formats<br />

Rys. 6.66. Zakladka Formats okna<br />

dialogowego Publish Settings. Zaznacz opcje<br />

Windows Projector i Macintosh Projector<br />

Rys. 6.67. Polecenie Create Projector,<br />

dostepne w odtwarzaczu Flasha, eksportuje<br />

biezacy plik do postaci projektora<br />

182


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.68. Dostep do akcji FSCommand<br />

na palecie akcji<br />

Rys. 6.69. Opcje akcji fscommand dla<br />

projektorów pojawiaja sie w menu rozwijanym<br />

u dolu bloku edycji parametrów<br />

W celu uzycia akcji FSCommand<br />

w projektorze:<br />

1. Zaznacz pierwsze ujecie kluczowe filmu<br />

Flasha, który chcialbys wyeksportowac do<br />

postaci projektora. Otwórz palete akcji.<br />

2. Wybierz Actions/FSCommand (Esc + fs)<br />

(rys. 6.68).<br />

Akcja FSCommand pojawi sie w oknie<br />

skryptu wraz z parametrami Command<br />

i Argument oraz menu rozwijanym,<br />

specyficznym dla projektorów (rys. 6.69).<br />

3. Z menu rozwijanego wybierz fullscreen.<br />

Teraz w polu Command widnieje<br />

fullscreen, a w polu Argument – true<br />

(prawda) (rys. 6.70).<br />

4. Z okna narzedzi wybierz ponownie<br />

FSCommand. Z menu rozwijanego wybierz<br />

showmenu.<br />

Teraz w polu Command widnieje<br />

showmenu, a w polu Argument – true<br />

(prawda).<br />

5. W polu Argument zmien true na false<br />

(falsz) (rys. 6.71).<br />

Projektory i akcja FSCommand<br />

Rys. 6.70. Argument true parametru fullscreen<br />

uruchamia odtwarzanie projektora w trybie<br />

pelnoekranowym<br />

Rys. 6.71. Argument false parametru Command<br />

wylacza menu podreczne (otwierane kliknieciem<br />

prawego klawisza myszy)<br />

183


Rozdzial 6.<br />

6. Utwórz przycisk i umiesc jego klon na<br />

scenie. Zaznacz klon i otwórz palete akcji.<br />

7. Wybierz Actions/FSCommand.<br />

8. Z menu rozwijanego Command w bloku<br />

edycji parametrów wybierz quit (rys. 6.72).<br />

9. Opublikuj Swój film jako projektor.<br />

Uruchom projektor, klikajac nan<br />

dwukrotnie. Projektor Flasha zostanie<br />

odtworzony w trybie pelnoekranowym.<br />

Zapobiega to skalowaniu okna. Menu<br />

podreczne, uruchamiane kliknieciem<br />

prawego klawisza myszy, jest wylaczone.<br />

Kiedy klikniesz utworzony przycisk, okno<br />

projektora zostanie zamkniete.<br />

Rys. 6.72. Akcja fscommand (”quit”)<br />

przypisana do przycisku zamyka okno<br />

projektora<br />

Projektory i akcja FSCommand<br />

184


Zarzadzanie zasobami zewnetrznymi<br />

Komunikacja z drukarka<br />

Flash umozliwia przesylanie informacji<br />

bezposrednio do drukarki i wydruk tekstu oraz<br />

grafiki z pominieciem standardowych funkcji<br />

drukowania dostepnych w przegladarce.<br />

Drukowanie jest mozliwe nawet w czasie<br />

odtwarzania filmu we Flashu lub jako<br />

projektora. Za pomoca akcji print oraz<br />

printAsBitmap mozesz przeslac do<br />

drukowania pojedyncze ujecie lub grupe ujec,<br />

a takze wskazac, które obszary tych ujec maja<br />

zostac wydrukowane. Owe obszary drukowania<br />

nie musza byc wcale widoczne na scenie. Dla<br />

drukarki dostepne sa grafika i tekst z dowolnego<br />

ujecia na glównej listwie czasowej, a takze<br />

listwie czasowej klipu filmowego, co czyni<br />

z akcji print cos wiecej niz tylko prymitywne<br />

narzedzie do sporzadzania sztywnych kopii<br />

biezacej zawartosci ekranu monitora.<br />

Zalózmy, ze posiadasz dokumenty<br />

w zewnetrznych plikach SWF. Móglbys<br />

w latwy sposób wczytac wybrany film do klipu<br />

filmowego lub do innego poziomu za pomoca<br />

akcji loadMovieNum, a nastepnie wydrukowac<br />

zaznaczone ujecia z wczytanego filmu .<br />

W rozdziale 10. dowiesz sie o wprowadzaniu<br />

tekstu oraz o dynamicznym tekscie, dzieki<br />

którym mozna wprowadzac informacje<br />

z klawiatury i wyswietlac tekst w sposób<br />

dynamiczny. Mozliwosci te mozna laczyc np.<br />

z formularzami zamówienia lub rachunkami,<br />

które potem przeslesz do drukarki.<br />

Komunikacja z drukarka<br />

185


Rozdzial 6.<br />

Komunikacja z drukarka<br />

W celu wydrukowania<br />

wybranego ujecia z filmu:<br />

1. Przygotuj grafike, która bedzie dostepna dla<br />

drukarki, w ujeciu kluczowym. To dobry<br />

pomysl, zeby przechowywac taka grafike<br />

w klipie filmowym, dzieki czemu moze ona<br />

zajmowac swoja wlasna listwe czasowa<br />

(rys. 6.73).<br />

2. Zaznacz ujecie kluczowe. W polu Label<br />

palety Frame wpisz #P (rys. 6.74).<br />

Etykieta #P okresla ujecie kluczowe jako<br />

przeznaczone do wydrukowania.<br />

W przypadku niewprowadzenia tej etykiety,<br />

do drukowania zostana przeslane wszystkie<br />

klatki filmu.<br />

3. Wróc do glównej listwy czasowej<br />

i przeciagnij klon twojego klipu filmowego<br />

na scene. Na palecie Instance wprowadz<br />

nazwe klonu.<br />

4. Wróc do glównej listwy czasowej i utwórz<br />

przycisk. Przeciagnij jego klon na scene.<br />

5. Zaznacz przycisk i otwórz palete akcji.<br />

Wybierz Actions/print (Esc + pr). Ponizej<br />

zdarzenia myszy on (release) pojawi sie<br />

akcja print (rys. 6.75).<br />

6. W bloku edycji parametrów wybierz As<br />

vectors z menu rozwijanego Print, Target<br />

z menu rozwijanego Location oraz Movie<br />

z menu rozwijanego Bounding box. W polu<br />

Location wprowadz sciezke dostepu do<br />

klonu klipu filmowego (rys. 6.76).<br />

7. Przetestuj film.<br />

Klikniecie utworzonego przycisku<br />

spowoduje przeslanie do drukarki grafiki<br />

z ujecia kluczowego #P klipu filmowego.<br />

Klikaj OK w pojawiajacych sie oknach<br />

dialogowych, aby rozpoczac drukowanie<br />

(rys. 6.77).<br />

stop<br />

Rys. 6.73. Klip filmowy zawiera w ujeciu<br />

kluczowym 2. grafike przeznaczona do<br />

wydruku. W ujeciu kluczowym 1. akcja<br />

stop zapobiega odtwarzaniu klipu<br />

Rys. 6.74. W oddzielnej warstwie, dodaj<br />

etykiete #P do ujecia kluczowego 2<br />

Rys. 6.75. Do przycisku przypisano akcje print<br />

186


Zarzadzanie zasobami zewnetrznymi<br />

Rys. 6.76. Klon klipu filmowego, zawierajacego<br />

grafike przeznaczona do druku, nosi nazwe<br />

bikespecs. Ta akcja print odnosi sie wiec do klonu<br />

o nazwie bikespecs<br />

Klon klipu filmowego bikespecs z pustym<br />

pierwszym ujeciem kluczowym<br />

Wydrukowana strona<br />

Rys. 6.77. Klon klipu filmowego na scenie<br />

(u góry) zawiera grafike, która zostanie<br />

wydrukowana (u dolu)<br />

Rys. 6.78. Parametry akcji print.<br />

Do wydrukowania wybrano zawartosc<br />

filmu wczytanego do poziomu 1<br />

Przycisk<br />

z przypisana<br />

akcja print<br />

Wskazówki<br />

• Wykonanie akcji print zatrzymuje<br />

odtwarzanie filmu. Pamietaj o tym, jesli<br />

zamierzasz integrowac funkcje drukowania<br />

z animacja. Moze trzeba bedzie dodac do<br />

animacji przycisk wznawiajacy odtwarzanie<br />

po wykonaniu akcji print.<br />

• Drukowanie ujecia kluczowego<br />

zawierajacego klip filmowy zakonczy sie<br />

na wydrukowaniu zawartosci jedynie<br />

pierwszego ujecia tego klipu. Jesli chcesz<br />

wydrukowac wszystkie ujecia, wprowadz<br />

sciezke dostepu do samego klonu klipu<br />

filmowego.<br />

• Nie uzywaj akcji print jako akcji<br />

kontrolujacej ujecia. W przypadku<br />

drukowania za pomoca tego typu akcji<br />

program zapetla sie, próbujac wydrukowac<br />

nieskonczona ilosc kopii, a to powoduje<br />

zawieszenie systemu! Zawsze przypisuj<br />

akcje print do manipulatora zdarzenia.<br />

• Zeby ocenic stosunek rzeczywistej wielkosci<br />

grafiki do jej rozmiaru w druku, pomnóz<br />

rozmiar w pikselach przez rozdzielczosc<br />

ekranu, wynoszaca 72 ppi (piksele na cal).<br />

Tak wiec kartka papieru o wielkosci<br />

8,5 × 11 cali odpowiada scenie o<br />

rozdzielczosci 612 pikseli (8,5 cala × 72 ppi)<br />

na 792 pikseli (11 cali × 72 ppi). Trzeba tez<br />

wziac pod uwage marginesy ograniczajace<br />

wlasciwy obszar zadruku strony.<br />

• Wybierz opcje Level z menu rozwijanego<br />

Location, zeby wprowadzic sciezke dostepu<br />

do pliku wczytanego do wskazanego<br />

poziomu (rys. 6.78). Wydrukowane zostana<br />

wszystkie klatki wczytanego filmu, chyba ze<br />

wprowadzisz etykiete #P wybierajaca tylko<br />

okreslone ujecia.<br />

Komunikacja z drukarka<br />

187


Rozdzial 6.<br />

Komunikacja z drukarka<br />

W celu wydrukowania<br />

grupy ujec twojego filmu:<br />

1. Oznacz kazde ujecie przeznaczone do<br />

wydrukowania etykieta #P.<br />

lub<br />

Jesli zamierzasz wydrukowac grupe ujec<br />

umieszczonych w róznych listwach<br />

czasowych, musisz wpisac oddzielne<br />

polecenia drukowania w oknie palety akcji.<br />

W przypadku skorzystania z tej metody<br />

bedziesz mial do czynienia z kilkoma<br />

oknami dialogowymi, bowiem Flash moze<br />

drukowac grupe ujec, ale kazde z osobnej<br />

sciezki dostepu (rys. 6.79).<br />

W celu ustalenia<br />

obszaru drukowanego twojego filmu:<br />

1. Z menu rozwijanego Bounding box palety<br />

akcji wybierz Movie. Narysuj w jednym<br />

z ujec kluczowych ramke wyznaczajaca<br />

obszar grafiki i za pomoca palety Frame<br />

nadaj jej etykiete #B. Ostatni argument akcji<br />

print zostanie zmieniony na bmovie.<br />

Ramka, która narysowales, definiuje obszar<br />

drukowany wszystkich ujec oznaczonych<br />

etykieta #P (rys. 6.80).<br />

lub<br />

Z menu rozwijanego Bounding box<br />

wybierz Frame.<br />

Ostatni argument akcji print zostanie<br />

zmieniony na bframe. Grafiki umieszczone<br />

we wszystkich ujeciach kluczowych<br />

oznaczonych etykieta #P zostana<br />

przeskalowane do wielkosci odpowiadajacej<br />

maksymalnemu obszarowi drukowanemu<br />

(rys. 6.81).<br />

Rys. 6.79. Wydrukowane zostana ujecia<br />

z klipów filmowych taxforms oraz receipts.<br />

Dwa oddzielne klipy filmowe wymagaja dwu<br />

wyrazen print<br />

Rekin w klatce 8.<br />

Barakuda w klatce 14.<br />

Wydrukowane strony<br />

Krewetka<br />

w klatce 20.<br />

Rys. 6.80. Opcja bmovie. Ujecie kluczowe 26.<br />

zawiera obramowanie grafiki okreslajace<br />

obszar drukowany wszystkich trzech<br />

obrazków<br />

Obramowanie<br />

grafiki<br />

w klatce 26.<br />

188


Zarzadzanie zasobami zewnetrznymi<br />

Rekin w klatce 8.<br />

Barakuda w klatce 14.<br />

Wydrukowane strony<br />

Krewetka<br />

w klatce 20.<br />

Rys. 6.81. Opcja bframe. Niepotrzebne sa zadne<br />

etykiety #B. Kazdy z obrazków zostaje<br />

przeskalowany do wielkosci obszaru<br />

drukowanego. Zauwaz, ze krewetka w druku<br />

bedzie miala proporcje wielkosci rekina<br />

Rekin, barakuda<br />

i krewetka sa<br />

umieszczone<br />

w oddzielnych<br />

ujeciach<br />

kluczowych<br />

Obramowanie<br />

grafiki utworzone<br />

z uwzglednieniem<br />

wszystkich trzech<br />

obrazków<br />

Wydrukowane<br />

strony<br />

lub<br />

Z menu rozwijanego Bounding box wybierz<br />

Max. Ostatni argument akcji print zostanie<br />

zmieniony na bmax. Flash definiuje<br />

maksymalna szerokosc i wysokosc na<br />

podstawie wszystkich drukujacych sie ujec,<br />

a nastepnie przeskaluje grafike wzgledem<br />

ustalonej w ten sposób wielkosci obszaru<br />

drukowanego (rys. 6.82).<br />

Wskazówki<br />

• Obramowanie grafiki, definiowane w ujeciu<br />

kluczowym z etykieta #B, moze miec<br />

dowolny ksztalt, jednak Flash rozpoznaje<br />

jedynie prostokat, w który ów ksztalt moze<br />

zostac wpasowany. I ten wlasnie prostokat<br />

okresla obszar drukowany.<br />

• Dobrym pomyslem jest kopiowanie<br />

i wklejanie obramowania grafiki do warstwy<br />

wzorcowej. W ten sposób mozna ocenic<br />

stosunek wielkosci obszaru drukowanego<br />

do grafiki przeznaczonej do wydruku.<br />

• Upewnij sie, ze w ujeciu zawierajacym<br />

ujecie kluczowe z etykieta #B nie umiesciles<br />

w kolejnych warstwach zadnych innych<br />

ksztaltów lub obiektów. W przeciwnym<br />

wypadku obramowanie grafiki zostanie<br />

powiekszone, a przy tym zmienia sie<br />

zamierzony wczesniej obszar drukowany<br />

(Rys 6.83).<br />

Obramowanie grafiki<br />

obejmuje wszystkie<br />

elementy graficzne<br />

w ujeciu #B<br />

Komunikacja z drukarka<br />

Rys. 6.82. Opcja bmax. Niepotrzebne sa zadne<br />

etykiety #B. Obramowanie grafiki jest tworzone<br />

na podstawie usrednionego rozmiaru i lokalizacji<br />

wszystkich trzech obrazków<br />

Rys. 6.83. Te dwa obrazki w ujeciu #B<br />

wymuszaja wieksza powierzchnie<br />

obramowania grafiki<br />

189


Rozdzial 6.<br />

W celu wydrukowania grafiki zawierajacej<br />

przezroczystosci<br />

lub efekty kolorystyczne:<br />

1. Z menu rozwijanego Print palety akcji<br />

wybierz opcje As bitmap (rys. 6.84).<br />

Grafiki zawierajace przezroczystosci lub<br />

efekty kolorystyczne nie wydrukuja sie<br />

wlasciwie, jesli nie uzyjesz wyrazenia<br />

printAsBitmap. Jednak taki sposób<br />

drukowania daje w efekcie nizsza jakosc<br />

od wydruków wektorowych.<br />

Rys. 6.84. Opcja Print As bitmap na palecie<br />

akcji, uzyteczna w przypadku drukowania<br />

przezroczystosci i efektów kolorystycznych<br />

Komunikacja z drukarka<br />

190


Czesc 4.<br />

Przeksztalcanie grafiki i dzwieku<br />

191


Rozdzial 7.<br />

192


Kontrolowanie<br />

klipów filmowych<br />

7<br />

Czesci skladowe jezyka HTML<br />

Klip filmowy jest bardzo poteznym obiektem. Flash pozwala nadzorowac jego wyglad<br />

i zachowanie. Takie wlasciwosci klipu filmowego jak pozycja, skalowanie, rotacja,<br />

przezroczystosc, kolor, a nawet nazwa klonu, moga byc ustawiane za pomoca jezyka ActionScript.<br />

W rezultacie otrzymujesz mozliwosc tworzenia elementów interaktywnych wzorowanych na grach<br />

zrecznosciowych, zmieniajacych sie w odpowiedzi na wprowadzane przez uzytkownika dane lub<br />

preferencje. Wyobraz sobie na przyklad gre Tetris stworzona od poczatku do konca we Flashu.<br />

Kazda figura geometryczna bedzie klipem filmowym, którego rotacje i pozycje kontroluje<br />

uzytkownik za pomoca klawiatury. W grze w stylu Asteroids moze my miec do czynienia z obcym<br />

statkiem kosmicznym, poruszajacym sie w zaleznosci od zachowania statku sterowanego przez<br />

uzytkownika. Tego typu animacje nie opieraja sie na automatycznie animowanych sekwencjach,<br />

które zazwyczaj tworzysz, pracujac nad filmem we Flashu. Sa to raczej dynamiczne serie<br />

obrazów, „przygotowywane” na biezaco w czasie odtwarzania. Opanowanie zasad kontrolowania<br />

wlasciwosci klipu filmowego jest wiec pierwszym krokiem na drodze do zrozumienia sposobu<br />

tworzenia animacji w calosci za pomo ca ActionScript.<br />

Ponadto Flash umozliwia uzytkownikom przesuwanie klipu filmowego za posrednictwem akcji<br />

przeciagnij-i-upusc. Wykorzystaj przeciagane klipy filmowe do stworzenia ukladanki, w której<br />

uzytkownik prawdziwie siega po kolejne elementy i uklada je na wlasciwych miejscach, lub tez<br />

zaprojektuj bardziej wciagajacy interfejs internetowego sklepiku, gdzie uzytkownik bedzie<br />

wybieral artykuly i wrzucal je do koszyka. Nauczysz sie tworzyc przeciagane klipy filmowe,<br />

a takze metody pozwalajace okreslic miejsce ich upuszczania na scenie, Dowiesz sie równiez,<br />

jak kontrolowac kolizje klipów i nakladanie sie z innymi klipami filmowymi. Potem zajmiemy<br />

sie powielaniem zlozonych klipów filmowych i przeciaganiem ich z biblioteki na scene w trakcie<br />

odtwarzania.<br />

Na koniec zobaczysz, jak z pomoca klipu filmowego zaprojektowac wlasny kursor. Zamiast<br />

bowiem uzywac domyslnej strzalki lub „raczki”, mozesz tworzyc ksztalty odpowiadajace<br />

unikalnej zawartosci twojego filmu. Dla przykladu, przygotuj ikone lornetki lub krzyzyka w grze<br />

o polowaniu lub dlon szkieletu, prowadzaca uzytkownika przez gabinet grozy.<br />

Kontrolowanie klipów filmowych<br />

193


Rozdzial 7.<br />

Przeciaganie klipu filmowego<br />

Przeciaganie klipu filmowego<br />

Mechanizm przeciagnij-i-upusc pozwala<br />

tworzyc najbardziej bezposredni rodzaj<br />

interakcji pomiedzy uzytkownikiem i filmem<br />

Flasha. Nie ma nic bardziej satysfakcjonujacego<br />

niz mozliwosc przeciagniecia grafiki na ekran,<br />

przesuwania jej z jednego miejsca w drugie,<br />

a na koncu – porzucenia zupelnie gdzie indziej.<br />

Jest to naturalny sposób na interakcje<br />

uzytkownika z obiektami, a w dodatku bardzo<br />

latwy do wykorzystania. Tworzenie<br />

mechanizmów przeciagnij-i-upusc we Flashu<br />

zamyka sie w dwóch podstawowych krokach:<br />

przygotowaniu klipu filmowego<br />

i zaprojektowaniu przycisku wewnatrz klipu,<br />

wyzwalajacego akcje przeciagania.<br />

Zwykle przeciaganie rozpoczyna sie<br />

w momencie, kiedy uzytkownik nacisnie<br />

klawisz myszy. Pózniej, po zwolnieniu<br />

klawisza, przeciaganie zostaje przerwane. Stad<br />

akcja rozpoczecia przeciagania zwiazana jest ze<br />

zdarzeniem myszy on (press), a akcja<br />

zakonczenia przeciagania – ze zdarzeniem<br />

on (release).<br />

W celu rozpoczecia przeciagania<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz niewidzialny przycisk, tak jak to<br />

opisano w rozdziale 4., a nastepnie umiesc<br />

jego klon wewnatrz klipu filmowego<br />

(rys. 7.1).<br />

3. Zaznacz klon przycisku i otwórz palete<br />

akcji.<br />

4. Wybierz Actions/on (Esc + on). W oknie<br />

skryptu pojawi sie wyrazenie on (press).<br />

5. W bloku edycji parametrów usun<br />

zaznaczanie pola wyboru Release i zaznacz<br />

pole wyboru Press (rys. 7.2). Wyrazenie<br />

on (press) zostanie zastapione przez<br />

wyrazenie on (release).<br />

Rys. 7.1. Te oczy sa czescia symbolu klipu<br />

filmowego. W trybie edycji przeciagnij ikone<br />

niewidzialnego przycisku nad oczy, zeby<br />

przypisac akcje startDrag do niewidzialnego<br />

przycisku<br />

Rys. 7.2. Wybierz zdarzenie (Event) Press dla<br />

manipulatora on przypisanego do<br />

niewidzialnego przycisku w twoim klipie<br />

filmowym<br />

194


Kontrolowanie klipów filmowych<br />

Rys. 7.3. Wpisanie slowa kluczowego this w polu<br />

Target sprawia, ze akcja startDrag bedzie<br />

oddzialywac na biezacy klip filmowy<br />

6. Wybierz Actions/startDrag (Esc + dr).<br />

Ponizej zdarzenia myszy on (press)<br />

pojawi sie akcja startDrag.<br />

7. W polu Target bloku edycji parametrów<br />

wpisz this i zaznacz pole Expression<br />

(rys. 7.3).<br />

Slowo kluczowe this odnosi sie do<br />

biezacego klipu filmowego. Zaznaczenie<br />

pola wyboru Expression usuwa cudzyslów<br />

zamykajacy to slowo, dzieki czemu Flash<br />

traktuje je wlasnie jako slowo kluczowe,<br />

a nie lancuch znakowy.<br />

8. Przeciagnij klon klipu filmowego<br />

z biblioteki na scene.<br />

Poniewaz przycisk wewnatrz klipu<br />

filmowego uzywa wyrazenia wzglednego<br />

this, niepotrzebne jest nazywanie klonu<br />

klipu filmowego.<br />

9. Przetestuj film. Jesli nacisniesz klawisz<br />

myszy w obrebie klipu filmowego, bedziesz<br />

mógl go przeciagnac.<br />

Przeciaganie klipu filmowego<br />

195


Rozdzial 7.<br />

Przeciaganie klipu filmowego<br />

W celu zakonczenia<br />

przeciagania klipu filmowego:<br />

1. Pracujac dalej nad plikiem utworzonym<br />

w poprzednim cwiczeniu, zaznacz klamre<br />

zamykajaca w oknie skryptu.<br />

2. Wybierz Actions/on.<br />

Pojawi sie wyrazenie on (release).<br />

3. Wybierz Actions/stopDrag (Esc + sd).<br />

Pojawi sie wyrazenie stopDrag bez<br />

zadnych parametrów (rys. 7.4).<br />

4. Przetestuj film. Jesli nacis niesz klawisz<br />

myszy w obrebie klipu filmowego, bedziesz<br />

mógl go przeciagnac. Kiedy zwolnisz<br />

klawisz, zakonczysz przeciaganie (rys. 7.5).<br />

Wskazówki<br />

• Mozesz takze przypisac akcje startDrag<br />

do manipulatora zdarzenia klipu filmowego<br />

onClipEvent i nie przejmowac sie<br />

osadzonym niewidzialnym przyciskiem.<br />

Skorzystaj z tego sposobu, jesli masz tylko<br />

jeden klip filmowy, który odbiorca moze<br />

przyciagac, i kiedy nie potrzebujesz<br />

korzystac z cech niewidzialnego przycisku.<br />

Jesli, na przyklad, przypiszesz akcje<br />

startDrag do zdarzenia onClipEvent<br />

(load), Flash automatycznie wprowadzi<br />

mozliwosc przeciagania tego klipu<br />

filmowego. Kiedy przypiszesz akcje<br />

startDrag do zdarzenia onClipEvent<br />

(mouseDown), klip bedzie mozna<br />

przeciagac po uprzednim kliknieciu mysza<br />

gdziekolwiek na scenie.<br />

• Mozliwe jest przeciaganie tylko jednego<br />

klipu filmowego na raz. Wlasnie dlatego<br />

akcja stopDrag nie posiada zadnych<br />

parametrów; jest wykonywana tylko<br />

w odniesieniu do pliku aktualnie<br />

przeciaganego.<br />

Rys. 7.4. Przypisz akcje stopDrag do<br />

manipulatora zdarzenia on (release)<br />

Rys. 7.5. Kazdy z trzech elementów twarzy –<br />

widocznych po prawej – jest klipem<br />

filmowym, zawierajacym niewidzialny<br />

przycisk z przypisanym skryptem widocznym<br />

w ramce powyzej. Te trzy klipy moga byc<br />

przeciagniete nad ziemniaczana twarz<br />

i upuszczone w odpowiednich pozycjach<br />

196


Kontrolowanie klipów filmowych<br />

Rys. 7.6. Opcja Lock mouse to center wymusza<br />

przeciaganie klipu filmowego za punkt<br />

poczatkowy<br />

Byc moze wolalbys, zeby w czasie przesuwania<br />

klipu filmowego do wskaznika myszy<br />

przyciagany byl jego srodek, a nie punkt,<br />

w którym kliknal uzytkownik.<br />

W celu wysrodkowania<br />

przeciaganego klipu filmowego:<br />

1. W bloku edycji parametrów palety akcji<br />

zaznacz pole wyboru Lock mouse to center<br />

(rys. 7.6). Kiedy klikniesz mysza klip<br />

filmowy, który zamierzasz przeciagnac,<br />

punkt poczatkowy klipu zostanie<br />

przyciagniety do wskaznika myszy.<br />

Wskazówka<br />

• Jesli zaznaczysz opcje Lock mouse to<br />

center, upewnij sie, ze twój niewidzialny<br />

przycisk pokrywa punkt poczatkowy klipu<br />

filmowego. W przeciwnym razie, po<br />

przyciagnieciu do niego klipu, wskaznik nie<br />

bedzie juz dluzej znajdowal sie nad<br />

niewidzialnym przyciskiem i Flash nie<br />

wykryje momentu przerwania akcji<br />

przeciagania.<br />

Przeciaganie klipu filmowego<br />

197


Rozdzial 7.<br />

Przeciaganie klipu filmowego<br />

Byc moze chcialbys równiez ograniczyc obszar,<br />

po którym uzytkownik moze przeciagac klipy<br />

filmowe.<br />

W celu ograniczenia obszaru przeciagania<br />

klipu filmowego:<br />

1. Zaznacz pole wyboru Constrain to<br />

rectangle i wprowadz wspólrzedne<br />

(w pikselach) do wszystkich czterech pól,<br />

reprezentujacych krancowe polozenia<br />

punktu poczatkowego przeciaganego klipu<br />

filmowego (rys. 7.7).<br />

L: krancowe polozenie w kierunku lewego<br />

marginesu (minimalna wspólrzedna X),<br />

jakie moze osiagnac punkt poczatkowy klipu<br />

filmowego;<br />

R: krancowe polozenie w kierunku prawego<br />

marginesu (maksymalna wspólrzedna X),<br />

jakie moze osiagnac punkt poczatkowy klipu<br />

filmowego;<br />

T: krancowe polozenie w kierunku górnego<br />

marginesu (minimalna wspólrzedna Y),<br />

jakie moze osiagnac punkt poczatkowy klipu<br />

filmowego;<br />

B: krancowe polozenie w kierunku dolnego<br />

marginesu (maksymalna wspólrzedna X),<br />

jakie moze osiagnac punkt poczatkowy klipu<br />

filmowego;<br />

lub<br />

Wspólrzedne sa wzgledne w stosunku do<br />

listwy czasowej, w której rezyduje klip<br />

filmowy. Jesli przeciagany klip filmowy<br />

znajduje sie na glównej listwie czasowej,<br />

wspólrzedne odpowiadaja punktom na<br />

scenie, np. L=0, T=0 to lewy górny róg<br />

sceny. Jesli przeciagany klip filmowy<br />

zawiera sie wewnatrz innego klipu, L=0,<br />

T=0 odpowiada punktowi poczatkowemu<br />

klipu filmowego-rodzica.<br />

Rys. 7.7. Opcja Constrain to rectangle<br />

umozliwia ustawienie lewej (L), prawej (R),<br />

górnej (T) i dolnej (B) krawedzi<br />

Wskazówka<br />

• Parametrów opcji Constrain to<br />

rectangle mozesz uzyc do ograniczenia<br />

ruchu przeciagania tylko wzdluz<br />

poziomej lub pionowej sciezki, tak jak<br />

w przypadku pasków przewijania. Ustaw<br />

te same wartosci w polach L i R, zeby<br />

ograniczyc sie do ruchu w pionie, lub<br />

wprowadz identyczne ustawienia pól T<br />

i B, jesli przeciaganie ma sie odbywac<br />

tylko w prawo lub lewo.<br />

198


Kontrolowanie klipów filmowych<br />

Ustawianie wlasciwosci<br />

klipu filmowego<br />

Wiele sposród wlasciwosci klipu filmowego –<br />

jak rozmiar, przezroczystosc, pozycja, rotacja<br />

i jakosc – definiuja wyglad filmu. Korzystajac<br />

z akcji setProperty, mozesz wskazac<br />

dowolny klip filmowy i zmienic któras<br />

z wymienionych charakterystyk w czasie<br />

odtwarzania. Ponizsza tabela przedstawia<br />

wlasciwosci dostepne dla akcji setProperty.<br />

Niektóre z tych wlasciwosci maja charakter<br />

globalny, co oznacza, ze odnosza sie do calego<br />

filmu, a nie jedynie pojedynczego klipu<br />

filmowego.<br />

Tabela 7.1. Wlasciwosci ustawiane za pomoca akcji setProperty<br />

Wlasciwosc Wartosc Opis<br />

_alpha (Alpha) Liczba od 0 do 200 Okresla przezroczystosc, gdzie 0 oznacza<br />

calkowicie przezroczysty, a 100 – kryjacy.<br />

_visible (Visibility) Prawda lub falsz<br />

Okresla widzialnosc klipu filmowego.<br />

_name (Name) Nazwa Okresla nazwe nowego klonu klipu filmowego.<br />

_rotation (Rotation) Liczba<br />

Okresla stopien obrotu zgodnie z ruchem<br />

wskazówek zegara, np. wartosc 45 obraca klip<br />

filmowy w prawo.<br />

_height (Height) Liczba (w pikselach) Okresla rozmiar w pionie.<br />

_width (Width) Liczba (w pikselach) Okresla rozmiar w poziomie.<br />

_x (X Position) Liczba (w pikselach) Okresla pozycje w poziomie punktu<br />

poczatkowego klipu filmowego.<br />

_y (Y Position) Liczba (w pikselach) Okresla pozycje w pionie punktu<br />

poczatkowego klipu filmowego.<br />

_xscale (X Scale) Liczba Okresla procent rozmiaru w poziomie<br />

oryginalnego symbolu klipu filmowego.<br />

_yscale (Y Scale) Liczba Okresla procent rozmiaru w pionie<br />

oryginalnego symbolu klipu filmowego.<br />

_focusrect (Show<br />

focus rectangle)<br />

Prawda lub falsz<br />

Okresla, czy wokól przycisków lub pól pojawia<br />

sie zólty prostokat, kiedy uzywasz klawisza Tab<br />

do nawigowania pomiedzy tymi przyciskami lub<br />

polami. Jest to wlasciwosc globalna, odnoszaca<br />

sie do calego filmu, a nie poszczególnych klipów.<br />

Ustawianie wlasciwosci klipu<br />

199


Rozdzial 7.<br />

Tabela 7.1. Wlasciwosci ustawiane za pomoca akcji setProperty (ciag dalszy)<br />

Wlasciwosc Wartosc Opis<br />

Ustawianie wlasciwosci klipu<br />

_highquality<br />

(High quality)<br />

_quality (_quality)<br />

_soundbuftime<br />

(Sound buffer time)<br />

Wskazówki<br />

Liczba 0, 1 lub 2<br />

LOW (niska),<br />

MEDIUM (srednia),<br />

HIGH (wysoka) lub<br />

BEST (najlepsza)<br />

Liczba<br />

• Istnieje róznica pomiedzy wlasciwoscia<br />

Alpha ustawiona na 0 i Visibility ustawiona<br />

na falsz (False), mimo iz rezultaty moga<br />

wygladac podobnie. Jesli wlasciwosc<br />

Visibility ma wartosc False, to klip filmowy<br />

jest prawdziwie niewidoczny. Umieszczone<br />

w nim przyciski nie odpowiadaja<br />

i jakiekolwiek akcje, odnoszace sie do tego<br />

klipu filmowego, nie dzialaja. Natomiast<br />

w przypadku Alpha ustawionego na 0<br />

wszystkie przyciski i akcje klipu filmowego<br />

wciaz funkcjonuja.<br />

• Wspólrzedne przestrzeni x i y dla glównej<br />

listwy czasowej zachowuja sie inaczej, niz<br />

w przypadku listew czasowych klipów<br />

filmowych. W glównej listwie czasowej os x<br />

rozpoczyna sie od lewej krawedzi i rosnie<br />

w kierunku krawedzi prawej. Os y zaczyna sie<br />

od górnej krawedzi i zmierza do dolnej<br />

krawedzi. Tak wiec x = 0 i y = 0 wyznaczaja<br />

lewy górny róg sceny. W przypadku klipów<br />

filmowych, te same wartosci wspólrzednych<br />

odnosza sie do punktu poczatkowego<br />

(krzyzyka).<br />

Okresla stopien wygladzania krawedzi obiektów<br />

w czasie odtwarzania filmu. 2 = najlepszy: pelne<br />

wygladzanie wszystkich obiektów. 1 = wysoki:<br />

wygladzanie tylko w przypadku braku animacji.<br />

0 = niski: bez wygladzania. Jest to wlasciwosc<br />

globalna, odnoszaca sie do calego filmu, a nie<br />

poszczególnych klipów.<br />

Okresla stopien wygladzania krawedzi obiektów<br />

w czasie odtwarzania filmu. BEST = pelne<br />

wygladzanie wszystkich obiektów. HIGH =<br />

wygladzanie tylko w przypadku braku animacji.<br />

MEDIUM = wygladzanie niskiej jakosci. LOW =<br />

bez wygladzania. Jest to wlasciwosc globalna,<br />

odnoszaca sie do calego filmu, a nie<br />

poszczególnych klipów.<br />

Okresla czas (liczbe sekund), po którym film<br />

rozpoczyna odtwarzanie dzwieku. Wartosc domyslna<br />

to 5. Jest to wlasciwosc globalna, odnoszaca sie do<br />

calego filmu, a nie poszczególnych klipów.<br />

Wartosci dodatnie x<br />

Wartosci<br />

dodatnie y<br />

Wartosci<br />

ujemne x<br />

Wartosci<br />

ujemne y<br />

Wartosci<br />

dodatnie x<br />

Wartosci<br />

dodatnie y<br />

Rys. 7.8. Wspólrzedne x i y w glównej listwie<br />

czasowej (u góry) sa wysrodkowane<br />

wzgledem lewego górnego rogu sceny,<br />

a w przypadku klipu filmowego (u dolu) –<br />

wzgledem punktu poczatkowego<br />

200


Kontrolowanie klipów filmowych<br />

Rys. 7.9. Przypisz akcje setProperty do<br />

manipulatora zdarzenia on (release). Akcja ta<br />

zmienia wlasciwosci klipu filmowego oraz<br />

niektóre ustawienia globalne<br />

Rys. 7.10. Dla wspólrzednej x klipu filmowego<br />

eyepair na glównej listwie czasowej ustalono<br />

wartosc 123<br />

Rys. 7.11. Dla wspólrzednej y klipu filmowego<br />

eyepair na glównej listwie czasowej ustalono<br />

wartosc 85<br />

Nowa pozycja<br />

Stara pozycja<br />

Rys. 7.12. Przycisk przenosi klip filmowy<br />

z oczami w nowe miejsce, w obrebie ziemniaka<br />

Wartosc x wzrasta na prawo od punktu<br />

poczatkowego i zmniejsza sie do wartosci<br />

ujemnych na lewo od tego punktu. Wartosc<br />

y odpowiednio wzrasta w dól i zmniejsza sie<br />

w góre (rys. 7.8).<br />

• Wlasciwosci X Scale oraz Y Scale okreslaja<br />

procent rozmiaru pierwotnego symbolu klipu<br />

filmowego, który moze sie róznic w stosunku<br />

do tego, co widac na scenie. Jesli np. umiescisz<br />

klon klipu filmowego na scenie i zmniejszysz<br />

go o 50%, a potem, w czasie odtwarzania,<br />

nadasz wlasciwosciom X Scale oraz Y Scale<br />

wartosci 100, twój klip filmowy powiekszy sie<br />

dwukrotnie.<br />

W celu zmiany polozenia<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz symbol przycisku, umiesc jego klon<br />

na scenie, zaznacz go i otwórz palete akcji.<br />

3. Wybierz Actions/setProperty (Esc + sp).<br />

Ponizej manipulatora zdarzenia<br />

on (press) pojawi sie wyrazenie<br />

setProperty (rys. 7.9).<br />

4. Z menu rozwijanego Property w bloku<br />

edycji parametrów wybierz _x (X Position).<br />

5. Wprowadz sciezke dostepu do klipu<br />

filmowego w polu Target lub posluz sie<br />

przyciskiem Insert a target path u dolu okna.<br />

6. W polu Value wprowadz wspólrzedna x<br />

i zaznacz pole Expression, jako ze wpisana<br />

liczba reprezentuje wartosc (rys. 7.10).<br />

7. Ponownie wybierz Actions/setProperty.<br />

Drugie wyrazenie setProperty pojawi sie<br />

ponizej pierwszego.<br />

8. W polu Property wybierz _y (Y Position),<br />

w polu Target wprowadz sciezke dostepu,<br />

a w polu Value wprowadz wspólrzedna y.<br />

Zaznacz tez pole Expression (rys. 7.11).<br />

9. Przetestuj film. Kiedy klikniesz utworzony<br />

przycisk, klip filmowy zostanie przeniesiony<br />

w nowe miejsce, zdefiniowane za pomoca<br />

dwóch akcji setProperty (rys. 7.12).<br />

Ustawianie wlasciwosci klipu<br />

201


Rozdzial 7.<br />

Ustawianie wlasciwosci klipu<br />

Alternatywna metoda ustawiania wlasciwosci<br />

klipu filmowego jest napisanie skryptu wedlug<br />

szablonu: root.movieclip.property=<br />

value. Uzyj akcji set variable lub<br />

evaluate do przypisania wartosci do<br />

wlasciwosci wybranego klipu filmowego.<br />

W celu ustawienia<br />

wlasciwosci klipu filmowego<br />

za pomoca skryptu:<br />

1. W oknie palety akcji, wybierz Actions/set<br />

variable (Esc + sv). W polu Variable<br />

wprowadz sciezke dostepu do klipu<br />

filmowego, którego wlasciwosci chcesz<br />

zmodyfikowac. Wpisz kropke, a nastepnie<br />

wybrana wlasciwosc. W polu Value wpisz<br />

wlasciwy argument (rys. 7.13).<br />

lub<br />

W oknie palety akcji, wybierz<br />

Actions/evaluate (Esc + ev). W polu<br />

Expression wpisz sciezke dostepu do klipu<br />

filmowego, dalej kropke i na koncu<br />

wlasciwosc, która chcesz ustawic.<br />

Wprowadz znak równosci, a potem wartosc,<br />

która chcesz przypisac wlasciwosci<br />

(rys. 7.14).<br />

Rys. 7.13. Uzyj akcji set variable do<br />

wprowadzenia wlasciwosci klipu filmowego<br />

w polu Variable i jej nowej wartosci w polu<br />

Value<br />

Rys. 7.14. Akcja evaluate pozwala przypisac<br />

nowa wartosc wlasciwosci klipu filmowego za<br />

pomoca jednej tylko linii skryptu<br />

202


Kontrolowanie klipów filmowych<br />

Rys. 7.15. Wyrazenie setProperty zmienia nazwe<br />

klonu klipu filmowego z movieClipInstance na<br />

newInstanceName<br />

Zmiana nazwy klipu filmowego pozwala<br />

udostepnic go lub ukryc dla odwolujacych sie<br />

do niego akcji. Zalózmy, ze przycisk wywoluje<br />

metode _root.myDisplay.gotoAnd<br />

Stop(2). Teraz zmieniasz nazwe z myDisplay<br />

na yourDisplay. W efekcie przycisk nie<br />

bedzie w stanie odnalezc klonu.<br />

W celu zmiany nazwy<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz symbol przycisku, umiesc jego klon<br />

na scenie, zaznacz go i otwórz palete akcji.<br />

3. Wybierz Actions/setProperty. Ponizej<br />

manipulatora zdarzenia on (release)<br />

pojawi sie wyrazenie setProperty.<br />

4. Z menu rozwijanego Property w bloku<br />

edycji parametrów wybierz _name (Name).<br />

5. Wprowadz sciezke dostepu do klipu<br />

filmowego w polu Target lub posluz sie<br />

przyciskiem Insert a target path u dolu<br />

okna.<br />

6. W polu Value wpisz nowa nazwe klonu.<br />

Pole Expression pozostaw niezaznaczone,<br />

jako ze jest to wlasciwa nazwa. Kompletne<br />

wyrazenie ActionScript pojawi sie w oknie<br />

skryptu (rys. 7.15). Kiedy bedziesz testowal<br />

film i wcisniesz przycisk, zmieni sie nazwa<br />

klonu klipu filmowego.<br />

Ustawianie wlasciwosci klipu<br />

203


Rozdzial 7.<br />

Zmiana koloru klipu filmowego<br />

Zmiana koloru<br />

klipu filmowego<br />

Jednym z najbardziej widocznych braków na<br />

liscie wlasciwosci klipu filmowego<br />

udostepnianych przez akcje setProperty jest<br />

kolor. Mimo to mozesz skorzystac z obiektu<br />

Color (predefiniowanej klasy), który pozwala<br />

ustawic lub zmienic kolor klipu filmowego.<br />

Na poczatek trzeba przygotowac klon nowego<br />

obiektu koloru za pomoca funkcji konstruktora:<br />

nameofColorObject =<br />

new Color(movieClipInstance)<br />

gdzie nameofColorObject stanowi nazwe<br />

twojego nowego obiektu koloru,<br />

a movieClipInstance jest sciezka dostepu<br />

do klipu filmowego, który chcesz edytowac.<br />

Nastepnie mozesz uzyc nowego obiektu koloru<br />

do ustawienia wartosci RGB koloru klipu<br />

filmowego za pomoca metody setRGB.<br />

Definiujac nowy kolor,uzywaj szesnastkowych<br />

odpowiedników kazdego ze skladowych koloru<br />

(czerwonego, zielonego i niebieskiego) wedlug<br />

szablonu: 0xRRGGBB. Byc moze widziales juz<br />

podobny, szesciocyfrowy kod w dokumentach<br />

HTML, w liniach definiujacych kolor tla<br />

witryny sieciowej. Takie cyfrowe oznaczenia<br />

kolorów mozesz znalezc na palecie Mixer.<br />

W menu rozwijanym opcji palety wybierz Hex<br />

jako tryb reprezentacji kolorów (rys. 7.16),<br />

a w oknie palety pojawia sie szesnastkowe<br />

oznaczenia kazdego ze skladowych koloru. Te<br />

szesciocyfrowe kody widoczne sa takze obok<br />

próbek kolorów w menu rozwijanym próbek<br />

Stroke Color i Fill Color (rys. 7.17).<br />

Kolor<br />

biezacy<br />

Wartosc szesnastkowa<br />

skladowej czerwonej (G)<br />

Wartosc szesnastkowa<br />

skladowej czerwonej (R)<br />

Rys. 7.16. Jedna z opcji menu rozwijanego<br />

palety Mixer umozliwia zobrazowanie<br />

wartosci skladowych koloru RGB za pomoca<br />

liczb szesnastkowych<br />

Ikona podgladu koloru<br />

Kod szesnastkowy<br />

Wartosc szesnastkowa<br />

skladowej czerwonej (B)<br />

Rys. 7.17. Kod szesnastkowy jest wyswietlany<br />

w polu widocznym obok ikony podgladu<br />

koloru<br />

204


Kontrolowanie klipów filmowych<br />

Rys. 7.18. Funkcja konstruktora new Color jest<br />

uzywana do tworzenia nowego obiektu koloru<br />

Rys. 7.19. Nowy obiekt koloru nosi nazwe<br />

myColorObject i jest skojarzony z klipem<br />

filmowym shirt<br />

Rys. 7.20. Metoda setRGB posiada parametr<br />

oxRRGGBB bedacy szesnastkowa reprezentacja<br />

koloru<br />

Rys. 7.21. Uzyj akcji setRGB z róznymi<br />

wartosciami szesnastkowymi argumentu<br />

do zmiany koloru tego klipu filmowego shirt<br />

W celu ustawienia<br />

koloru klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz symbol przycisku, umiesc jego klon<br />

na scenie, zaznacz go i otwórz palete akcji.<br />

3. Wybierz Actions/set variable.<br />

4. W polu Variable wprowadz nazwe nowego<br />

obiektu koloru.<br />

5. Kliknij mysza w polu Value i wybierz<br />

Objects/Color/new Color. Zaznacz pole<br />

wyboru Expression widniejace obok pola<br />

Value. W polu Value pojawi sie wyrazenie<br />

new Color z podswietlonym argumentem<br />

target (rys. 7.18).<br />

6. Zastap podswietlony argument w postaci<br />

slowa target sciezka dostepu do twojego<br />

klipu filmowego, ewentualnie posluz sie<br />

przyciskiem Insert a target path w prawym<br />

dolnym rogu palety. Pierwsze wyrazenie<br />

ActionScript jest kompletne. Powoduje ono<br />

utworzenie klonu nowego obiektu koloru<br />

(rys. 7.19).<br />

7. Wybierz Actions/evaluate . W polu<br />

Expression wprowadz nazwe nowo<br />

utworzonego obiektu koloru.<br />

8. Wybierz Objects/Color/setRGB . Metoda<br />

setRGB pojawi sie w polu Expression<br />

w bloku edycji parametrów przed nazwa<br />

twojego obiektu koloru. Podswietlony<br />

zostanie argument 0xRRGGBB (rys. 7.20).<br />

9. W nawiasach stojacych przy metodzie<br />

setRGB wpisz 0x, a nastepnie<br />

szesciocyfrowy kod szesnastkowy nowego<br />

koloru (rys. 7.21).<br />

10. Przetestuj film. Kiedy klikniesz przycisk,<br />

utworzony zostanie klon obiektu koloru<br />

wywolujacego metode setRGB. Klipowi<br />

filmowemu skojarzonemu z obiektem koloru<br />

zostanie przypisana nowa wartosc RGB.<br />

Zmiana koloru klipu filmowego<br />

205


Rozdzial 7.<br />

Zmiana koloru klipu filmowego<br />

Uzywanie<br />

obiektu transformacji koloru<br />

Za pomoca metody setTransform mozna<br />

przeksztalcac kolor dowolnego klipu<br />

filmowego. Metoda ta pozwala zdefiniowac<br />

procentowe lub liczbowe wartosci skladowych<br />

RGB, jak równiez poziomu przezroczystosci.<br />

Parametry te sa dostepne na palecie Instance<br />

w menu rozwijanym Advanced (rys. 7.22).<br />

Zeby móc uzyc metody setTransform wobec<br />

obiektu koloru, trzeba najpierw utworzyc inny<br />

obiekt, który w rzeczywistosci bedzie<br />

przechowywal informacje o przeksztalceniach<br />

koloru w postaci parametrów ra, rb, ga, gb,<br />

ba, bb, aa, ab (Tabela 7.2). Obiekt<br />

transformacji koloru jest tworzony na podstawie<br />

standardowej predefiniowanej klasy o nazwie<br />

Object. Kiedy juz zdefiniujesz obiekt<br />

transformacji koloru, mozesz uzywac go<br />

z metoda setTransform twojego obiektu<br />

koloru. Byc moze jest tu troche zamieszania,<br />

ale podstawowa idea jest nastepujaca: tam,<br />

gdzie zwykle widzisz liczby lub lancuchy<br />

znakowe jako parametry metody – np. cyfra 5<br />

w metodzie gotoAndStop(5) – bedziesz od<br />

teraz uzywal obiektu w postaci np. set<br />

Transform(myColorTransformObject).<br />

Rys. 7.22. Opcje efektów klonu, dostepne<br />

w menu rozwijanym Advanced, pozwalaja<br />

okreslic wartosci procentowe lub liczbowe<br />

skladowych RGB lub poziomu<br />

przezroczystosci<br />

Tabela 7.2. Parametry metody setTransform<br />

Parametr<br />

Wartosc<br />

ra Procent (–100 do 100)<br />

skladowej czerwonej<br />

rb Wartosc (–255 do 255)<br />

skladowej czerwonej<br />

ga Procent (–100 do 100)<br />

skladowej zielonej<br />

gb Wartosc (–255 do 255)<br />

skladowej zielonej<br />

ba Procent (–100 do 100)<br />

skladowej niebieskiej<br />

bb Wartosc (–255 do 255)<br />

skladowej niebieskiej<br />

aa Procent (–100 do 100)<br />

poziomu przezroczystosci<br />

ab Wartosc (–255 do 255)<br />

poziomu przezroczystosci<br />

206


Kontrolowanie klipów filmowych<br />

Rys. 7.23. Tworzymy nowy obiekt koloru<br />

o nazwie myNewColor dla klipu filmowego shirt<br />

Rys. 7.24. Utwórz nowy podstawowy obiekt<br />

o nazwie newColorTransform za pomoca funkcji<br />

konstruktora newObject. Obiekt ten bedzie<br />

przechowywal informacje o skladowych RGB<br />

i poziomie przezroczystosci<br />

W celu przeksztalcenia koloru<br />

i poziomu przezroczystosci<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Utwórz symbol przycisku, umiesc jego klon<br />

na scenie, zaznacz go i otwórz palete akcji.<br />

3. Wybierz Actions/set variable.<br />

4. Przygotuj klon nowego obiektu koloru<br />

w sposób opisany w poprzednim cwiczeniu<br />

(rys. 7.23).<br />

5. Ponownie wybierz Actions/set variable.<br />

6. W polu Variable wpisz nazwe obiektu<br />

transformacji koloru.<br />

7. Kliknij w polu Value i wybierz Objects/<br />

Object/new Object. Zaznacz pole<br />

Expression widniejace obok pola Value.<br />

W ten sposób otrzymales klon nowego<br />

obiektu transformacji koloru (rys. 7.24).<br />

8. Wybierz Actions/set variable. W polu<br />

Variable wprowadz nazwe twojego obiektu<br />

transformacji koloru, kropke, a dalej jeden<br />

z parametrów. W polu Value wpisz liczbe.<br />

Zaznacz pole Expression widniejace obok<br />

pola Value. Powtórz czynnosci dla<br />

wszystkich osmiu parametrów (rys. 7.25).<br />

W ten sposób zdefiniowales parametry<br />

twojego obiektu transformacji koloru.<br />

9. Wybierz Actions/evaluate . W polu<br />

Expression wpisz nazwe twojego obiektu<br />

koloru.<br />

Zmiana koloru klipu filmowego<br />

Rys. 7.25. Wartosci skladowych koloru i poziomu<br />

przezroczystosci sa ustawiane przy pomocy serii<br />

wyrazen set variable<br />

207


Rozdzial 7.<br />

Zmiana koloru klipu filmowego<br />

10. Wybierz Objects/Color/setTransform.<br />

Metoda setTransform pojawi sie za<br />

obiektem koloru w polu Expression<br />

z podswietlonym argumentem cxform<br />

w nawiasach. Termin cxform jest skrótem<br />

od „color transform” (przeksztalcenie<br />

koloru) (rys. 7.26).<br />

11. Zastap podswietlony argument cxform<br />

nazwa twojego obiektu transformacji koloru<br />

(rys. 7.27).<br />

Kompletny skrypt powinien wygladac<br />

podobnie do pokazanego na rys. 7.28.<br />

12. Przetestuj film. Kiedy klikniesz utworzony<br />

przycisk, wprowadzone zostana klony<br />

obiektu koloru oraz obiektu transformacji<br />

koloru. Obiekt koloru wywoluje metode<br />

setTransform, uzywajaca obiektu<br />

transformacji koloru jako argumentu. Klip<br />

filmowy skojarzony z obiektem koloru<br />

zmieni kolor i poziom przezroczystosci.<br />

Wskazówka<br />

• Zamiast tworzyc osiem oddzielnych<br />

wyrazen definiujacych parametry obiektu<br />

transformacji koloru, wystarczy napisac<br />

jedno, zawierajace je wszystkie. Uzyj<br />

skladni:<br />

myColorTransform = { ra: '100',<br />

rb: '150', ga: '75', gb: '200',<br />

ba: '20', bb: '188', aa: '50',<br />

ab: '255'}<br />

gdzie parametry oddzielone sa ich<br />

wartosciami i dwukropkiem, a zestawienia<br />

parametr/wartosc oddzielone sa<br />

przecinkami.<br />

Rys. 7.26. Metoda setTransform wymaga<br />

argumentu cxform, gdzie cxform oznacza<br />

obiekt przechowujacy informacje<br />

o przeksztalceniu koloru<br />

Rys. 7.27. Metoda setTransform uzywa<br />

obiektu myColorTransform do zmiany obiektu<br />

koloru myNewColor<br />

Rys. 7.28. Kompletny skrypt zmienia kolor<br />

i poziom przezroczystosci klipu<br />

filmowegoshirt za kliknieciem przycisku<br />

208


Kontrolowanie klipów filmowych<br />

Zmiana kolejnosci<br />

ulozenia klipów filmowych<br />

Gdy bedziesz mial do czynienia ze zlozonymi<br />

przeciaganymi klipami filmowymi, zauwazysz,<br />

ze obiekty zachowuja swoja kolejnosc ulozenia<br />

nawet w momencie, gdy sa przeciagane, a to<br />

moze wygladac nieco dziwnie. Zwykle<br />

spodziewamy sie, ze przeciagany obiekt trafi na<br />

szczyt stosu. Mozna osiagnac taki efekt przy<br />

pomocy akcji swapDepths, która umozliwia<br />

przemieszczanie klipów filmowych w stosie<br />

w sposób dynamiczny. Uzywajac tej akcji,<br />

mozna zamienic miejscami dwa sasiadujace<br />

w stosie klipy filmowe o podanej nazwie lub tez<br />

wybrany klip z dowolnym innym, po wskazaniu<br />

poziomu, na którym jest umieszczony. Tak<br />

zwany poziom glebokosci (depth level) jest<br />

liczba okreslajaca pozycje klipu filmowego<br />

w stosie. Klipy o wyzszych wartosciach<br />

poziomu glebokosci beda nakladaly sie na te<br />

o poziomach nizs zych, podobnie jak ma to<br />

miejsce w przypadku poziomów doczytywanych<br />

filmów. Niezwykla cecha akcji swapDepths<br />

jest to, ze dziala ona na wskros warstw, tak wiec<br />

klip filmowy w dolnej warstwie moze sie<br />

zamienic poziomami z klipem umieszczonym<br />

w najwyzszej warstwie.<br />

Zmiana kolejnosci ulozenia klipów<br />

209


Rozdzial 7.<br />

Zmiana kolejnosci ulozenia klipów<br />

W celu zmiany ulozenia<br />

dwóch klipów filmowych:<br />

1. Utwórz dwa przeciagane klipy filmowe,<br />

w sposób opisany wczesniej w tym<br />

rozdziale. Powinny to byc dwa rózne<br />

symbole.<br />

2. Umiesc klony obu klipów filmowych na<br />

scenie, w tej samej warstwie. Nadaj klipom<br />

nazwy, poslugujac sie paleta Instance.<br />

3. Przejdz do trybu edycji symbolu pierwszego<br />

klipu filmowego i zaznacz niewidzialny<br />

przycisk umieszczony w tym klipie.<br />

4. Otwórz palete akcji i zaznacz wyrazenie<br />

startDrag. Wybierz Actions/evaluate.<br />

W polu Expression wpisz this.<br />

5. Wybierz Objects/Movie Clip/swapDepths.<br />

W polu Expression, za wyrazeniem this<br />

pojawi sie metoda swapDepths,<br />

z podswietlonym slowem target<br />

(rys. 7.29).<br />

6. W polu Expression wstaw w miejsce slowa<br />

target sciezke dostepu do drugiego klipu<br />

filmowego (rys. 7.30).<br />

7. Przejdz do trybu edycji symbolu drugiego<br />

klipu filmowego i dodaj podobne wyrazenie<br />

swapDepths do jego niewidzialnego<br />

przycisku. Podaj dla wyrazenia<br />

swapDepths sciezke dostepu do<br />

pierwszego klipu filmowego. Skrypty<br />

napisane dla obydwu przycisków w tych<br />

dwóch róznych klipach filmowych powinny<br />

wygladac podobnie jak skrypty na rys. 7.31.<br />

8. Przetestuj film. Kiedy przeciagniesz<br />

pierwszy z klipów filmowych, zamieni sie<br />

on miejscem w stosie z drugim klipem<br />

filmowym – i odwrotnie.<br />

Rys. 7.29. Przypisz akcje swapDepths<br />

do manipulatora zdarzenia on (press). Akcja<br />

ta zmienia kolejnosc ulozenia klipów<br />

filmowych w stosie<br />

Rys. 7.30. Biezacy klip filmowy oraz klip<br />

o nazwie puzzle2 zamienia sie kolejnoscia<br />

ulozenia<br />

Rys. 7.31. Metoda swapDepths zostala<br />

skojarzona z akcja startDrag. Przycisk<br />

z akcjami, jak te przypisane na górze, znajduje<br />

sie w klipie filmowym puzzle1. Przycisk<br />

z akcjami, jak te przypisane na dole, znajduje<br />

sie w klipie filmowym puzzle2. Obydwa klipy<br />

filmowe po przeciagnieciu zmienia kolejnosc<br />

ulozenia w stosie<br />

210


Kontrolowanie klipów filmowych<br />

Rys. 7.32. Biezacy klip filmowy zamieni sie<br />

miejscami w stosie z tym, który jest na poziomie<br />

glebokosci 2<br />

Klip filmowy na<br />

poziomie glebokosci 0<br />

Aktualnie<br />

przeciagany klip<br />

filmowy jest na<br />

poziomie<br />

glebokosci 2<br />

Klip filmowy na<br />

poziomie glebokosci 0<br />

Aktualnie<br />

przeciagany klip<br />

filmowy jest na<br />

poziomie<br />

glebokosci 2<br />

Rys. 7.33. Wymiana poziomów glebokosci jest<br />

idealna w sytuacjach, gdy masz do czynienia<br />

z wieloma przeciaganymi klipami filmowymi,<br />

tak jak te fragmenty ukladanki<br />

W celu wymiany poziomu glebokosci<br />

klipu filmowego:<br />

1. Kontynuuj prace z plikiem utworzonym<br />

w poprzednim cwiczeniu.<br />

2. Przejdz do trybu edycji symbolu pierwszego<br />

klipu filmowego i zaznacz jego niewidzialny<br />

przycisk.<br />

3. W miejsce sciezki dostepu w argumencie<br />

swapDepths wprowadz liczbe okreslajaca<br />

poziom glebokosci (rys. 7.32).<br />

4. Przejdz do trybu edycji symbolu drugiego<br />

klipu filmowego i w miejsce sciezki dostepu<br />

w argumencie swapDepths wprowadz<br />

liczbe okreslajaca ten sam poziom<br />

glebokosci.<br />

5. Przetestuj film. Pierwszy klip filmowy,<br />

który przeciagniesz, zostanie umieszczony<br />

na podanym poziomie glebokosci. Drugi<br />

przeciagany klip zostanie zastapiony<br />

jakimkolwiek innym klipem, aktualnie<br />

znajdujacym sie na tym poziomie<br />

(rys. 7.33).<br />

Wskazówka<br />

• Róznica pomiedzy uzywaniem sciezki<br />

dostepu a stosowaniem numeru poziomu<br />

glebokosci w argumencie swapDepths<br />

zalezy od twoich potrzeb. Sciezki dostepu<br />

uzyj do prostej zamiany dwóch klipów<br />

o podanych nazwach, gdzie klip<br />

przykrywajacy inny klip filmowy zostanie<br />

ustawiony za nim. Jesli przeciagany klip<br />

filmowy ma zawsze znajdowac sie ponad<br />

innymi klipami, uzyj poziomów glebokosci<br />

do ustalenia jego pozycji zawsze na<br />

wierzchu stosu.<br />

Zmiana kolejnosci ulozenia klipów<br />

211


Wykrywanie upuszczonych klipów<br />

Rozdzial 7.<br />

Wykrywanie<br />

upuszczonych<br />

klipów filmowych<br />

Skoro potrafisz stworzyc klip filmowy, który<br />

mozna przeciagac po scenie, chcialbys na<br />

pewno wiedziec, gdzie uzytkownik upuszcza<br />

poszczególne klipy. Jesli klipami filmowymi sa<br />

np. fragmenty ukladanki, powinienes wiedziec,<br />

czy te fragmenty sa przeciagane i upuszczane<br />

w naleznych im miejscach. Jednym<br />

z najprostszych sposobów na okreslenie<br />

lokalizacji upuszczonego klipu filmowego jest<br />

skorzystanie z wlasciwosci klipu o nazwie<br />

_droptarget. Wlasciwosc ta zwraca<br />

bezwzgledna sciezke dostepu do innego klipu<br />

filmowego, znajdujacego sie w miejscu<br />

upuszczenia klipu przeciaganego. Ten drugi klip<br />

filmowy jest wiec wlasciwie miejscem<br />

przeznaczenia dla przeciaganego klipu<br />

filmowego. Uzyj wyrazenia warunkowego do<br />

sprawdzenia, czy wlasciwosc _droptarget<br />

przeciaganego klipu jest identyczna ze sciezka<br />

dostepu do docelowego klipu filmowego.<br />

Wykonaj odpowiednie akcje w zaleznosci od<br />

tego, czy warunek jest spelniony, czy tez nie.<br />

Powszechna praktyka w przygotowywaniu<br />

klipów filmowych z mechanizmami przeciagniji-upusc<br />

jest tworzenie zachowan przyciagnij-do<br />

oraz efektów odsylania do pozycji wyjsciowej.<br />

Kiedy uzytkownik upuszcza klip filmowy<br />

blisko wlasciwej lokalizacji, mozesz to<br />

wykryc za pomoca wlasciwosci<br />

_droptarget, a nastepnie ustawic lub<br />

przyciagnac ten klip do precyzyjnie<br />

wyznaczonej pozycji za pomoca akcji<br />

setProperty, ustalajacej wspólrzedne x i y<br />

tej pozycji. Jesli uzytkownik upusci klip<br />

filmowy w nieprawidlowym miejscu,<br />

mozesz wykryc to równiez za pomoca<br />

wlasciwosci _droptarget, a nastepnie<br />

odeslac klip do jego pierwotnej lokalizacji<br />

za pomoca akcji setProperty.<br />

Nalezy zwrócic uwage, ze w przypadku<br />

uzywania skladni z ukosnikiem wlasciwosc<br />

_droptarget zwraca bezwzgledna sciezke<br />

dostepu. Wlasciwosc ta wywodzi sie<br />

z czwartej wersji programu, uzywajacej<br />

tylko skladni z ukosnikiem. Zeby wiec<br />

sprawdzic, czy wlasciwosc _droptarget<br />

odpowiada sciezce dostepu do docelowego<br />

klipu filmowego, skonstruuj wyrazenie<br />

warunkowe podobne do tego:<br />

_root.przeciaganyKlipFilmowy.<br />

_droptarget ==<br />

"/docelowyKlipFilmowy"<br />

212


Kontrolowanie klipów filmowych<br />

Rys. 7.34. Ten warunek sprawdza, czy biezacy<br />

klip filmowy zostal upuszczony w miejscu<br />

zajmowanym przez klip filmowy o nazwie<br />

destination. Ukosnik (/) oznacza glówna listwe<br />

czasowa<br />

Rys. 7.35. Jesli przeciagany klip filmowy zostanie<br />

upuszczony na klip filmowy o nazwie destination,<br />

argument jego wlasciwosci visibility zostanie<br />

ustawiony na false (falsz)<br />

Docelowy klip<br />

filmowy<br />

Przeciagany klip<br />

filmowy<br />

Docelowy klip<br />

filmowy<br />

Rys. 7.36. Ten hamburger zniknie, kiedy upuscisz<br />

go nad koszem<br />

W celu wykrycia<br />

upuszczonego klipu filmowego:<br />

1. Utwórz przeciagany klip filmowy, umiesc<br />

jego klon na scenie i nadaj mu nazwe za<br />

pomoca palety Instance.<br />

2. Utwórz kolejny klip filmowy, umiesc jego<br />

klon na scenie i nadaj mu nazwe.<br />

Bedzie to docelowy klip filmowy dla klipu<br />

przeciaganego.<br />

3. Przejdz do trybu edycji symbolu<br />

przeciaganego klipu filmowego i zaznacz<br />

umieszczony w nim niewidzialny przycisk.<br />

4. Zaznacz akcje stopDrag i wybierz<br />

Actions/if (Esc + if).<br />

Ponizej wyrazenia stopDrag pojawi sie<br />

wyrazenie if.<br />

5. W polu Condition wpisz this. Nastepnie<br />

wprowadz kropke.<br />

6. Wybierz Properties/_droptarget.<br />

7. Wpisz dwa znaki równosci.<br />

Para znaków równosci sprawdza, czy jedna<br />

wartosc jest taka sama, jak druga.<br />

Pojedynczy znak równosci jest uzywany do<br />

przypisywania jednej zmiennej do innej.<br />

8. Wprowadz sciezke dostepu do docelowego<br />

klipu filmowego, ujeta w cudzyslów,<br />

korzystajac ze skladni z ukosnikiem.<br />

Skonstruowales wlasnie koncowe wyrazenie<br />

warunkowe (rys. 7.34).<br />

9. Wybierz akcje, która bedzie wykonywana,<br />

gdy warunek zostanie spelniony. Kompletny<br />

skrypt powinien wygladac podobnie do tego<br />

na rys. 7.35.<br />

10. Przetestuj film (rys. 7.36).<br />

Kiedy upuscisz przeciagany klip filmowy,<br />

Flash sprawdzi, czy jego wlasciwosc<br />

_droptarget odpowiada sciezce dostepu<br />

do drugiego klipu filmowego. Jesli tak,<br />

wlasciwosci _visibility przeciaganego<br />

klipu filmowego zostaje przypisany<br />

argument prawda (true) i klip znika.<br />

Wykrywanie upuszczonych klipów<br />

213


Rozdzial 7.<br />

Wykrywanie upuszczonych klipów<br />

W celu utworzenia<br />

efektu odsylania<br />

do pozycji wyjsciowej:<br />

1. Kontynuuj prace z plikiem utworzonym<br />

w poprzednim cwiczeniu.<br />

2. Przejdz do trybu edycji symbolu<br />

przeciaganego klipu filmowego i zaznacz<br />

umieszczony w klipie niewidzialny przycisk.<br />

3. Zaznacz ostatnia akcje w wyrazeniu if<br />

i wybierz Actions/else (Esc + el).<br />

Pojawi sie wyrazenie else. Daje ci ono<br />

mozliwosc wybrania alternatywnego<br />

dzialania w przypadku niespelnienia<br />

warunku wyrazenia if (rys. 7.37).<br />

4. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz X Position,<br />

wpisz this w polu Target i wprowadz<br />

pierwotna wartosc wspólrzednej x w polu<br />

Value. Zaznacz obydwa pola Expression<br />

(rys. 7.38).<br />

To wyrazenie setProperty zmienia<br />

wspólrzedna x polozenia przeciaganego<br />

klipu filmowego, jesli nie zostal upuszczony<br />

nad docelowym klipem filmowym.<br />

Rys. 7.37. Akcja else wprowadza alternatywe<br />

dla warunku if<br />

Rys. 7.38. Wspólrzedna x ma wartosc 150<br />

214


Kontrolowanie klipów filmowych<br />

Rys. 7.39. Akcje tworzace efekt odsylania do<br />

pozycji wyjsciowej sa przypisane do warunku else<br />

5. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Y Position,<br />

wpisz this w polu Target i wprowadz<br />

pierwotna wartosc wspólrzednej y w polu<br />

Value. Zaznacz obydwa pola Expression.<br />

To wyrazenie setProperty zmienia<br />

wspólrzedna y polozenia przeciaganego<br />

klipu filmowego, jesli nie zostal upuszczony<br />

nad docelowym klipem filmowym.<br />

Kompletny skrypt powinien wygladac jak<br />

na rys. 7.39.<br />

6. Przetestuj film. Jesli przeciagany klip<br />

filmowy nie zostanie upuszczony nad<br />

docelowym klipem filmowym, Flash ustawi<br />

wartosci wspólrzednych x i y, które odesla<br />

klip do jego pierwotnego miejsca.<br />

Wskazówki<br />

• Uzyj akcji eval do oszacowania<br />

wlasciwosci _droptarget<br />

i przekonwertowania jej z postaci lancucha<br />

znakowego w skladni z ukosnikiem do<br />

postaci sciezki dostepu w konstrukcjach<br />

opartych na skladni z kropka. Móglbys, na<br />

przyklad, napisac wyrazenie warunkowe<br />

podobne do tego:<br />

Eval(_root.draggableMovieClip.<br />

_droptarget)==_root.<br />

destinationMovieClip<br />

• Flash ustala lokalizacje upuszczonego klipu<br />

filmowego w jego punkcie poczatkowym.<br />

Jesli punkt poczatkowy upuszczonego klipu<br />

filmowego nie znajdzie sie w obrebie<br />

obszaru graficznego docelowego klipu<br />

filmowego, przeciagany klip nie zostanie<br />

rozpoznany, nawet jesli czesciowo pokrywa<br />

klip docelowy.<br />

Wykrywanie upuszczonych klipów<br />

215


Rozdzial 7.<br />

Detekcja kolizji klipów filmowych<br />

Detekcja kolizji<br />

klipów filmowych<br />

Kolejnym warunkiem, który mozesz sprawdzac,<br />

jest okreslenie, czy klip filmowy przecina sie<br />

z innym klipem filmowym. Przykladowo,<br />

w grze w stylu Pong wystepuje detekcja kolizji<br />

pomiedzy pilka, rakietkami i sciana, a wszystkie<br />

te elementy sa klipami filmowymi. Detekcja<br />

kolizji klipów filmowych moze tez byc<br />

przydatna na wyszukanych witrynach handlu<br />

elektronicznego. Powiedzmy, ze<br />

przygotowujesz strone pozwalajaca dokonywac<br />

zakupów w sieci, umozliwiajaca klientom<br />

przenoszenie wybranych towarów do koszyka.<br />

Mozesz wykryc moment, w którym przeciagany<br />

obiekt pokrywa sie z koszykiem i wyzwolic<br />

jakas interakcje, polegajaca np. na<br />

podswietleniu koszyka lub wyswietleniu ceny<br />

produktu, zanim uzytkownik upusci go na<br />

koszykiem.<br />

Detekcja kolizji wykorzystuje metode klipu<br />

filmowego hitTest. Metody tej uzywa sie<br />

na dwa sposoby. Pierwszy z nich polega na<br />

sprawdzeniu, czy obramowania dwóch<br />

dowolnych klipów filmowych przecinaja sie.<br />

Obramowanie klipu filmowego to najmniejszy<br />

obszar w ksztalcie prostokata, w którym moze<br />

sie zmiescic grafika klipu. Ta metoda jest<br />

idealnym ro zwiazaniem w przypadkach, kiedy<br />

nastepuje kolizja dwóch grafik, np. pilki<br />

z rakietka, statku kosmicznego z asteroida albo<br />

ksiazki z koszykiem. Wystarczy po prostu<br />

wprowadzic sciezke dostepu do klipu<br />

filmowego jako argument metody hitTest –<br />

np. hitTest(_root.target).<br />

216


Kontrolowanie klipów filmowych<br />

Obramowanie<br />

klipu filmowego<br />

Rys. 7.40. Jesli parametr shapeflag ma wartosc<br />

prawda (u góry), to znaczy, ze dwa obiekty nie<br />

przecinaja sie. Jesli parametr shapeflag ma<br />

wartosc falsz (u dolu), to znaczy, ze dwa obiekty<br />

beda sie przecinac<br />

Rys. 7.41. onClipEvent (enterFrame) jest<br />

idealnym manipulatorem zdarzenia do<br />

nieustannego sprawdzania warunku<br />

Rys. 7.42. Ten warunek sprawdza, czy biezacy<br />

klip filmowy przecina sie z klipem filmowym<br />

asteroid<br />

Drugi sposób wykorzystania metody polega<br />

na sprawdzeniu, czy okreslony punkt<br />

o wspólrzednych x, y przecina sie z grafika.<br />

Tutaj wykorzystuje sie odniesienie do punktu,<br />

metoda ta nadaje sie wiec tylko do sprawdzania,<br />

czy punkt poczatkowy grafiki lub wskaznik<br />

myszy przecinaja sie z klipem filmowym.<br />

Argumentami metody hitTest sa wówczas<br />

wartosci x, y oraz parametr shapeflag, np.<br />

hitTest(x, y, shapeflag). Parametr<br />

shapeflag moze przyjmowac wartosc<br />

prawda lub falsz. Determinuje to, czy<br />

chodzi o obramowanie klipu filmowego (falsz,<br />

false), czy tez po prostu o ksztalt grafiki<br />

(prawda, true) (rys. 7.40).<br />

W celu wykrycia<br />

kolizji dwóch klipów filmowych:<br />

1. Utwórz klip filmowy, umiesc jego klon na<br />

scenie i nadaj mu nazwe.<br />

2. Utwórz przeciagany klip filmowy, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

3. Zaznacz przeciagany klip filmowy i otwórz<br />

palete akcji.<br />

4. Wybierz Actions/onClipEvent (Esc + oc ).<br />

W bloku edycji parametrów, w polu Event<br />

wybierz EnterFrame. Pojawi sie wyrazenie<br />

onClipEvent (enterFrame). Zdarzenie<br />

to wystepuje zgodnie z predkoscia<br />

odtwarzania filmu, co czyni je idealnym<br />

do nieustannego sprawdzania warunku<br />

hitTest (rys. 7.41).<br />

5. Wybierz Actions/if.<br />

6. W polu Condition wpisz this.<br />

7. Wybierz Objects/Movie Clip/hitTest.<br />

8. Wprowadz sciezke dostepu do pierwszego<br />

z klipów filmowych, umieszczajac ja<br />

w nawiasach wyrazenia hitTest.<br />

9. Wpisz podwójny znak równosci, a potem<br />

slowo true (rys. 7.42).<br />

Detekcja kolizji klipów filmowych<br />

217


Rozdzial 7.<br />

Detekcja kolizji klipów filmowych<br />

10. Wybierz akcje, która ma zostac wykonana<br />

po spelnieniu warunku. Kompletny skrypt<br />

powinien wygladac jak na rys. 7.43.<br />

11. Przetestuj film (rys. 7.44).<br />

Wskazówki<br />

• W przypadku warunków typu: prawda lub<br />

falsz (znanych jako boole’owskie), jak te<br />

w cwiczeniu, mozna tylko zapisac warunek<br />

i opuscic ostatnia czesc wyrazenia, == true<br />

(prawda). Flash zwraca wartosc prawdy lub<br />

falszu po wywolaniu metody hitTest,<br />

a wyrazenie if automatycznie sprawdza,<br />

czy warunek jest spelniony. Wiecej<br />

o wyrazeniach warunkowych dowiesz sie<br />

z czesci V, „Praca z informacja”.<br />

• Nie jest wazne, czy porównujesz ruchomy<br />

klip filmowy z obiektem docelowym, czy<br />

tez obiekt z klipem. Ponizsze dwa wyrazenia<br />

wykrywaja ten sam typ kolizji:<br />

this.hitTest(_root.target)<br />

_root.target.hitTest(this)<br />

• Jesli obiektem docelowym metody hitTest<br />

jest klip filmowy zawierajacy ruchoma grafike,<br />

to obramowanie tego klipu zostanie zmienione<br />

w taki sposób, by dopasowac je do animacji.<br />

W celu wykrycia kolizji pomiedzy klipem<br />

filmowym i punktem:<br />

1. Kontynuuj prace z plikiem utworzonym<br />

w poprzednim cwiczeniu.<br />

2. Zaznacz przeciagany klip filmowy i otwórz<br />

palete akcji.<br />

3. Zaznacz wyrazenie if. W polu Condition<br />

zmien wyrazenie na nastepujace:<br />

_root.asteroid.hitTest(this._x,<br />

this._y, true)<br />

Teraz metoda hitTest sprawdza, czy<br />

wspólrzedne x i y biezacego przeciaganego<br />

klipu filmowego przecinaja sie z ksztaltem klipu<br />

filmowego o nazwie asteroid, rezydujacego<br />

w glównej listwie czasowej (rys. 7.45).<br />

4. Przetestuj film.<br />

Rys. 7.43. Konsekwencja przeciecia jest<br />

wykonanie akcji nextFrame<br />

Rys. 7.44. Przeciagniecie klipu filmowego<br />

spaceship do obramowania klipu filmowego<br />

asteroid powoduje przeskok klipu spaceship<br />

do nastepnego ujecia, wyswietlajacego<br />

eksplozje<br />

Rys. 7.45. Powyzszy fragment skryptu<br />

(u góry) sprawdza, czy punkt poczatkowy<br />

klipu filmowego spaceship przecina sie<br />

z dowolnym ksztaltem klipu filmowego<br />

asteroid. Zwróc uwage, ze klip spaceship nie<br />

wchodzi w kolizje, poniewaz jego punkt<br />

poczatkowy znajduje sie wciaz w szczelinie<br />

pomiedzy krawedziami asteroidy<br />

218


Kontrolowanie klipów filmowych<br />

Rys. 7.46. Obramowanie wysrodkowanego klipu<br />

filmowego mozna zdefiniowac za pomoca jego<br />

wlasciwosci X Position, Y Position, Height<br />

i Width<br />

Wyznaczanie krawedzi obszarów<br />

klipów filmowych<br />

Znajomosc granic obszaru klipu filmowego jest<br />

uzyteczna zwlaszcza wtedy, gdy zachodzi<br />

potrzeba wpasowania przeciaganego klipu<br />

filmowego w obszar innego klipu. Zwykle takie<br />

dopasowywanie klipu filmowego laczy sie<br />

z jego centrowaniem, dlatego tez górna i dolna<br />

oraz boczne krawedzie mo ga byc definiowane<br />

za pomoca wlasciwosci X Position<br />

(wspólrzedna x), Y Position (wspólrzedna y),<br />

Height (wysokosc) i Width (szerokosc)<br />

(rys. 7.46). Jesli jednak klip filmowy nie zostal<br />

wysrodkowany, niemozliwe jest ustalenie granic<br />

obramowania za pomoca jego wlasciwosci.<br />

Zamiast tego uzywa sie metody getBounds.<br />

Metoda ta okresla minimalne i maksymalne<br />

rozmiary obramowania klipu filmowego<br />

i dolacza taka informacje do obiektu<br />

posiadajacego wlasciwosci xMin, xMax, yMin<br />

i yMax. Za pomoca wartosci tych wlasciwosci<br />

mozesz wpasowac przeciagany klip filmowy do<br />

innego klipu.<br />

W celu wpasowania klipu filmowego w<br />

obramowanie innego klipu:<br />

1. Utwórz klip filmowy, umiesc jego klon na<br />

scenie i nadaj mu nazwe.<br />

W obramowanie tego klipu filmowego<br />

zostanie wpasowany przeciagany klip<br />

filmowy.<br />

2. Utwórz kolejny klip filmowy, umiesc jego<br />

klon na scenie i nadaj mu nazwe.<br />

To bedzie przeciagany klip filmowy.<br />

3. Zaznacz klon drugiego klipu filmowego<br />

i otwórz palete akcji.<br />

4. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Load.<br />

5. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe obiektu, w którym<br />

beda przechowywane informacje<br />

o obramowaniu.<br />

Wyznaczanie krawedzi obszrów<br />

219


Rozdzial 7.<br />

Wyznaczanie krawedzi obszrów<br />

6. W polu Value wprowadz sciezke dostepu<br />

do klipu filmowego, którego obramowanie<br />

chcesz wykorzystac. Wybierz Objects/<br />

MovieClip/getBounds .<br />

W polu Value, za sciezka dostepu do klipu<br />

filmowego, pojawi sie metoda getBounds<br />

z podswietlonym argumentem<br />

targetCoordinateSpace (rys. 7.47).<br />

7. W miejsce argumentu<br />

targetCoordinateSpace wprowadz<br />

scieke dostepu do listwy czasowej, której<br />

wspólrzedne przestrzeni maja sluzyc jako<br />

odnosnik dla informacji o obramowaniu<br />

(rys. 7.48).<br />

8. Wybierz Actions/startdrag.<br />

9. W polu Target w bloku edycji parametrów<br />

wpisz this. Zaznacz pole Expression.<br />

10. Zaznacz pola wyboru Constrain to<br />

rectangle oraz Lock mouse to center.<br />

11. W polach L, T, R i B w bloku edycji<br />

parametrów wpisz wlasciwosci xMin,<br />

yMin, xMax i yMax twojego obiektu<br />

obramowania (rys. 7.49).<br />

12. Przetestuj film.<br />

Przeciagany klip filmowy jest<br />

wpasowywany wzgledem wspólrzednych,<br />

które metoda getBounds zwraca<br />

i umieszcza w obiekcie obramowania.<br />

Rys. 7.47. Metoda getBounds wymaga<br />

podania argumentu targetCoordinateSpace<br />

Rys. 7.48. Metoda getBound zwraca wartosci<br />

minimum x (xMin), minimum y (yMin),<br />

maksimum x (xMax) i maksimum y (yMax)<br />

klipu filmowego o nazwie square wzgledem<br />

wspólrzednych listwy czasowej _root, a<br />

nastepnie przechowuje te informacje w<br />

obiekcie obramowania o nazwie myBounds<br />

Rys. 7.49. Blok edycji parametrów akcji<br />

startDrag. Wlasciwosci obiektu myBounds sa<br />

umieszczane w polach Constrain to rectangle<br />

220


Kontrolowanie klipów filmowych<br />

Powielanie i usuwanie<br />

klipów filmowych<br />

Tworzenie „w locie” wielu klonów istniejacych<br />

klipów filmowych umozliwia akcja<br />

duplicateMovieClip. Powielane klony klipu<br />

filmowego otrzymuja swoje wlasne, unikalne<br />

nazwy, podobnie jak poziom glebokosci,<br />

determinujacy kolejnosc ich ulozenia w stosie<br />

(w przypadku klipów filmowych ustalany za<br />

pomoca wlasciwosci swapDepths). Po<br />

zduplikowaniu klipu filmowego mozesz<br />

zmieniac dowolne z jego wlasciwosci,<br />

nawigowac po jego listwie czasowej i ogólnie<br />

uzywac tak, jak kazdego innego klipu<br />

filmowego. Powielanie klipów filmowych jest<br />

przydatne zwlaszcza w dynamicznym tworzeniu<br />

grafiki. Przykladowo, powielajac krótkie<br />

fragmenty linii lub standardowe ksztalty,<br />

a pózniej edytujac ich wlasciwosci (jak pozycja,<br />

skala, rotacja), mozesz tworzyc animacje lub<br />

nawet symulowac glebie obiektów 3D i to na<br />

biezaco (choc wymaga to duzo matematyki).<br />

Gdybys chcial, zeby towar w twoim<br />

internetowym sklepie nigdy nie znikal z pólek,<br />

mozesz powielac dany artykul za kazdym<br />

razem, kiedy klient przeciagnie go do koszyka.<br />

W grze Asteroids natomiast, rozkruszenie jednej<br />

duzej asteroidy na kilka mniejszych mozna<br />

zrealizowac wlasnie poprzez powielanie klipu<br />

filmowego asteroidy.<br />

Powszechna praktyka jest powielanie klipów<br />

filmowych z uzyciem zapetlonych funkcji, które<br />

dodaja kolejne numery do nazw klonów<br />

i automatycznie przypisuja poziomy glebokosci.<br />

Na przyklad, klip filmowy asteroid moze byc<br />

powielany w ten sposób, ze kolejne klony<br />

otrzymywalyby nastepujace oznaczenia:<br />

asteroid1 na poziomie glebokosci 1 (Depth<br />

Level 1 ), asteroid2 na poziomie glebokosci 2,<br />

asteroid3 na poziomie glebokosci 3, itd. Zajrzyj<br />

do rozdzialu 9., „kontrolowanie przeplywu<br />

informacji”, z którego dowiesz sie<br />

o dzialajacych w petli akcjach, uzupelniajacych<br />

proces powielania klipów filmowych.<br />

Powielanie i usuwanie klipów<br />

221


Rozdzial 7.<br />

Powielanie i usuwanie klipów<br />

W celu powielenia klonu<br />

klipu filmowego:<br />

1. Utwórz symbol klipu filmowego, umiesc go<br />

na scenie i nadaj mu nazwe.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

3. Zaznacz przycisk i otwórz palete akcji.<br />

4. Wybierz Actions/duplicateMovieClip<br />

(Esc + dm).<br />

W oknie skryptu, ponizej zdarzenia<br />

on (release) pojawi sie akcja<br />

duplicateMovieClip (rys. 7.50).<br />

5. W polu Target wprowadz sciezke dostepu<br />

do klipu filmowego. Zaznacz pole<br />

Expression.<br />

6. W polu New Name wpisz nazwe dla<br />

powielonego klipu filmowego. Pole<br />

Expression pozostaw niezaznaczone.<br />

7. W polu Depth wpisz liczbe wieksza od 0,<br />

okreslajaca poziom glebokosci (czyli<br />

pozycje w stosie) zduplikowanego klipu<br />

filmowego (rys. 7.51).<br />

W tym momencie, jesli odtworzysz swój<br />

film, akcje przypisane do przycisku<br />

spowoduja powielenie klipu filmowego<br />

nerd, jednak nowy klon pojawi sie<br />

w miejscu oryginalu, tak wiec wlasciwie<br />

trudno dostrzec, czy cokolwiek sie stalo.<br />

Zeby zobaczyc powielony klon, musisz go<br />

przesunac lub zmienic w jakis inny sposób,<br />

odrózniajacy go od oryginalu.<br />

8. Wybierz Actions/setProperty.<br />

9. Z menu rozwijanego Property wybierz<br />

X Position.<br />

Rys. 7.50. Przypisz akcje duplicateMovieClip<br />

do zdarzenia myszy on (release) utworzonego<br />

przycisku<br />

Rys. 7.51. Klip filmowy o nazwie nerdCopy<br />

umieszczony na poziomie glebokosci 2 jest<br />

kopia klipu filmowego nerd<br />

222


Kontrolowanie klipów filmowych<br />

Rys. 7.52. Klip filmowy nerdCopy zostal<br />

przesuniety o 40 pikseli w prawo od klipu<br />

filmowego nerd<br />

Rys. 7.53. Pokazany skrypt (u góry) zostal<br />

przypisany do klonu przycisku na dole sceny.<br />

Po zduplikowaniu oryginalnego klipu filmowego<br />

(z lewej), kopia moze byc edytowana tak, jak<br />

kazdy inny klip (z prawej). W tym przykladzie<br />

powielony klip filmowy o nazwie nerdCopy ma<br />

zmodyfikowane wlasciwosci X Position, X Scale<br />

i Y Scale<br />

10. W polu Target wprowadz sciezke dostepu<br />

do powielonego klipu filmowego. Zaznacz<br />

pole Expression.<br />

11. W polu Value wpisz wyrazenie, które<br />

dodaje 40 do wlasciwosci X Position<br />

oryginalnego klipu filmowego (rys. 7.52).<br />

Zaznacz pole Expression.<br />

12. Dodaj wiecej wyrazen setProperty<br />

w celu przeksztalcenia zduplikowanego<br />

klipu filmowego (rys. 7.53).<br />

13. Przetestuj film.<br />

Wskazówki<br />

• Na jednym poziomie glebokosci moze<br />

znajdowac sie tylko jeden klip filmowy.<br />

Jesli powielisz kolejny klon z juz<br />

zajmowanego poziomu, kopia zajmie<br />

miejsce oryginalu.<br />

• Zduplikowane klipy filmowe przejmuja<br />

wlasciwosci oryginalnego klonu. Jesli wiec<br />

oryginal ma np. przezroczystosc ustawiona<br />

na 50 procent, kopia zachowa to ustawienie.<br />

Jednakze powielone klony zawsze zajmuja<br />

pozycje wyjsciowa w ujeciu pierwszym,<br />

nawet jesli oryginalny klip filmowy<br />

w momencie powielania zajmowal inne<br />

ujecie.<br />

• Poziom glebokosci odpowiada poziomowi<br />

w metodzie klipu filmowego swapDepths,<br />

dlatego uzywaj tej metody do zmiany<br />

kolejnosci ulozenia w stosie powielonych<br />

klipów filmowych.<br />

Powielanie i usuwanie klipów<br />

223


Rozdzial 7.<br />

Powielanie i usuwanie klipów<br />

W celu usuniecia duplikatu<br />

klipu filmowego:<br />

1. Kontynuuj prace nad plikiem utworzonym<br />

w poprzednim cwiczeniu. Umiesc na scenie<br />

nowy klon przycisku.<br />

2. Zaznacz nowy klon przycisku i otwórz<br />

palete akcji.<br />

3. Wybierz Actions/removeMovieClip<br />

(Esc + rm).<br />

Ponizej zdarzenia on (release) pojawi<br />

sie akcja removeMovieClip.<br />

4. W bloku edycji parametrów palety akcji,<br />

w polu Target wprowadz sciezke dostepu<br />

do zduplikowanego klipu filmowego.<br />

Pozostaw pole Expression niezaznaczone<br />

(rys. 7.54).<br />

5. Przetestuj film.<br />

Pierwszy z przycisków powoduje<br />

utworzenie duplikatu klipu filmowego.<br />

Drugi przycisk usuwa duplikat ze sceny<br />

(rys. 7.55).<br />

Wskazówka<br />

• Nie mozna uzyc akcji removeMovieClip<br />

do usuniecia ze sceny klonu oryginalnego<br />

klipu filmowego. W takim przypadku trzeba<br />

wstawic nowe ujecie kluczowe i wtedy<br />

usunac klon klipu filmowego.<br />

Rys. 7.54. Akcja removeMovieClip usuwa<br />

duplikat klonu o nazwie nerdCopy<br />

Rys. 7.55. Oryginalny klip filmowy (z lewej)<br />

jest powielany za pomoca akcji<br />

duplicateMovieClip, przypisanej<br />

do pierwszego z przycisków (w srodku).<br />

Zduplikowany klon nosi nazwe nerdCopy.<br />

Akcja removeMovieClip, przypisana<br />

do drugiego przycisku, usuwa duplikat klonu<br />

(z prawej)<br />

224


Kontrolowanie klipów filmowych<br />

Rys. 7.56. Opcja Linkage w menu<br />

rozwijanym biblioteki<br />

Rys. 7.57. Okno dialogowe Symbol Linkage<br />

Properties<br />

Przylaczanie<br />

klipów filmowych<br />

Technika powielania istniejacych klipów<br />

filmowych jest wspaniala. Co jednak zrobic<br />

w sytuacji, gdy musisz w dynamiczny sposób<br />

przeniesc klip filmowy z biblioteki na scene?<br />

W takim przypadku mozna posluzyc sie metoda<br />

attachMovie. Pozwala ona na utworzenie<br />

nowych klipów filmowych z biblioteki<br />

i przylaczenie ich do obecnych juz na scenie<br />

klonów klipów filmowych. Przylaczony klip<br />

filmowy nie zajmuje miejsca oryginalu, ale<br />

w zasadzie staje sie czescia obiektu klipu<br />

filmowego w relacji rodzic -dziecko. Jesli<br />

oryginalny klon na scenie nosi nazwe<br />

parentInstance, to sciezka dostepu do<br />

przylaczonego klipu filmowego moglaby<br />

wygladac nastepujaco:<br />

_root.parentInstance.<br />

attachedInstance.<br />

W celu przylaczenia<br />

klipu filmowego z biblioteki:<br />

1. Utwórz symbol klipu filmowego, umiesc go<br />

na scenie i nadaj mu nazwe przy pomocy<br />

palety Instance.<br />

Ten klon bedzie oryginalnym klipem<br />

filmowym, klonem-rodzicem, do którego<br />

przylaczysz inny klip filmowy.<br />

2. Utwórz kolejny symbol klipu filmowego.<br />

3. Z menu rozwijanego Options palety<br />

Library wybierz Linkage (rys. 7.56).<br />

Pojawi sie okno dialogowe Symbol Linkage<br />

Properties.<br />

4. W pozycji Linkage wybierz opcje Export<br />

this symbol, a w polu Identifier wpisz<br />

identyfikator twojego klipu filmowego.<br />

Kliknij OK (rys. 7.57).<br />

Wprowadzony identyfikator umozliwia<br />

odwolywanie sie za jego pomoca do klipu<br />

filmowego w czasie pisania skryptu<br />

i przylaczanie tego klipu do klonu<br />

znajdujacego sie na scenie.<br />

Przylaczanie klipów filmowych<br />

225


Rozdzial 7.<br />

Przylaczanie klipów filmowych<br />

5. Utwórz przycisk i przeciagnij jego klon na<br />

scene.<br />

6. Zaznacz przycisk i otwórz palete akcji.<br />

7. Wybierz Actions/evaluate . W polu<br />

Expression wprowadz sciezke dostepu do<br />

klipu filmowego na scenie.<br />

8. Wybierz Objects/MovieClip/attachMovie.<br />

Metoda attachMovie pojawi sie w polu<br />

Expression, zaraz za sciezka dostepu do<br />

klonu klipu filmowego (rys. 7.58).<br />

9. W nawiasach stojacych przy metodzie<br />

attachMovie wpisz identyfikator klipu<br />

filmowego z biblioteki, nazwe<br />

przylaczanego klonu i poziom glebokosci<br />

(rys. 7.59).<br />

10. Przetestuj film.<br />

Kiedy klikniesz utworzony przycisk, klip<br />

filmowy zidentyfikowany w bibliotece<br />

zostanie przylaczony do klonu na scenie<br />

i nalozony na niego. Punkt poczatkowy tego<br />

klipu filmowego pokryje sie z punktem<br />

poczatkowym klonu-rodzica (rys. 7.60).<br />

Kiedy uzywasz metody attachMovie,<br />

masz do czynienia z kilkoma nazwami,<br />

których nie wolno mylic. W powyzszym<br />

przykladzie nazwa symbolu klipu filmowego<br />

w bibliotece to apple movie clip.<br />

Identyfikatorem jest apple, a nazwa<br />

przylaczonego klonu to attachedApple.<br />

Rys. 7.58. Metoda attachMovie wymaga<br />

podania argumentów idName, newName<br />

i depth.<br />

Rys. 7.59. Ta metoda attachMovie przylacza<br />

klon klipu filmowego o nazwie apple do klonu<br />

plate na poziomie glebokosci 2 i nadaje<br />

przylaczonemu klonowi nazwe attachedApple<br />

Rys. 7.60. Klon klipu filmowego o nazwie<br />

plate znajduje sie na scenie (u góry). Akcje<br />

przypisane do przycisku powoduja<br />

przylaczenie klonu klipu filmowego apple<br />

z biblioteki (z prawej) do klonu plate (u dolu)<br />

226


Kontrolowanie klipów filmowych<br />

Wskazówki<br />

• Przylaczony klip filmowy przejmuje<br />

wlasciwosci klonu klipu filmowego-rodzica.<br />

Jesli wiec klon oryginalnego klipu<br />

filmowego jest obrócony o 45 stopni, to<br />

przylaczony klip filmowy tez zostanie<br />

obrócony o 45 stopni.<br />

• Przylaczaj klip filmowy do klonu na scenie<br />

z pustym pierwszym ujeciem. Dzieki temu<br />

klon-rodzic zachowa sie jak pusty pojemnik,<br />

gotowy pomiescic dowolny klip filmowy<br />

z biblioteki.<br />

• Mozesz przylaczac kilka klipów filmowych<br />

do jednego klonu rodzica, o ile podasz<br />

oddzielne poziomy glebokosci. Jednak<br />

kazdy poziom glebokosci moze<br />

przechowywac juz tylko jeden klip filmowy.<br />

• Mozliwe jest tez przylaczanie klipów<br />

filmowych do innego przylaczonego klipu<br />

filmowego. Sciezka dostepu do pierwszego<br />

przylaczonego klipu filmowego przyjmie<br />

wtedy postac: _root.klonRodzic.<br />

przylaczonyKlon1. Tymczasem sciezka<br />

dostepu do kolejnego przylaczonego klipu<br />

filmowego bedzie wygladac tak:<br />

przylaczonyKlon1.<br />

przylaczonyKlon2 itd.<br />

• Po przylaczeniu klipu filmowego<br />

z biblioteki do klonu, znajdujacego sie na<br />

scenie, mozesz modyfikowac wlasciwosci<br />

klonu-rodzica, np. _root.klonRodzic.<br />

_alpha = 50, a jednoczesnie zmienione<br />

zostana wlasciwosci wszystkich<br />

dolaczonych do niego klipów filmowych.<br />

Przylaczanie klipów filmowych<br />

227


Rozdzial 7.<br />

W celu usuniecia<br />

przylaczonego klipu filmowego:<br />

1. Uzyj akcji removeMovieClip. Wybierz<br />

Actions/removeMovieClip (Esc + rm).<br />

W polu Target palety akcji wprowadz<br />

sciezke dostepu do przylaczonego klipu<br />

filmowego (rys. 7.61).<br />

lub<br />

Uzyj akcji unloadMovie. Wybierz<br />

Actions/unloadMovie (Esc + um). Z menu<br />

rozwijanego Location palety akcji wybierz<br />

Target i wprowadz sciezke dostepu do<br />

przylaczonego klipu filmowego (rys. 7.62).<br />

Rys. 7.61. Sciezka dostepu do klipu<br />

filmowego attachedApple musi zawierac<br />

nazwe klipu, do którego klip o tej nazwie<br />

zostal przylaczony<br />

Przylaczanie klipów filmowych<br />

Rys. 7.62. Akcja unloadMovie, przeznaczona<br />

do usuwania zewnetrznych plików SWF, moze<br />

posluzyc do usuniecia przylaczonych klipów<br />

filmowych<br />

228


Kontrolowanie klipów filmowych<br />

Rys. 7.63. Metoda hide obiektu Mouse nie<br />

wymaga utworzenia klonu<br />

Zmiana<br />

wygladu wskaznika myszy<br />

Skoro wiesz juz, jak kontrolowac klip filmowy,<br />

mozesz przejsc do projektowania wlasnych<br />

wskazników myszy. Pomysl teraz o wszystkich<br />

typach kursora, jakie mozesz zobaczyc we<br />

Flashu. Kiedy wybierasz narzedzia z palety<br />

narzedziowej – wiadro z farba, pipete czy<br />

olówek – wskaznik myszy zmienia sie tak, by<br />

pomóc ci zrozumiec i zastosowac te narzedzia.<br />

Podobnie i ty mozesz wprowadzac w swoich<br />

projektach rózne formy wskaznika, pasujace do<br />

aktualnie wybranej funkcji.<br />

Proces przygotowania wlasnego wskaznika<br />

zaczyna sie od ukrycia domyslnego kursora<br />

myszy. Potem trzeba dopasowac lokalizacje<br />

nowej grafiki do pozycji zajmowanej przez<br />

ukryty (ale wciaz aktywny) wskaznik myszy.<br />

W tym celu ustawia sie wlasciwosci klipu<br />

filmowego X Position oraz Y Position w ten<br />

sposób, aby odpowiadaly wspólrzednym<br />

polozenia kursora myszy x i y. Te wspólrzedne<br />

definiuje sie przy pomocy wlasciwosci<br />

_xmouse oraz _ymouse.<br />

W celu ukrycia wskaznika myszy:<br />

1. Zaznacz pierwsze ujecie kluczowe i otwórz<br />

palete akcji. Wybierz Objects/Mouse/hide<br />

(rys. 7.63).<br />

Kiedy uruchomisz testowanie filmu,<br />

wskaznik myszy stanie sie niewidoczny.<br />

Wskazówka<br />

• Ukrywanie wskaznika myszy jest uzyteczna<br />

cecha w przypadku filmów bedacych<br />

czystymi animacjami, pozbawionymi<br />

interaktywnosci. Pozwala to zapobiec<br />

rozpraszaniu uwagi przez niechciany widok<br />

wskaznika, który móglby przeciez pojawiac<br />

sie dopiero w momencie, kiedy uzytkownik<br />

spróbuje kliknac jakis przycisk dostepny<br />

w oknie filmu.<br />

Zmiana wygladu wskaznika myszy<br />

229


Rozdzial 7.<br />

Zmiana wygladu wskaznika myszy<br />

W celu przywrócenia widoku wskaznika<br />

myszy:<br />

1. Na palecie akcji wybierz Objects/Mouse/<br />

show (rys. 7.64).<br />

W celu utworzenia<br />

wlasnego wskaznika myszy:<br />

1. Utwórz symbol klipu filmowego, umiesc go<br />

na scenie i nadaj mu nazwe przy pomocy<br />

palety Instance. Ten klip filmowy bedzie<br />

twoim nowym wskaznikiem.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Wybierz Action/onClipEvent (Esc + oc ).<br />

Zaznacz zdarzenie Load.<br />

4. Wybierz Objects/Mouse/hide. Ponizej<br />

wyrazenia onClipEvent (load) pojawi<br />

sie metoda Mouse.hide(). Kiedy klip<br />

filmowy zostanie wczytany, wskaznik<br />

myszy zniknie (rys. 7.65).<br />

5. Zaznacz klamre zamykajaca manipulatora<br />

onClipEvent (load). Wybierz<br />

Actions/onClipEvent. Zaznacz zdarzenie<br />

Mouse move . Ponizej manipulatora<br />

onClipEvent (load) pojawi sie<br />

manipulator zdarzenia onClipEvent<br />

(mouseMove).<br />

6. Wybierz Actions/setProperty.<br />

7. Z menu rozwijanego Property wybierz<br />

X Position. W polu Target wpisz this.<br />

W polu Value wpisz _root, nastepnie<br />

kropke i wybierz Properties/_xmouse.<br />

Zaznacz obydwa pola Expression.<br />

8. Ponownie wybierz Actions/setProperty.<br />

9. Z menu rozwijanego Property wybierz<br />

Y Position. W polu Target wpisz this.<br />

W polu Value wpisz _root, nastepnie<br />

kropke i wybierz Properties/_ymouse.<br />

Zaznacz obydwa pola Expression<br />

(rys. 7.66).<br />

10. Przetestuj film (rys. 7.67).<br />

Rys. 7.64. Metoda show obiektu Mouse<br />

przywraca widok wskaznika myszy<br />

Rys. 7.65. Wskaznik myszy zniknie po<br />

wczytaniu klipu filmowego<br />

Rys. 7.66. Wyrazenia setProperty ustawiaja<br />

wartosci wspólrzednych polozenia biezacego<br />

klipu filmowego – zgodnie ze wspólrzednymi<br />

polozenia wskaznika myszy – za kazdym<br />

razem, gdy wskaznik zostanie przesuniety<br />

w nowe miejsce<br />

Rys. 7.67. To szklo powiekszajace<br />

jest klipem filmowym ustawionym<br />

wedlug wspólrzednych x i y<br />

wskaznika myszy. Postaraj sie<br />

tworzyc pomocne ksztalty kursora,<br />

odpowiadajace wybranym<br />

funkcjom<br />

230


Kontrolowanie klipów filmowych<br />

Rys. 7.68. Wprowadz akcje updateAfterEvent,<br />

zeby zmusic Flasha do odswiezenia obrazu<br />

i uzyskania bardziej plynnego ruchu<br />

Uzyj funkcji updateAfterEvent, zeby<br />

zmusic Flasha do odswiezenia ekranu<br />

niezaleznie od predkosci odtwarzania filmu.<br />

Pozwala to wyeliminowac efekt migotania<br />

towarzyszacy przesuwaniu grafiki po ekranie<br />

z szybkoscia wieksza niz szybkosc odswiezania<br />

ekranu przez Flasha. Jest to szczególnie wazne,<br />

jesli uzywasz wlasnego ksztaltu wskaznika.<br />

Akcja updateAfterEvent moze byc<br />

wykorzystywana z nastepujacymi zdarzeniami<br />

klipu filmowego: mouseMove, mouseUp,<br />

keyDown oraz keyUp. Uzywaj tych zdarzen<br />

jako argumentów dla metody<br />

updateAfterEvent.<br />

W celu<br />

odswiezenia grafiki na ekranie:<br />

1. Kontynuuj prace nad plikiem utworzonym<br />

w poprzednim cwiczeniu. Zaznacz klip<br />

filmowy przedstawiajacy szklo<br />

powiekszajace i otwórz palete akcji.<br />

2. Zaznacz ostatnie wyrazenie setProperty<br />

ponizej linii z manipulatorem<br />

onClipEvent (mouseMove).<br />

3. Wybierz Actions/evaluate . W oknie skryptu<br />

pojawi sie nowa linia wyrazenia, a w bloku<br />

edycji parametrów – pole Expression.<br />

4. Wybierz Functions/updateAfterEvent.<br />

W polu Expression pojawi sie funkcja<br />

updateAfterEvent.<br />

5. W nawiasach przy funkcji<br />

updateAfterEvent wprowadz zdarzenie<br />

mouseMove (rys. 7.68).<br />

Teraz Flash bedzie odswiezal grafike<br />

po kazdym poruszeniu wskaznika, dajac<br />

w efekcie bardziej plynne ruchy.<br />

Wskazówka<br />

• Spróbuj uzywac kilku klipów filmowych<br />

do zobrazowania ksztaltu wskaznika.<br />

Przykladowo, pionowa linia ustawiana<br />

wedlug wspólrzednej _xmouse oraz linia<br />

pozioma, przyjmujaca wspólrzedne<br />

_ymouse, tworza razem kursor w ksztalcie<br />

krzyzyka.<br />

Zmiana wygladu wskaznika myszy<br />

231


Rozdzial 7.<br />

Tworzenie animacji<br />

Tworzenie animacji<br />

za pomoca jezyka ActionScript<br />

Akcje, które omówilismy dotychczas w tym<br />

rozdziale, skrypty pozwalajace kontrolowac<br />

i sprawdzac wlasciwie wszystkie aspekty klipu<br />

filmowego – wyglad, lokalizacje, mozliwosc<br />

przeciagania, kolizje, poziom glebokosci,<br />

duplikaty – stanowia podstawowe narzedzia do<br />

tworzenia animacji w calosci za pomoca<br />

ActionScript. Podczas gdy automatyczne<br />

animacje ruchu i ksztaltu tworzy sie przed ich<br />

odtworzeniem, animacja skryptowa jest<br />

generowana w czasie odtwarzania, dzieki czemu<br />

moze reagowac na dzialania uzytkownika.<br />

Ponizsze cwiczenie obejmuje wykonanie we<br />

Flashu prostej gry na zasadach dzieciecego<br />

berka. Jest to swietny przyklad, który pokazuje<br />

sposób animowania obiektów w ActionScript<br />

w zaleznosci od dzialan podejmowanych przez<br />

uzytkownika. Utworzysz klip filmowy<br />

podazajacy za wskaznikiem myszy. Jesli klip<br />

„zlapie” poruszany przez ciebie wskaznik,<br />

przegrasz.<br />

W celu przygotowania gry<br />

„lapanie kursora”:<br />

1. Utwórz symbol klipu filmowego z dwoma<br />

ujeciami kluczowymi. Pierwsze ujecie<br />

kluczowe powinno zawierac grafike i akcje<br />

stop, drugie bedzie wyswietlac komunikat<br />

„You lose” („przegrales”) (rys. 7.69).<br />

2. Umiesc klon klipu filmowego na scenie. Nadaj<br />

mu nazwe za pomoca palety Instance. W tym<br />

przykladzie nazwa jest cat (kot).<br />

3. Zaznacz klon i otwórz palete akcji.<br />

4. Wybierz Actions/onClipEvent. Jako<br />

zdarzenie (Event) zaznacz Enter frame.<br />

5. Wybierz Actions/set variable.<br />

6. W polu Variable palety akcji wprowadz<br />

bezwzgledna sciezke dostepu do klipu<br />

filmowego, kropke, a nastepnie wlasciwosc<br />

X Position. Wyrazenie powinno wygladac<br />

tak: _root.cat._x<br />

Ujecie<br />

kluczowe 1.<br />

Akcja stop<br />

Ujecie<br />

kluczowe 2.<br />

Rys. 7.69. Ten klip filmowy o nazwie cat<br />

wyswietla obrazek kota w ujeciu<br />

kluczowym 1. w czasie „gonitwy” za<br />

kursorem oraz druga, inna grafike w ujeciu<br />

kluczowym 2., jesli przegrasz gre<br />

232


Kontrolowanie klipów filmowych<br />

Rys. 7.70. Wspólrzedne x i y polozenia klipu<br />

filmowego cat zmieniaja sie w zaleznosci od<br />

polozenia wskaznika<br />

Rys. 7.71. Warunek sprawdza, czy wskaznik<br />

przecina sie z klonem klipu filmowego cat<br />

Rys. 7.72. Klip filmowy cat przechodzi do<br />

nastepnego ujecia na jego listwie czasowej<br />

7. W polu Value wpisz:<br />

_root.cat._x + (_root._xmouse –<br />

_root.cat._x)/10<br />

Zaznacz pole Expression obok pola Value.<br />

To wyrazenie zaczyna sie od wprowadzenia<br />

wspólrzednej x polozenia klipu filmowego<br />

cat i dodania róznicy pomiedzy polozeniem<br />

wskaznika myszy i polozeniem klipu cat.<br />

Jesli wskaznik jest na prawo od klipu<br />

filmowego, dodawana jest wartosc dodatnia.<br />

Jesli wskaznik znajduje sie na lewo od klipu<br />

filmowego, dodawana jest wartosc ujemna.<br />

W kazdym przypadku „kot” zbliza sie do<br />

„myszy”, czyli wskaznika. Dzielenie przez<br />

10 zapobiega natychmiastowemu<br />

umieszczeniu klipu filmowego w miejscu<br />

polozenia wskaznika myszy. Przyrost<br />

wartosci jest maly (jedna dziesiata<br />

odleglosci), wiec „kot” niespecjalnie nadaza<br />

za „mysza”.<br />

8. Wybierz Actions/set variable. Wpisz<br />

jednakowe wartosci wspólrzednych x i y<br />

w polach Variable oraz Value (rys. 7.70).<br />

9. Wybierz Actions/if.<br />

10. W polu Condition wpisz:<br />

_root.cat.hitTest(_root._xmouse,<br />

_root._ymouse, true)<br />

To wyrazenie uzywa metody hitTest do<br />

sprawdzenia, czy wspólrzedne x i y<br />

polozenia wskaznika myszy przecinaja sie<br />

z klipem filmowym cat. Argument<br />

shapeflag ma wartosc true (prawda),<br />

przez co brany jest pod uwage wylacznie<br />

ksztalt samej grafiki, a nie calego<br />

obramowania (rys. 7.71).<br />

11. Wybierz Actions/evaluate . Wprowadz<br />

sciezke dostepu do klipu filmowego cat,<br />

kropke i na koncu metode nextFrame().<br />

Jesli warunek metody hitTest zostanie<br />

spelniony (true, prawda), klip filmowy cat<br />

przejdzie do kolejnego ujecia, wyswietlajac<br />

komunikat „You lose” („przegrales”)<br />

(rys. 7.72).<br />

Tworzenie animacji<br />

233


Rozdzial 7.<br />

12. Wybierz Actions/setProperty.<br />

13. Z menu rozwijanego Property wybierz<br />

Name . W polu Target wprowadz<br />

bezwzgledna sciezke dostepu do klipu<br />

filmowego cat. Zaznacz pole Expression.<br />

W polu Value wpisz nowa nazwe<br />

(rys. 7.73). Nazwa klonu klipu filmowego<br />

cat zostanie zmieniona, zapobiegajac<br />

zaprzestaniu przemieszczania klipu<br />

filmowego przez pierwsza grupe wyrazen<br />

akcji.<br />

14. Przetestuj film (rys. 7.74).<br />

Rys. 7.73. Powyzsze parametry akcji<br />

setProperty zmieniaja nazwe klipu filmowego<br />

cat na youLoseMessage<br />

Tworzenie animacji<br />

Rys. 7.74. Skrypt napisany dla klonu klipu<br />

filmowego cat (u góry) odpowiada za<br />

interaktywnosc w grze. Klip filmowy cat<br />

„goni” wskaznik myszy (z lewej) i wyswietla<br />

komunikat ukryty w drugim ujeciu listwy<br />

czasowej klipu w momencie przeciecia ze<br />

wskaznikiem (z prawej)<br />

234


Kontrolowanie dzwieku<br />

8<br />

Czesci skladowe jezyka HTML<br />

Wprowadzenie do twojego filmu Flasha dzwieku moze pozytywnie wplynac na animacje<br />

i interaktywnosc, a takze wzmocnic sile wyrazu nawet najprostszego projektu, angazujac kolejny<br />

zmysl odbiorcy. Mozna np. odtwarzac w tle muzyke podkreslajaca nastrój filmu, dolaczyc narracje<br />

do opowiadanej historii czy wprowadzic efekty dzwiekowe, które beda towarzyszyc róznym<br />

zdarzeniom – klikaniu przycisków, przeciaganiu obiektów, itd. Flash obsluguje pliki MP3 –<br />

mocno skompresowane, ale wciaz wysokiej jakosci pliki audio – umozliwiajac ci czerpanie<br />

z jeszcze szerszego spektrum dzwieku, a przy tym pozwalajac zachowac minimalne rozmiary<br />

pliku wynikowego.<br />

Ten rozdzial zaczyna sie od przedstawienia sposobów na wykorzystanie obiektu Sound<br />

(dzwiekowego) – obiektu Flasha odpowiadajacego za kontrole dzwieku przy wykorzystaniu<br />

jezyka ActionScript. Powinienes do tego momentu miec ogólne pojecie o poslugiwaniu sie<br />

dzwiekiem we Flashu, wlaczajac w to chocby importowanie plików dzwiekowych i przypisywanie<br />

ich do ujec kluczowych za pomoca opcji Event, Start, Stop i Stream Sync. Jesli nie masz<br />

pewnosci co do uzywania którejs z tych metod, poszukaj dodatkowych informacji w dokumentacji<br />

programu. Dzieki temu rozdzialowi; nauczysz sie, jak wykorzystac obiekt dzwiekowy do<br />

odtwarzania dzwieków bezposrednio z biblioteki, bez umieszczania ich w ujeciach kluczowych.<br />

Zobaczysz, w jaki sposób ustawiac poziom glosnosci i balans dzwieku, korzystajac<br />

z dynamicznego systemu kontroli opartego na interakcji z uzytkownikiem i wlasciwosciach filmu,<br />

poznasz tez sposób udostepniania uzytkownikowi kontrolerów glosnosci i balansu pomiedzy<br />

kanalami. Nauczysz sie, jak zarzadzac dzwiekami, trzymajac je poza srodowiskiem projektu<br />

Flasha w postaci zewnetrznych filmów, co oznacza, ze bedziesz mógl stworzyc np. odgrywarke<br />

plików dzwiekowych, przy czym pliki te beda przechowywane poza glównym interfejsem.<br />

Kontrolowanie dzwieku<br />

235


Rozdzial 8.<br />

Obiekt dzwiekowy<br />

Obiekt dzwiekowy<br />

Przylaczanie pliku dzwiekowego do ujecia<br />

kluczowego na listwie czasowej jest latwym<br />

sposobem na wprowadzenie dzwieków do<br />

twojego filmu. Dwa podstawowe sposoby<br />

integrowania filmu z dzwiekiem to uzycie opcji<br />

Event Sync do odgrywania dzwieków<br />

towarzyszacych zdarzeniom, np. wcisniecia<br />

przycisku, oraz wykorzystanie opcji Stream<br />

Sync do synchronizacji dialogu z animacja . Jesli<br />

jednak musisz miec kontrole nad tym, kiedy<br />

dzwiek jest odgrywany, lub tez chcialbys<br />

dynamicznie zmieniac jego natezenie (takze<br />

w poszczególnych kanalach), skorzystaj<br />

z obiektu dzwiekowego.<br />

Obiekt dzwiekowy (Sound) jest zdefiniowana<br />

klasa Flasha, której metody umozliwiaja<br />

kontrolowanie plików dzwiekowych<br />

importowanych i przechowywanych<br />

w bibliotece. Podobnie jak w przypadku<br />

obiektu koloru (Color), zeby uzyc obiektu<br />

dzwiekowego, trzeba utworzyc jego klon za<br />

pomoca funkcji konstruktora i nadac mu nazwe .<br />

Kiedy juz obiekt dzwiekowy posiada nazwe,<br />

mozna uzywac go do odgrywania<br />

i modyfikowania plików dzwiekowych<br />

przechowywanych w twojej bibliotece.<br />

236


Kontrolowanie dzwieku<br />

Rys. 8.1. Wpisz mySound jako nazwe twojego<br />

obiektu dzwiekowego i pozostaw pole Expression<br />

niezaznaczone<br />

Rys. 8.2. Funkcja konstruktora new Sound tworzy<br />

klon nowego obiektu dzwiekowego<br />

Rys. 8.3. Kiedy uzytkownik zwolni przycisk, Flash<br />

utworzy obiekt dzwiekowy o nazwie mySound<br />

W celu utworzenia<br />

obiektu dzwiekowego<br />

o charakterze globalnym:<br />

1. Zaimportuj p lik dzwiekowy, wybierajac<br />

File/Import (Ctrl+R).<br />

Wybrany plik dzwiekowy pojawi sie<br />

w bibliotece.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

3. Zaznacz przycisk i otwórz palete akcji.<br />

4. Wybierz Actions/set variable (Esc + sv).<br />

W oknie skryptu pojawi sie, ponizej<br />

manipulatora zdarzenia myszy<br />

on (release), nowe wyrazenie.<br />

5. W polu Variable wpisz nazwe twojego<br />

nowego obiektu dzwiekowego (rys. 8.1).<br />

6. Kliknij w polu Value i wybierz Objects/<br />

Sound/new Sound.<br />

Zaznacz pole Expression. W polu Value<br />

pojawi sie funkc ja konstruktora newSound,<br />

z podswietlonym argumentem target<br />

(rys. 8.2).<br />

7. Usun podswietlone slowo target.<br />

Argument oznaczony tym slowem wskazuje<br />

na klip filmowy zawierajacy dzwieki, które<br />

maja byc kontrolowane przez obiekt<br />

dzwiekowy. Nie podajac argumentu,<br />

utworzysz obiekt dzwiekowy kontrolujacy<br />

wszystkie dzwieki z listwy czasowej<br />

(rys. 8.3).<br />

Obiekt dzwiekowy<br />

237


Rozdzial 8.<br />

Przylaczanie dzwieków<br />

Przylaczanie dzwieków<br />

Jesli posiadasz w swojej bibliotece wiele<br />

zaimportowanych dzwieków, musisz przekazac<br />

obiektowi dzwiekowemu, który dzwiek ma byc<br />

odtworzony lub kontrolowany. Poszczególne<br />

dzwieki w bibliotece identyfikuje sie za pomoca<br />

opcji Linkage, podobnie jak to robiles<br />

w rozdziale 7., kiedy przylaczales klip filmowy<br />

z biblioteki do klipu filmowego na scenie. Poza<br />

identyfikowaniem dzwieku, opcja Linkage<br />

umozliwia wyeksportowanie go z plikiem SWF,<br />

aby byl dostepny dla wywolujacego go obiektu<br />

dzwiekowego. Po zidentyfikowaniu dzwieku za<br />

pomoca opcji Linkage, mozesz przylaczyc go<br />

do obiektu dzwiekowego, korzystajac z metody<br />

attachSound.<br />

W celu przylaczenia<br />

dzwieku do obiektu dzwiekowego:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

swój plik dzwiekowy w bibliotece.<br />

2. Z menu Options wybierz Linkage<br />

(rys. 8.4).<br />

Pojawi sie okno dialogowe Symbol Linkage<br />

Properties.<br />

3. Sposród przycisków wyboru opcji Linkage<br />

kliknij Export this symbol. W polu<br />

Identifier wpisz nazwe identyfikujaca twój<br />

dzwiek. Kliknij OK (rys. 8.5).<br />

Flash wyeksportuje zaznaczony dzwiek<br />

w pliku SWF z unikalnym identyfikatorem,<br />

dzieki czemu dzwiek ten bedzie mozliwy do<br />

odtworzenia po wywolaniu go przez obiekt<br />

dzwie kowy.<br />

4. Zaznacz przycisk na scenie i otwórz palete<br />

akcji.<br />

5. W oknie skryptu zaznacz wyrazenie new<br />

Sound.<br />

Zaznaczajac to wyrazenie, sprawiasz, ze<br />

nastepne wyrazenie ActionScript pojawi sie<br />

pod nim.<br />

6. Wybierz Actions/evaluate .<br />

Rys. 8.4. Dla kazdego dzwieku, który chcesz<br />

przylaczyc, wybierz opcje Linkage z menu<br />

biblioteki<br />

Rys. 8.5. Ten dzwiek nosi nazwe narration<br />

i zostanie dolaczony do eksportowanego pliku<br />

SWF<br />

238


Kontrolowanie dzwieku<br />

Rys. 8.6. Metoda attachSound wymaga podania<br />

argumentu idName, który jest identyfikatorem<br />

twojego dzwieku w bibliotece<br />

Rys. 8.7. Metoda attachSound przylacza dzwiek<br />

zidentyfikowany jako narration do obiektu<br />

dzwiekowego mySound<br />

7. W polu Expression wpisz nazwe obiektu<br />

dzwiekowego, a potem wybierz Objects/<br />

Sound/attachSound. W polu Expression<br />

bloku edycji parametrów pojawi sie metoda<br />

attachSound z podswietlonym<br />

argumentem idName (rys. 8.6).<br />

8. W polu Expression zastap argument<br />

idName identyfikatorem twojego pliku<br />

dzwiekowego, piszac go w cudzyslowie<br />

(rys. 8.7).<br />

To bardzo wazne, zeby umieszczac<br />

identyfikator pliku dzwiekowego<br />

w cudzyslowie. Znak ten mówi Flashowi,<br />

ze otoczone nim slowo jest rzeczywista<br />

nazwa identyfikatora, a nie wyrazeniem,<br />

które powinien oszacowac w celu okreslenia<br />

nazwy identyfikatora.<br />

Wskazówka<br />

• Jako argument metody attachSound<br />

mozesz podac wyrazenie. Przykladowo,<br />

zamiast umieszczac w cudzyslowie<br />

identyfikator, mozesz wstawic tam generator<br />

liczb losowych. Nastepnie, juz w bibliotece,<br />

przydziel poszczególnym dzwiekom w oknie<br />

dialogowym Symbol Linkage Properties<br />

identyfikatory w postaci liczb. Flash bedzie<br />

przylaczal dzwieki w sposób losowy. Wiecej<br />

o liczbach losowych dowiesz sie z kolejnych<br />

rozdzialów.<br />

Przylaczanie dzwieków<br />

239


Rozdzial 8.<br />

Odtwarzanie dzwieków<br />

Odtwarzanie dzwieków<br />

Skoro juz utworzyles nowy obiekt dzwiekowy<br />

i przylaczyles do niego dzwiek z biblioteki,<br />

mozesz wreszcie odtworzyc ten dzwiek. Uzyj<br />

metody start do odegrania dzwieku<br />

przylaczonego do obiektu dzwiekowego.<br />

Metoda start ma dwa parametry,<br />

secondOffset oraz loops.<br />

Parametr secondOffset jest liczba okreslajaca,<br />

od której sekundy czasu trwania dzwieku ma sie<br />

rozpoczac jego odtwarzanie. Mozesz tak ustawic<br />

ten parametr, zeby dzwiek byl odtwarzany od<br />

poczatku lub od pózniejszego momentu. Jesli, na<br />

przyklad, masz 20-sekundowy dzwiek<br />

przylaczony do obiektu dzwiekowego, to ustalajac<br />

parametr secondOffset na 10, sprawisz, ze<br />

odgrywanie dzwieku zacznie sie od jego srodka.<br />

Nie oznacza to opóznienia w odtwarzaniu o 10<br />

sekund, tylko niezwloczne rozpoczecie<br />

odtwarzania od punktu oznaczonego jako<br />

„dziesiata sekunda czasu trwania dzwieku”.<br />

Parametr loops to liczba okreslajaca, ile razy<br />

dzwiek ma byc odtworzony. Ustawienie tego<br />

parametru na wartosc 2 spowoduje dwukrotne<br />

odtworzenie dzwieku, bez zadnej przerwy. Ten<br />

parametr jest opcjonalny.<br />

W celu odtworzenia dzwieku:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

przycisk i otwórz palete akcji.<br />

2. W oknie skryptu zaznacz wyrazenie<br />

attachSound.<br />

Czyniac to, zyskujesz pewnosc, ze kolejne<br />

wyrazenie pojawi sie pod tym zaznaczonym.<br />

3. Wybierz Actions/evaluate .<br />

W oknie skryptu pojawi sie nowe wyrazenie.<br />

4. W polu Expression wpisz nazwe obiektu<br />

dzwiekowego.<br />

240


Kontrolowanie dzwieku<br />

Rys. 8.8. Metoda strat jest dodawana do skryptu<br />

po utworzeniu obiektu mySound i przylaczeniu<br />

dzwieku narration. Metoda start wymaga<br />

okreslenia argumentów secondOffset i loops<br />

5. Zaraz za nazwa obiektu dzwiekowego<br />

wstaw metode start, wybierajac<br />

Objects/Sound/start.<br />

W polu Expression, za nazwa obiektu<br />

dzwiekowego, pojawi sie metoda start<br />

z podswietlonymi dwo ma parametrami:<br />

secondOffset oraz loops (rys. 8.8).<br />

6. W miejsce parametru secondOffset<br />

wpisz 0, a parametr loops zastap cyfra 5.<br />

7. Przetestuj film. Kiedy uzytkownik zwolni<br />

przycisk, dzwiek zostanie odegrany od<br />

poczatku i powtórzony piec razy.<br />

Drugi przycisk:<br />

on (release) {<br />

mySound.attachSound("Jazz");<br />

}<br />

Trzeci przycisk:<br />

on (release) {<br />

mySound.start(0,1)<br />

}<br />

Kiedy klikniesz pierwszy przycisk, a potem<br />

trzeci, uslyszysz dzwiek Hawaiian. Kiedy<br />

klikniesz drugi przycisk, a potem trzeci,<br />

uslyszysz dzwiek Jazz. Jesli rozpoczniesz<br />

odtwarzanie dzwieku Jazz, zanim wybrzmi<br />

do konca dzwiek Hawaiian, uslyszysz, jak<br />

dzwieki nakladaja sie na siebie.<br />

Wskazówki<br />

• Metoda start odgrywa przylaczony<br />

dzwiek po kazdym jej wywolaniu, nawet<br />

jesli w tym czasie dzwiek jest juz<br />

odtwarzany. W wyniku tego kolejno<br />

uruchamiane dzwieki nakladaja sie na siebie.<br />

W powyzszym cwiczeniu, na przyklad, jesli<br />

uzytkownik bedzie klikal przycisk<br />

wielokrotnie, dzwieki odtwarzane wciaz na<br />

nowo beda sie na siebie nakladac. Zeby<br />

uniknac takich nakladek, wstaw metode<br />

stop – jak pokazano w nastepnym<br />

cwiczeniu – zaraz przed metoda start.<br />

• Metoda start odgrywa dzwiek przylaczony<br />

jako ostatni do obiektu dzwie kowego.<br />

Znaczy to, ze inny przycisk moze<br />

powodowac przylaczenie kolejnego dzwieku<br />

z biblioteki do tego samego obiektu<br />

dzwiekowego, a metoda start ten dzwiek<br />

odtworzy. Napisane w tym celu wyrazenia<br />

mozna oddzielic za pomoca trzech<br />

przycisków z przypisanymi nastepujacymi<br />

akcjami:<br />

Ujecie pierwsze (tworzenie klonu<br />

mySound):<br />

mySound = new Sound ();<br />

Pierwszy przycisk:<br />

on (release) {<br />

mySound.attachSound("Hawaiian");<br />

}<br />

Odtwarzanie dzwieków<br />

241


Rozdzial 8.<br />

Odtwarzanie dzwieków<br />

W celu<br />

zatrzymania odgrywania dzwieku:<br />

1. Kontynuujac poprzednie cwiczenie, umiesc<br />

na scenie kolejny klon symbolu przycisku.<br />

2. Zaznacz przycisk i otwórz palete akcji.<br />

3. Wybierz Actions/evaluate .<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie nowe<br />

wyrazenie, a blok edycji parametrów bedzie<br />

zawieral puste pole Expression.<br />

4. W polu Expression wpisz nazwe twojego<br />

obiektu dzwiekowego.<br />

5. Wybierz Objects/Sound/stop. Zaraz za<br />

obiektem dzwiekowym pojawi sie metoda<br />

stop (rys. 8.9).<br />

6. Przetestuj film.<br />

Kiedy uzytkownik zwolni przycisk, dowolny<br />

dzwiek przylaczony do obiektu<br />

dzwiekowego – i aktualnie odgrywany –<br />

zamilknie.<br />

Mozesz zatrzymac odgrywanie wszystkich<br />

dzwieków bez wyjatku, jesli uzyjesz<br />

podstawowej akcji stopAllSounds.<br />

W celu zatrzymania odgrywania wszystkich<br />

dzwieków:<br />

1. Wybierz Basic Actions/Stop All Sounds<br />

(Esc + ss).<br />

Akcje te mozesz przypisac do przycisku, jak<br />

w poprzednim cwiczeniu, lub do ujecia<br />

kluczowego, a Flash przerwie odtwarzanie<br />

wszystkich dzwieków, obojetnie czy<br />

przylaczonych do obiektu dzwiekowego, czy<br />

tez odtwarzanych z listwy czasowej za<br />

pomoca opcji Event, Start lub Stream.<br />

Rys. 8.9. Powyzsza metoda stop zatrzymuje<br />

odtwarzanie dowolnego dzwieku<br />

przylaczonego do obiektu dzwiekowego<br />

mySound. Dla metody tej nie istnieja zadne<br />

argumenty<br />

242


Kontrolowanie dzwieku<br />

Modyfikowanie dzwieków<br />

Kiedy uzywasz obiektu dzwiekowego, Flash<br />

umozliwia ci kontrolowanie ogólnej glosnosci<br />

odtwarzanych dzwieków, a takze glosnosci<br />

w poszczególnych kanalach (lewym i prawym),<br />

co nazywa sie regulacja panoramy (inaczej:<br />

balans – przyp. tlum.). Majac takie mozliwosci,<br />

latwo jest utworzyc interfejs pozwalajacy<br />

ustawiac poziom glosu w za leznosci od ich<br />

preferencji, czy tez w ogóle tworzyc bardziej<br />

realistyczne srodowiska. Przykladowo, w grze<br />

wyscigowej poziom dzwieku móglby narastac,<br />

kiedy mijasz sie z samochodem rywala.<br />

Wprowadzajac regulacje panoramy dzwieku<br />

w grze Pong, mozesz zwiekszyc doznania<br />

sluchowe graczy, jako ze pilka uderzajaca<br />

w jedna ze scian wyzwalalaby dzwiek slyszalny<br />

z wlasciwej dla uderzenia strony (czyli np.<br />

z lewego kanalu, jesli uderzyla w lewa sciane –<br />

przyp. tlum.).<br />

Dwie metody, za pomoca których modyfikuje<br />

sie dzwiek, to setVolume (glosnosc)<br />

i setPan (panorama). Metoda setVolume<br />

przyjmuje jako argument wartosc w przedziale<br />

od 0 do 100, przy czym 100 oznacza<br />

maksymalna glosnosc, a 0 – cisze. Metoda<br />

setPan przyjmuje jako argument wartosc<br />

w przedziale od –100 do 100, gdzie –100<br />

oznacza, ze dzwiek bedzie odtwarzany<br />

wylacznie przez lewy kanal, a 100, odpowiednio<br />

przez prawy kanal. Ustawienie 0 rozdziela<br />

dzwiek równo na obydwa kanaly.<br />

Modyfikowanie dzwieków<br />

W celu ustawienia glosnosci dzwieku:<br />

1. Kontynuujac poprzednie cwiczenie, umiesc<br />

na scenie kolejny klon symbolu przycisku.<br />

2. Zaznacz przycisk i otwórz palete akcji.<br />

3. Wybierz Actions/evaluate .<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie nowe<br />

wyrazenie, a blok edycji parametrów bedzie<br />

zawieral puste pole Expression.<br />

4. W polu Expression wpisz nazwe twojego<br />

obiektu dzwiekowego.<br />

243


Rozdzial 8.<br />

Modyfikowanie dzwieków<br />

5. Wybierz Objects/Sound/setVolume.<br />

W polu Expression, zaraz za obiektem<br />

dzwiekowym, pojawi sie metoda<br />

setVolume, z podswietlonym parametrem<br />

volume (rys. 8.10).<br />

6. W polu Expression w miejsce parametru<br />

volume wpisz liczbe z przedzialu 0 do 100<br />

(rys. 8.11).<br />

7. Przetestuj film.<br />

Kiedy odtwarzajac dzwiek, zwolnisz<br />

przycisk, glosnosc zmieni sie stosownie do<br />

wprowadzonej wartosci parametru volume.<br />

Wskazówka<br />

• Domyslna wartoscia dla metody setVolume<br />

jest 100, tak wiec mozesz ja jedynie<br />

zmniejszac. Pomysl o wprowadzanym<br />

parametrze jako procentowej wartosci<br />

maksymalnego poziomu glosnosci.<br />

Rys. 8.10. Metoda setVolume wymaga<br />

podania parametru volume (glosnosc)<br />

Rys. 8.11. Glosnosc dla obiektu dzwiekowego<br />

mySound ustawiono na 20 procent<br />

244


Kontrolowanie dzwieku<br />

Rys. 8.12. Metoda setPan wymaga podania<br />

parametru pan, liczby w zakresie od –100 do 100<br />

Rys. 8.13. Panorama dla obiektu dzwiekowego<br />

mySound jest ustawiona na 100, wiec dzwiek<br />

bedzie dobywal sie tylko z prawego glosnika<br />

W celu<br />

ustawienia panoramy dzwieku:<br />

1. Kontynuujac poprzednie cwiczenie, umiesc<br />

na scenie kolejny klon symbolu przycisku.<br />

2. Zaznacz przycisk i otwórz palete akcji.<br />

3. Wybierz Actions/evaluate .<br />

Ponizej manipulatora zdarzenia myszy<br />

on (release) pojawi sie nowe<br />

wyrazenie, a blok edycji parametrów bedzie<br />

zawieral puste pole Expression.<br />

4. W polu Expression wpisz nazwe twojego<br />

obiektu dzwiekowego.<br />

5. Wybierz Objects/Sound/setPan.<br />

W polu Expression, zaraz za obiektem<br />

dzwiekowym, pojawi sie metoda setPan,<br />

z podswietlonym parametrem pan<br />

(rys. 8.12).<br />

6. W polu Expression w miejsce parametru<br />

pan wpisz liczbe z przedzialu –100 do 100<br />

(rys. 8.13) (ta pojedyncza liczba okresla<br />

balans pomiedzy sila dzwieku w lewym<br />

i prawym glosniku).<br />

7. Przetestuj film.<br />

Kiedy odtwarzajac dzwiek, zwolnisz<br />

przycisk, panorama dzwieku zmieni sie<br />

stosownie do wprowadzonej wartosci<br />

parametru pan.<br />

Modyfikowanie dzwieków<br />

245


Rozdzial 8.<br />

Niezalezne dzwieki<br />

Modyfikowanie<br />

niezaleznych dzwieków<br />

Jesli utworzysz klon obiektu dzwiekowego<br />

i ustawisz dla niego parametry, jak w wyrazeniu<br />

mySound = new Sound (), metody<br />

setVolume i setPan beda mialy dzialanie<br />

o charakterze globalnym, kontrolujac wszystkie<br />

dzwieki z glównej listwy czasowej. Nawet jesli<br />

utworzysz dwa oddzielne obiekty dzwiekowe,<br />

jak te ponizej,<br />

mySound1 = new Sound ();<br />

mySound2 = new Sound ();<br />

nie bedziesz mógl uzyc metody setPan do<br />

odtwarzania dzwieku mySoun1 przez lewy<br />

kanal i dzwieku mySound2 przez kanal prawy.<br />

Jesli chcesz modyfikowac dzwieki niezaleznie,<br />

musisz tworzyc swoje obiekty dzwiekowe wraz<br />

ze sciezkami dostepu do klipów filmowych.<br />

Wówczas obiekty dzwiekowe beda<br />

przypisywane do róznych klipów filmowych<br />

i metod setVolume oraz setPan bedzie<br />

mozna uzywac do kontrolowania tych<br />

dzwieków oddzielnie.<br />

W celu<br />

niezaleznego zmodyfikowania<br />

dwóch dzwieków:<br />

1. Zaimportuj do Flasha dwa pliki dzwiekowe.<br />

2. Z menu Options w bibliotece wybierz<br />

Linkage i przydziel obydwu dzwiekom<br />

unikalne identyfikatory w oknie dialogowym<br />

Symbol Linkage Properties (rys. 8.14).<br />

3. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

4. Umiesc na scenie drugi klon klipu<br />

filmowego i równiez nadaj mu nazwe<br />

(rys. 8.15).<br />

5. Utwórz symbol przycisku, umiesc jego klon<br />

na scenie, zaznacz go i otwórz palete akcji.<br />

Rys. 8.14. Nadaj kazdemu zaimportowanemu<br />

dzwiekowi identyfikator w oknie dialogowym<br />

Symbol Linkage Properties<br />

Rys. 8.15. Umiesc dwa klony klipu filmowego<br />

na scenie jako odnosniki dla nowych<br />

obiektów dzwiekowych. Dwa klony klipów<br />

filmowych powyzej nosza nazwy movieClip1<br />

oraz movieClip2<br />

246


Kontrolowanie dzwieku<br />

Rys. 8.16. Utworzono obiekt dzwiekowy<br />

mySound1 z odwolaniem do klipu filmowego<br />

movieClip1<br />

Rys. 8.17. Powyzsza metoda start odgrywa<br />

dzwiek musicSample1. Zwróc uwage, ze chociaz<br />

dzwiek mySound odwoluje sie do klipu filmowego<br />

movieClip1, klip ten nie musi byc umieszczany<br />

w sciezce dostepu w celu wywolania metod<br />

attachSound lub start. Metody te odnosza sie do<br />

obiektu dzwiekowego, a nie do wskazanego klonu<br />

klipu filmowego<br />

6. Skorzystaj z akcji set variable do<br />

utworzenia klonu nowego obiektu<br />

dzwiekowego, jak to robiles we<br />

wczesniejszych cwiczeniach. Jako parametr<br />

target podaj nazwe pierwszego z klonów<br />

klipów filmowych (rys. 8.16).<br />

7. Wybierz akcje evaluate i przylacz pierwszy<br />

dzwiek do tego pierwszego obiektu<br />

dzwiekowego.<br />

8. Jeszcze raz wybierz akcje evaluate<br />

i przypisz metode start (rys. 8.17). Akcje<br />

przypisane do tego przycisku powoduja<br />

utworzenie nowego obiektu dzwiekowego,<br />

przylaczenie dzwieku z biblioteki do<br />

obiektu, a nastepnie rozpoczecie odgrywania<br />

dzwieku.<br />

9. Umiesc na scenie kolejny klon symbolu<br />

przycisku.<br />

10. W podobny sposób utwórz klon nastepnego<br />

obiektu dzwiekowego, przylacz drugi<br />

dzwiek z biblioteki do obiektu i przypisz<br />

metode start (rys. 8.18).<br />

11. Umiesc na scenie kolejne dwa klony<br />

symbolu przycisku.<br />

Niezalezne dzwieki<br />

Rys. 8.18. Obiekt dzwiekowy mySound2 odwoluje<br />

sie do klipu filmowego movieClip2 i odgrywa<br />

dzwiek musicSample2<br />

247


Rozdzial 8.<br />

Niezalezne dzwieki<br />

12. Dla pierwszego klonu przycisku, przypisz<br />

metode setPan do pierwszego obiektu<br />

dzwiekowego, ustawiajac parametr pan<br />

na wartosc –100 (rys. 8.19).<br />

Ten przycisk powoduje odtworzenie<br />

pierwszego dzwieku tylko w lewym<br />

glosniku.<br />

13. W drugim klonie przycisku, przypisz metode<br />

setPan do drugiego obiektu dzwiekowego,<br />

ustawiajac parametr pan na wartosc 100<br />

(rys. 8.20).<br />

Ten przycisk powoduje odtworzenie<br />

drugiego dzwieku tylko w prawym glosniku.<br />

14. Przetestuj film.<br />

Wskazówka<br />

• Klony klipów filmowych na scenie<br />

zachowuja sie jak znaki-wypelniacze lub<br />

puste pojemniki na oddzielne obiekty<br />

dzwiekowe. Mozesz zarówno umiescic je<br />

poza scena, zeby uzytkownik nie mógl ich<br />

zobaczyc, jak i usunac dowolna grafike z ich<br />

pierwszego ujecia kluczowego.<br />

Rys. 8.19. Metoda setPan obiektu mySound1<br />

odgrywa dzwiek musicSample1 tylko w lewym<br />

glosniku<br />

Rys. 8.20. Metoda setPan obiektu mySound2<br />

odgrywa dzwiek musicSample2 tylko<br />

w prawym glosniku<br />

248


Lewy kanal sygnalu<br />

wejsciowego<br />

Rys. 8.21. Parametry metody setTransform<br />

okreslaja rozdzial dzwieku na glosniki lewy<br />

i prawy. Pierwsza litera oznacza glosnik<br />

(l – lewy; r – prawy); druga litera oznacza<br />

kanal sygnalu wejsciowego<br />

Tabela 8.1. Parametry metody setTransform<br />

obiektu dzwiekowego<br />

Parametr<br />

ll<br />

lr<br />

rr<br />

rl<br />

Prawy kanal sygnalu<br />

wejsciowego<br />

ll rl lr rr<br />

Lewy glosnik<br />

Prawy glosnik<br />

Wartosc<br />

Wartosc procentowa, okreslajaca<br />

poziom glosnosci lewego kanalu<br />

sygnalu dzwiekowego w lewym<br />

glosniku.<br />

Wartosc procentowa, okreslajaca<br />

poziom glosnosci prawego kanalu<br />

sygnalu dzwiekowego w lewym<br />

glosniku.<br />

Wartosc procentowa, okreslajaca<br />

poziom glosnosci prawego kanalu<br />

sygnalu dzwiekowego w prawym<br />

glosniku.<br />

Wartosc procentowa, okreslajaca<br />

poziom glosnosci lewego kanalu<br />

sygnalu dzwiekowego w prawym<br />

glosniku.<br />

Kontrolowanie dzwieku<br />

Transformowanie dzwieków<br />

Dla zaawansowanych uzytkowników, którzy<br />

chca miec wieksza kontrole nad odtwarzaniem<br />

dzwieku w poszczególnych kanalach, Flash<br />

udostepnia metode setTransform. Metoda<br />

ta pozwala okreslic procentowe wartosci<br />

parametrów, które decyduja, jaki poziom<br />

dzwieku z lewego lub prawego kanalu bedzie<br />

slyszalny w lewym badz prawym glosniku.<br />

Dzieki tej metodzie twój dzwiek moze<br />

dynamicznie przenosic sie z lewego glosnika<br />

do prawego lub przelaczac pomiedzy trybami<br />

mono i stereo.<br />

Metoda setTransform obiektu dzwiekowego<br />

jest bardzo zblizona do metody<br />

setTransform obiektu koloru, omawianej<br />

w rozdziale 7. I tak jak w przypadku obiektu<br />

koloru – uzycie metody setTransform wraz<br />

z obiektem dzwiekowym wymaga<br />

wczesniejszego utworzenia podstawowego<br />

obiektu, którego zadaniem bedzie<br />

przechowywanie informacji o rozdzieleniu<br />

dzwieku pomiedzy kanaly lewy i prawy.<br />

Parametrami obiektu transformacji dzwieku sa<br />

ll, lr, rr i rl (rys. 8.21). Opis ich<br />

funkcjonowania przedstawia tabela 8.1.<br />

Transformowanie dzwieków<br />

249


Rozdzial 8.<br />

Transformowanie dzwieków<br />

W celu uzyskania efektu przenoszenia<br />

odtwarzanego dzwieku pomiedzy lewym i<br />

prawym kanalem:<br />

1. Zaimportuj do Flasha plik dzwiekowy.<br />

2. Z menu Options w bibliotece wybierz<br />

Linkage i przydziel dzwiekowi identyfikator<br />

w oknie dialogowym Symbol Linkage<br />

Properties (rys. 8.22).<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz klon i otwórz palete<br />

akcji.<br />

4. Wybierz akcje set variable w celu<br />

utworzenia klonu nowego obiektu<br />

dzwiekowego, jak to robiles we<br />

wczesniejszych cwiczeniach. Nie okreslaj<br />

parametru target (rys. 8.23).<br />

5. Wybierz akcje evaluate i przylacz pierwszy<br />

dzwiek do pierwszego obiektu<br />

dzwiekowego.<br />

6. Wybierz akcje evaluate ponownie i przypisz<br />

metode start (rys. 8.24). Ten przycisk<br />

bedzie odtwarzal twój dzwiek.<br />

7. Umiesc na scenie kolejny klon symbolu<br />

przycisku.<br />

8. Na palecie akcji wybierz Actions/set<br />

variable.<br />

9. W polu Variable palety akcji wpisz nazwe<br />

twojego nowego obiektu transformacji<br />

dzwieku.<br />

10. Kliknij w polu Value i wybierz<br />

Objects/Object/new Object. Zaznacz pole<br />

Expression widoczne obok pola Value<br />

(rys. 8.25).<br />

W ten sposób przygotowales klon obiektu<br />

transformacji dzwieku.<br />

Rys. 8.22. Ten dzwiek zostal zidentyfikowany<br />

jako musicSample za pomoca opcji Linkage<br />

w menu biblioteki<br />

Rys. 8.23. Tworzymy obiekt dzwiekowy<br />

mySound<br />

Rys. 8.24. Dzwiek musicSample jest<br />

odgrywany z obiektu dzwiekowego mySound<br />

250


Kontrolowanie dzwieku<br />

Rys. 8.26. Cztery parametry metody<br />

setTransform sa definiowane jako wlasciwosci<br />

obiektu mySoundTransform<br />

Rys. 8.27. Metoda setTransform wymaga<br />

podania parametru sxform lub wskazania obiektu<br />

transformacji dzwieku<br />

Rys. 8.28. Cztery parametry metody<br />

setTransform ,zdefiniowane w obiekcie<br />

mySoundTransform, dostarczaja do metody<br />

niezbednych informacji<br />

11. Wybierz Actions/set variable. W polu<br />

Variable palety akcji wpisz nazwe obiektu<br />

transformacji dzwieku, kropke i na koncu<br />

jeden z parametrów. W polu Value wpisz<br />

liczbe odpowiadajaca procentowej wartosci<br />

parametru. Zaznacz pole Expression. Postap<br />

identycznie ze wszystkimi czterema<br />

parametrami (rys. 8.26). W ten sposób<br />

zdefiniowales parametry obiektu<br />

transformacji dzwieku.<br />

12. Wybierz Actions/evaluate .<br />

13. W polu Expression palety akcji wpisz<br />

nazwe twojego obiektu dzwiekowego.<br />

14. Wybierz Objects/Sound/setTransform.<br />

W polu Expression, zaraz za obiektem<br />

dzwiekowym, pojawi sie metoda<br />

setTransform z podswietlonym<br />

argumentem sxform umieszczonym<br />

w nawiasach (sxform jest skrótem od „sound<br />

transform”, transformacja dzwieku)<br />

(rys. 8.27).<br />

15. W miejsce podswietlonego argumentu<br />

wstaw nazwe twojego obiektu transformacji<br />

dzwieku (rys. 8.28).<br />

Ten przycisk tworzy podstawowy obiekt do<br />

przechowywania informacji o transformacji<br />

dzwieku. Informacja taka jest pózniej<br />

podstawiana do obiektu dzwiekowego przy<br />

pomocy metody setTransform.<br />

16. Przetestuj film. Kiedy zwolnisz drugi<br />

przycisk, zmieni sie poziom glosnosci<br />

sygnalu wejsciowego w poszczególnych<br />

glosnikach.<br />

Transformowanie dzwieków<br />

251


Dynamiczna kontrola dzwieków<br />

Rozdzial 8.<br />

Tworzenie systemu dynamicznej<br />

kontroli dzwieku<br />

Jednym z najbardziej efektywnych sposobów<br />

wykorzystania obiektu dzwiekowego i jego<br />

metod jest tworzenie systemów dynamicznej<br />

kontroli dzwieku, dzieki którym u zytkownik<br />

moze sam ustalac pozadany poziom glosnosci<br />

oraz panorame. Podstawowa koncepcja w tym<br />

zakresie jest przygotowanie przeciaganego klipu<br />

filmowego, zachowujacego sie jak suwak.<br />

Przypisujac odpowiednia pozycje przeciaganego<br />

klipu filmowego do parametru glosnosci<br />

(volume) metody setVolume, zyskasz<br />

mozliwosc zmiany poziomu glosnosci<br />

w momencie przesuwania klipu filmowego.<br />

W przypadku pionowego suwaka,<br />

odpowiadajacego za ustawianie glosnosci,<br />

mamy do czynienia z dwoma elementami:<br />

wlasciwym uchwytem oraz sciezka, po której<br />

sie on porusza (rys. 8.29). Zacznij od<br />

utworzenia klipu filmowego o nazwie groove .<br />

Zeby ulatwic sobie zadanie, niech klip filmowy<br />

bedzie wysoki na 100 pikseli, z punktem<br />

srodkowym w dolnej czesci prostokata. Dzieki<br />

wybraniu takiej wlasnie wysokosci klipu,<br />

latwiej bedzie przyporzadkowac pozycje<br />

suwaka danej wartosci parametru setVolume.<br />

W celu utworzenia przeciaganego suwaka,<br />

umiesc niewidzialny przycisk wewnatrz klipu<br />

filmowego suwaka, przypisujacego akcje<br />

startDrag i wymuszajacego ruch wzgledem<br />

klipu filmowego groove .<br />

Suwak<br />

Sciezka<br />

Rys. 8.29. Komponenty systemu kontroli<br />

dzwieku to suwak poruszajacy sie w góre<br />

i w dól oraz jego sciezka<br />

252


Kontrolowanie dzwieku<br />

Rys. 8.30. Ten klon klipu filmowego zostal<br />

nazwany groove i bedzie ograniczal ruch<br />

przeciaganego klipu filmowego<br />

Rys. 8.31. Parametry Constrain to rectangle<br />

ograniczaja klip filmowy suwaka od punktu<br />

srodkowego do 100 pikseli powyzej punktu<br />

srodkowego klipu filmowego sciezki<br />

Klip filmowy<br />

sciezki<br />

Klip filmowy<br />

suwaka<br />

Rys. 8.32. Klip filmowy suwaka mozna<br />

przeciagac wzdluz klipu filmowego sciezki<br />

W celu osadzenia suwaka na sciezce<br />

i przygotowania interfejsu<br />

kontroli glosnosci:<br />

1. Utwórz klip filmowy w ksztalcie prostokata<br />

wysokiego na 100 pikseli, z punktem<br />

srodkowym przy dolnej krawedzi. Umiesc<br />

klon klipu na scenie i nazwij go groove<br />

(sciezka) (rys. 8.30).<br />

2. Utwórz kolejny klip filmowy, na potrzeby<br />

suwaka. Przejdz do trybu symbolu tego<br />

klipu filmowego.<br />

3. Utwórz niewidzialny przycisk i umiesc jego<br />

klon wewnatrz klipu filmowego suwaka.<br />

Zaznacz przycisk i otwórz palete akcji.<br />

4. Wybierz Actions/on. Zaznacz tylko<br />

zdarzenie Press.<br />

5. Wybierz Actions/startDrag. W polu Target<br />

wpisz this. Zaznacz pole Expression obok<br />

pola Target. Zaznacz pola Lock mouse oraz<br />

Constrain to rectangle. W polu L wpisz:<br />

_root.groove._x. W polu R wpisz:<br />

_root.groove._x. W polu T wpisz:<br />

_root.groove._y-100. W polu B wpisz:<br />

_root.groove._y. Akcje przypisane do<br />

klipu filmowego suwaka wiaza jego<br />

krawedzie ze srodkiem klipu filmowego<br />

groove. Górna czesc suwaka jest<br />

przywiazana 100 pikseli powyzej dolnej<br />

krawedzi klipu filmowego groove, a jego<br />

dolna czesc jest zwiazana z dolna krawedzia<br />

klipu groove (rys. 8.31).<br />

6. Wybierz Actions/on. Zaznacz zdarzenie<br />

Release.<br />

7. Wybierz Actions/stopDrag.<br />

8. Wróc do glównej listwy czasowej<br />

i przeciagnij klon klipu filmowego suwaka<br />

na scene i nazwij go slider (suwak).<br />

Przetestuj film (rys. 8.32).<br />

Dynamiczna kontrola dzwieków<br />

253


Rozdzial 8.<br />

Dynamiczna kontrola dzwieków<br />

Metoda klipu filmowego GlobaltoLocal<br />

Drugi etap tworzenia systemu dynamicznej<br />

kontroli glosnosci to wzajemne<br />

przyporzadkowanie wspólrzednej y polozenia<br />

suwaka oraz parametru metody setVolume.<br />

Górny punkt sciezki ma odpowiadac poziomowi<br />

glosnosci 100, a jej dolna czesc – poziomowi<br />

glosnosci 0 (rys. 8.33). Tylko jak dopasowac<br />

wspólrzedne y poruszajacego sie suwaka do<br />

liczb z zakresu 0 do 100? Jednym ze sposobów<br />

jest posluzenie sie metoda globaltoLocal,<br />

która dokonuje konwersji wspólrzednych<br />

polozenia suwaka na wspólrzedne<br />

odpowiadajace klipowi filmowemu sciezki.<br />

Jako ze klip filmowy sciezki ma wysokosc 100<br />

pikseli, a suwak jest dopasowany do jego<br />

wysokosci, wspólrzedne lokalne sciezki mozna<br />

z latwoscia odniesc do ustawien glosnosci<br />

(rys. 8.34).<br />

W celu przeksztalcenia<br />

wspólrzednych globalnych na lokalne:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

klip filmowy suwaka i otwórz palete akcji.<br />

2. Wybierz Actions/onClipEvent.<br />

3. Na palecie akcji, zaznacz zdarzenie<br />

mouseEvent i wybierz Actions/set<br />

variable.<br />

4. W polu Variable wpisz nazwe obiektu,<br />

który bedzie przechowywal informacje<br />

o wspólrzednych x, y, przeksztalconych<br />

pózniej na wspólrzedne lokalne. To jest twój<br />

obiekt punktu.<br />

5. W polu Value wybierz Objects/Object/new<br />

Object. Zaznacz pole Expression<br />

(rys. 8.35).<br />

6. Ponownie wybierz Actions/set variable.<br />

(0,0)<br />

Rys. 8.33. Parametry setVolume musza<br />

odpowiadac pozycji suwaka na sciezce<br />

y=100<br />

x=120<br />

Scena<br />

Rys. 8.34. Wspólrzedne globalne suwaka sa<br />

okreslone przez glówna listwe czasowa sceny.<br />

Wspólrzedne lokalne sa uzaleznione od klipu<br />

filmowego sciezki<br />

Rys. 8.35. Obiekt punktu myPoint jest<br />

tworzony z podstawowej klasy obiektów<br />

Klip filmowy<br />

sciezki<br />

Klip filmowy<br />

suwaka<br />

Wspólrzedne globalne (120, 100), wspólrzedne lokalne<br />

okreslone wzgledem klipu filmowego sciezki (0, –20)<br />

254


Kontrolowanie dzwieku<br />

Rys. 8.36. Wspólrzedna myPoint.y zostaje<br />

przypisana do wspólrzednej y polozenia klipu<br />

filmowego suwaka<br />

Rys. 8.37. Wspólrzedne obiektu punktu myPoint<br />

(myPoint.x i myPoint.y) zostaja zamienione na<br />

wspólrzedne lokalne klipu filmowego sciezki<br />

7. W polu Variable wpisz nazwe twojego<br />

obiektu punktu, kropke i wlasciwosc y.<br />

W polu Value wpisz this._y. Zaznacz<br />

pole Expression (rys. 8.36).<br />

W ten sposób wlasciwosc y zostaje<br />

ustawiona tak, by odpowiadac wspólrzednej<br />

y polozenia przeciaganego klipu filmowego.<br />

8. Ponownie wybierz Actions/set variable.<br />

9. W polu Variable wpisz nazwe twojego<br />

obiektu punktu, kropke i wlasciwosc x.<br />

W polu Value wpisz this._x. Zaznacz<br />

pole Expression. W ten sposób wlasciwosc<br />

x zostaje ustawiona tak, by odpowiadac<br />

wspólrzednej x polozenia przeciaganego<br />

klipu filmowego.<br />

10. Wybierz Actions/evaluate .<br />

11. W polu Expression wprowadz sciezke<br />

dostepu do klipu filmowego, którego ukladu<br />

wspólrzednych chcialbys uzyc. Potem<br />

wybierz Objects/Movie Clip/<br />

globaltoLocal. W nawiasach metody<br />

globaltoLocal wpisz nazwe obiektu<br />

punktu (rys. 8.37). Flash przeksztalci<br />

wspólrzedne obiektu punktu (wzgledem<br />

glównej listwy czasowej) na wspólrzedne<br />

wskazanego klipu filmowego (wzgledem<br />

listwy czasowej klipu filmowego sciezki).<br />

Dynamiczna kontrola dzwieków<br />

255


Rozdzial 8.<br />

Dynamiczna kontrola dzwieków<br />

W celu polaczenia pozycji suwaka<br />

z ustawieniem glosnosci:<br />

1. Kontynuujac poprzednie cwiczenie,<br />

zaimportuj do Flasha plik dzwiekowy.<br />

2. Z menu Options biblioteki wybierz Linkage<br />

i nadaj dzwiekowi identyfikator.<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz go i otwórz palete akcji.<br />

4. Przypisz akcje tak, jak robiles to<br />

w poprzednich cwiczeniach, w celu<br />

utworzenia nowego obiektu dzwiekowego.<br />

Przylacz dzwiek z biblioteki do obiektu<br />

dzwiekowego, a nastepnie przypisz mu<br />

metode rozpoczynajaca odgrywanie dzwieku<br />

(rys. 8.38).<br />

5. Zaznacz twój przeciagany klip filmowy.<br />

6. Dodaj na koncu akcji manipulator zdarzenia<br />

onClipEvent (mouseMove), wybierajac<br />

Actions/evaluate.<br />

7. Wprowadz sciezke dostepu do twojego<br />

obiektu dzwiekowego, a potem wybierz<br />

Objects/Sound/setVolume .<br />

8. W miejsce parametru volume wpisz<br />

–1*myPoint.y.<br />

Wspólrzedna y polozenia suwaka zmienia<br />

sie od –100 do 0. Mnozac obiekt punktu<br />

(myPoint) przez –1, zmieniasz ten zakres na<br />

100 do 0 (rys. 8.39).<br />

9. Wybierz Actions/evaluate . W polu<br />

Expression wpisz updateAfterEvent<br />

(mouseMove);.<br />

10. Przetestuj film.<br />

Teraz, przeciagajac suwak w góre lub w dól,<br />

bedziesz mógl zmieniac poziom glosnosci<br />

dzwieku.<br />

Rys. 8.38. Kolejny przycisk rozpoczyna<br />

odgrywanie dzwieku musicSample<br />

Rys. 8.39. Klip filmowy sciezki ma wysokosc<br />

100 pikseli i punkt srodkowy umieszczony<br />

przy dolnej krawedzi. Stad wspólrzedne<br />

lokalne tego klipu moga przyjmowac wartosci<br />

w zakresie –100 do 0. Jesli chcesz zmienic ten<br />

zakres, wykonaj mnozenie przez (–1).<br />

W rezultacie otrzymasz zakres od 100 do 0<br />

przy dolnej krawedzi, uzywany przez<br />

parametr setVolume<br />

256


Kontrolowanie dzwieku<br />

Rys. 8.40. Za pomoca opcji Stream Sync dzwiek<br />

przypisuje sie do okreslonych klatek na listwie<br />

czasowej<br />

Uzywanie dzwieków<br />

jako plików zewnetrznych<br />

Zawsze, gdy uzywasz okna dialogowego<br />

Symbol Linkage Properties do<br />

zidentyfikowania dzwieku w bibliotece<br />

i zaznaczenia go w celu wyeksportowania,<br />

dzwiek ten jest dodawany do pliku SWF,<br />

powiekszajac jego rozmiar. Dzwieki zajmuja<br />

ogromna ilosc miejsca, nawet z kompresja MP3,<br />

musisz wiec starannie oceniac potrzebe<br />

dolaczania dzwieków do filmu. Jednym ze<br />

sposobów takiego zarzadzania plikami<br />

dzwiekowymi, by zachowac minimalny rozmiar<br />

pliku wynikowego, jest przechowywanie ich<br />

w zewnetrznych filmach Flasha. Uzywaj akcji<br />

loadMovieNum do wprowadzania dzwieku do<br />

Flasha tylko wtedy, kiedy naprawde go<br />

potrzebujesz. Mozliwe jest takze zmienianie<br />

dzwieku w zewnetrznym filmie Flasha bez<br />

dokonywania poprawek w glównym filmie.<br />

Przykladowo, mozesz udostepnic<br />

uzytkownikowi kilka sciezek dzwiekowych do<br />

wyboru. Jednak do uruchomienia którejkolwiek<br />

z nich uzyj akcji loadMovieNum, a do<br />

wylaczenia muzyki posluz sie akcja<br />

unloadMovieNum. Mozesz równiez zrobic tak,<br />

zeby jeden zewnetrzny plik SWF uruchamial<br />

wczytywanie innego pliku, takze losowo<br />

wybranego. Dzieki temu mozna uzyskac funkcje<br />

wybierajaca losowo sciezke dzwiekowa<br />

z kolekcji przechowywanej w zewnetrznych<br />

plikach.<br />

W celu odtworzenia dzwieku<br />

z zewnetrznego filmu:<br />

1. Zaimportuj dzwiek do Flasha.<br />

2. Umiesc klon dzwieku w listwie czasowej.<br />

Z palety Sound wybierz opcje Stream Sync<br />

i dodaj klatki do listwy czasowej, zeby<br />

pomiescic caly plik dzwiekowy (rys. 8.40).<br />

3. Wyeksportuj plik do formatu SWF.<br />

4. Otwórz nowy plik Flasha.<br />

5. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

Dzwieki jako pliki zewnetrzne<br />

257


Rozdzial 8.<br />

Dzwieki jako pliki zewnetrzne<br />

6. Zaznacz przycisk i otwórz palete akcji.<br />

7. Wybierz Actions/loadMovie (Esc + lm).<br />

8. W polu URL palety akcji wpisz nazwe<br />

wyeksportowanego pliku SWF. W menu<br />

rozwijanym Location zaznacz Level i wpisz<br />

liczbe wieksza od 0 (rys. 8.41).<br />

9. Wyeksportuj ten film jako plik SWF i umiesc<br />

obydwa pliki w tym samym katalogu. Kiedy<br />

zwolnisz przycisk, muzyka z pierwszego pliku<br />

SWF zostanie wczytana i odtworzona.<br />

W celu zatrzymania<br />

odgrywania dzwieku<br />

umieszczonego<br />

w zewnetrznym filmie:<br />

1. Kontynuujac poprzednie cwiczenie, dodaj<br />

drugi klon przycisku do pliku, który ma juz<br />

akcje loadMovieNum przypisana do<br />

jednego przycisku.<br />

2. Wybierz Actions/unloadMovie (Esc + um).<br />

3. W menu rozwijanym Location palety akcji<br />

wybierz opcje Level i wpisz te sama liczbe,<br />

która wprowadziles wczesniej dla akcji<br />

loadMovieNum (rys. 8.42).<br />

4. Wyeksportuj ten film w postaci pliku SWF<br />

i umiesc obydwa pliki SWF w tej samej<br />

lokalizacji.<br />

5. Kiedy zwolnisz drugi z przycisków, muzyka<br />

z pierwszego pliku SWF przestanie byc<br />

odtwarzana, jako ze plik zostanie usuniety<br />

z tego poziomu.<br />

Wskazówki<br />

• Mozna odtwarzac kilka dzwieków<br />

jednoczesnie, wczytujac rózne pliki SWF<br />

do oddzielnych poziomów lub okreslonych<br />

klonów klipów filmowych.<br />

• Przypisz akcje kontrolujaca ujecia do<br />

ostatniego ujecia kluczowego<br />

w zewnetrznym pliku SWF, wczytujacym<br />

inny plik SWF do tego samego poziomu.<br />

Wówczas ten drugi plik SWF automatycznie<br />

zajmie miejsce pierwszego pliku, gdy tylko<br />

zakonczy sie odgrywanie dzwieku.<br />

Rys. 8.41. Powyzsze akcje, przypisane do<br />

przycisku, powoduja wczytanie pliku<br />

music.swf<br />

Rys. 8.42. Powyzsze akcje, przypisane do<br />

przycisku, usuwaja dowolny plik znajdujacy<br />

sie na poziomie 1<br />

258


Czesc 5.<br />

Przetwarzanie informacji<br />

259


Rozdzial 9.<br />

260


Kontrolowanie<br />

przeplywu informacji<br />

9<br />

Czesci skladowe jezyka HTML<br />

Kiedy w filmie Flasha wyswietlana jest grafika, animacja i odtwarzane sa dzwieki, wiele rzeczy<br />

dzieje sie „za kulisami” – rzeczy, których odbiorca filmu nie dostrzega. Dokument Flasha moze<br />

przetwarzac niezliczona ilosc informacji, np. liczbe zyc, które pozostaly jeszcze graczowi, nazwe<br />

uzytkownika i haslo, czy tez artykuly, które klient umiescil w wirtualnym koszyku. Okreslanie<br />

i przechowywanie takich informacji wymaga zastosowania zmiennych, które stanowia niejako<br />

pojemniki na dane. Zmienne sa kluczowym elementem kazdego filmu Flasha z mocno<br />

rozbudowana interaktywnoscia, jako ze umozliwiaja tworzenie scenariuszy dzialan w oparciu<br />

o zmieniajace sie informacje. Zmienne mozna modyfikowac, a nastepnie uzywac ich<br />

w wyrazeniach – formulach laczacych zmienne z innymi zmiennymi i wartosciami – i sprawdzac<br />

informacje, ustalajac warunki, w celu okreslenia dalszego zachowania filmu Flasha. Takie wlasnie<br />

sprawdzanie wykonuje sie przy pomocy wyrazen warunkowych, kontrolujacych przeplyw<br />

informacji. Wyrazenia warunkowe szacuja naplywajace dane, a potem nakazuja Flashowi<br />

wykonanie dzialania okreslonego na podstawie otrzymanej informacji. Wyobrazmy sobie sytuacja,<br />

w której wyrazen warunkowych mozesz uzyc chocby do odbicia pilki w przypadku wystapienia jej<br />

kolizji ze sciana czy tez do zwiekszenia szybkosci poruszania sie pilki, jesli czas gry przekroczy<br />

jedna minute.<br />

Niniejszy rozdzial opowiada o zarzadzaniu danymi za pomoca zmiennych, wyrazen i warunków.<br />

Zetknales sie juz czesciowo z tym tematem we wczesniejszych rozdzialach, teraz jednak<br />

omówimy go bardziej szczególowo. Zrozumienie zasad wprowadzania, modyfikowania<br />

i szacowania danych pomoze ci prawdziwie „rezyserowac” twoje filmy i dynamicznie zmieniac<br />

poszczególne jego elementy: grafike, animacje i dzwiek.<br />

Kontrolowanie przeplywu informacji<br />

261


Rozdzial 9.<br />

Deklarowanie danych<br />

Deklarowanie danych<br />

Zmienne sluza do przechowywania informacji.<br />

Zmienne mozesz tworzyc, zmieniac ich<br />

zawartosc i odrzucac w dowolnej chwili. Proces<br />

podstawiania informacji do zmiennej po raz<br />

pierwszy nazywa sie deklarowaniem<br />

zmiennej. Deklarowanie i przeksztalcanie<br />

zmiennej odbywa sie przy udziale akcji set<br />

variable. Zmienne deklarowales juz<br />

wczesniej, tylko nie nazywalismy tak tego<br />

procesu. Kiedy tworzysz nowe obiekty za<br />

pomoca akcji set variable, jak w wyrazeniu<br />

mójKolor = nowy Kolor<br />

(mójKlipFilmowy), jednoczesnie deklarujesz<br />

zmienna (tutaj mójKolor). W tym akurat<br />

przypadku zmienna przechowuje obiekt koloru,<br />

ale ogólnie moze przechowywac dowolny typ<br />

informacji, np. liczbe, litery, wartosc — prawda<br />

lub falsz, a nawet odwolanie do innej zmiennej.<br />

Rózne typy informacji przechowywanych<br />

w zmiennych nosza nazwe typów danych.<br />

Zmienne i typy danych<br />

Przykladami typowych zmiennych moga<br />

byc: wynik gracza (zmienna liczbowa),<br />

obiekt dzwiekowy (zmienna lancucha<br />

danych), stan wlaczony lub wylaczony<br />

przycisku wyboru (radio button) (zmienna<br />

boole’owska). Typ danych<br />

przechowywanych w zmiennej mozna latwo<br />

zmienic. Zmienna zadeklarowana pierwotnie<br />

jako zmienna liczbowa moze zostac<br />

zmieniona w dowolnej chwili odtwarzania<br />

filmu na zmienna lancucha danych przez<br />

wprowadzenie nowej akcji set variable.<br />

Jednak lepiej jest utrzymywac staly typ<br />

zadeklarowanych zmiennych, dzieki czemu<br />

w czasie manipulowania nimi nie zostaniesz<br />

zaskoczony niespodziewanymi rezultatami<br />

(jak np. mnozenie lancucha znaków przez<br />

inny lancuch znaków). Rózne typy danych<br />

przechowywanych w zmiennych<br />

przedstawia tabela 9.1.<br />

Nazwy zmiennych powinny opisywac rodzaj<br />

przechowywanych w nich informacji.<br />

Na przyklad, punktyGracza<br />

i predkoscPojazdu sa zupelnie poprawnymi<br />

nazwami zmiennych i z pewnoscia<br />

przyprawia cie o mniejszy ból glowy, niz<br />

cos w rodzaju xyz lub mojaZmienna.<br />

Zwykle zapisuje sie nazwy zmiennych bez<br />

spacji pomiedzy wyrazami, za to z wielka<br />

litera rozpoczynajaca kazdy kolejny wyraz<br />

za wyjatkiem pierwszego.<br />

Tabela 9.1. Typy danych do przechowywania w zmiennych<br />

Typ danych Opis Przyklad<br />

Liczba Wartosc liczbowa. mójWynik = 24<br />

Lancuch znakowy<br />

Typ boole’owski<br />

Obiekt<br />

Sekwencja znaków, liczb lub symboli.<br />

Lancuch zawsze zapisuje sie w cudzyslowie.<br />

Wartosc typu prawda (true) lub falsz<br />

(false). Nie stosuje sie cudzyslowu. Zamiast<br />

prawda mozna pisac 1, a w miejsce slowa<br />

falsz podstawiac 0.<br />

Nazwa obiektu utworzonego za pomoca<br />

funkcji konstruktora.<br />

twójEmail =<br />

"johndoe@domena.com"<br />

przyciskOpcji = true<br />

mójKolor = nowy<br />

Kolor(mójFilm)<br />

262


Kontrolowanie przeplywu informacji<br />

Rys. 9.1. Zmienne mozna deklarowac do<br />

przechowywania róznych typów informacji.<br />

Liczba (u góry) wymaga zaznaczenia pola<br />

wyboru Expression obok pola Value.<br />

W przypadku lancucha znakowego (u dolu) pole<br />

wyboru Expression obok pola Value pozostawia<br />

sie niezaznaczone<br />

W celu zadeklarowania zmiennej:<br />

1. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/set variable (Esc + sv).<br />

3. W polu Variable palety akcji wpisz nazwe<br />

zmiennej. Pole Expression pozostaw<br />

niezaznaczone.<br />

4. W polu Value wprowadz informacje, która<br />

ma przechowywac zmienna. Moze to byc<br />

liczba, nowy obiekt, lancuch znaków lub<br />

wartosc boole’owska. Pole Expression<br />

pozostaw niezaznaczone, jesli uzyles<br />

lancucha znakowego jako typu zmiennej<br />

(rys. 9.1).<br />

Wskazówki<br />

• Istnieja pewne slowa, których nie mozesz<br />

uzywac w nazwach zmiennych, poniewaz sa<br />

zarezerwowane dla specjalnych funkcji lub<br />

slów kluczowych jezyka ActionScript. Jesli<br />

uzyjesz tych slów jako zmiennych, Flash<br />

bedzie je mylil wlasnie ze slowami<br />

kluczowymi lub funkcjami, którym<br />

normalnie odpowiadaja. Wsród nich<br />

znajduja sie nastepujace slowa: break,<br />

for, new, var, continue, function,<br />

return, void, delete, if, this, while,<br />

else, in, typeof, with, true i false.<br />

• Dobrze jest deklarowac zmienne<br />

w pierwszym ujeciu na listwie czasowej.<br />

W ten sposób trzymasz je wszystkie<br />

w jednym miejscu i latwo mozesz przejsc<br />

do edycji ich wartosci.<br />

Deklarowanie danych<br />

263


Rozdzial 9.<br />

Deklarowanie danych<br />

Czesto bedzie zachodzic potrzeba podstawienia<br />

do zmiennej okreslonej wlasciwosci obiektu<br />

i przechowania jej na pózniej. Przykladowo,<br />

móglbys chciec zachowac wspólrzedne x i y<br />

klipu filmowego, zeby po przeciagnieciu klipu<br />

przez uzytkownika w nowe miejsce, Flash mógl<br />

przywrócic jego pierwotna pozycje. W celu<br />

wywolania takiej wlasciwosci mozna posluzyc<br />

sie sciezka dostepu do niej (uzywajac skladni<br />

z kropka) lub tez funkcja getProperty.<br />

W celu<br />

przypisania wlasciwosci do zmiennej<br />

przez podanie sciezki dostepu:<br />

1. Zaznacz pierwsze ujecie kluczowe na listwie<br />

czasowej i otwórz palete akcji.<br />

2. Wybierz Actions/set variable.<br />

3. W polu Variable palety akcji wpisz nazwe<br />

swojej zmiennej. Pole Expression pozostaw<br />

niezaznaczone.<br />

4. W polu Value wprowadz sciezke dostepu<br />

do wybranej wlasciwosci, oddzielajac<br />

kolejne poziomy kropka. Zaznacz pole<br />

Expression (rys. 9.2).<br />

W celu<br />

przypisania wlasciwosci do zmiennej<br />

przez zastosowanie<br />

funkcji getProperty:<br />

1. Zaznacz pierwsze ujecie kluczowe na listwie<br />

czasowej i otwórz palete akcji. Wybierz<br />

Actions/set variable.<br />

2. W polu Variable palety akcji wpisz nazwe<br />

swojej zmiennej.<br />

3. W polu Value wybierz Functions/<br />

getProperty.<br />

W polu Value pojawi sie akcja<br />

getProperty wraz z argumentami<br />

target oraz property (rys. 9.3).<br />

X=100<br />

myMovieClip<br />

Rys. 9.2. Uzyj skladni z kropka do<br />

podstawienia wlasciwosci obiektu do<br />

zmiennej. Tutaj zmiennej myXPosition<br />

odpowiada wspólrzedna x obiektu<br />

myMovieClip w glównej listwie czasowej.<br />

Obecnie zmienna ta przechowuje wartosc 100<br />

Rys. 9.3. Akcja getProperty wymaga podania<br />

argumentów target i property<br />

264


Kontrolowanie przeplywu informacji<br />

Rys. 9.4. Argumentem target jest sciezka<br />

_root.myMovieClip, a wlasciwosc to wspólrzedna<br />

x klipu filmowego myMovieClip. Wartosc ta<br />

przypisana jest zmiennej myXPosition<br />

4. W miejsce argumentu target wpisz<br />

sciezke dostepu, a w miejsce argumentu<br />

property – wybrana wlasciwosc. Zaznacz<br />

pole Expression (rys. 9.4).<br />

Wskazówka<br />

• Kiedy przypisujesz zmiennej wlasciwosc lub<br />

odwolanie do innej zmiennej, Flash okresla<br />

aktualna wartosc i podstawia ja do zmiennej.<br />

Jesli taka wlasciwosc lub odwolanie do<br />

zmiennej zmienia swoja wartosc, wartosc<br />

twojej zmiennej pozostanie taka sama jak na<br />

poczatku, az do momentu przypisania jej<br />

wartosci na nowo. Oto przyklad:<br />

xPosition = _xmouse<br />

Po zadeklarowaniu tej zmiennej, o nazwie<br />

xPosition w pierwszym ujeciu twojego<br />

filmu, przechowuje ona wartosc<br />

wspólrzednej x polozenia wskaznika myszy.<br />

W czasie przesuwania wskaznika po ekranie<br />

wlasciwosc _xmouse oczywiscie ulega<br />

zmianie, jednak wartosc zmiennej xPosition<br />

pozostaje taka, jak w momencie deklaracji<br />

(czyli wykonania akcji wyrazenia set<br />

variable). Zeby zmienna mogla<br />

przyjmowac nowe wartosci, trzeba umiescic<br />

ja w petli, tak jak zdarzenia klipu filmowego<br />

EnterFrame lub Mouse move.<br />

Deklarowanie danych<br />

265


Rozdzial 9.<br />

Deklarowanie danych<br />

Lancuchy znakowe i wyrazenia<br />

Kiedy uzywasz akcji set variable do<br />

podstawienia informacji do zmiennej, masz<br />

mozliwosc zaznaczenia opcji Expression<br />

w bloku edycji parametrów dla pól Variable<br />

oraz Value (rys. 9.5). Zaznaczenie tej opcji dla<br />

pola Value powoduje usuniecie znaku<br />

cudzyslowu otaczajacego wprowadzona<br />

informacje i traktowanie jej jako wyrazenia,<br />

a nie lancucha znakowego. Wyrazenie to linia<br />

kodu, mogaca zawierac zmienne, wlasciwosci<br />

i obiekty, które musza zostac oszacowane,<br />

zanim Flash bedzie mógl okreslic ich wartosc.<br />

Wyrazenie przypomina wzór matematyczny,<br />

np. a 2 + b 2 . Wartosc wyrazenia musi zostac<br />

obliczona, zanim nastapi przypisanie jej do<br />

zmiennej (rys. 9.6). Z drugiej strony, lancuch<br />

znakowy jest traktowany przez Flasha po prostu<br />

jako grupa znaków. W tym przypadku wzór<br />

a 2 + b 2 jest tylko i wylacznie sekwencja siedmiu<br />

znaków (przy wyliczeniu odstepów). Kiedy<br />

deklarujesz zmienna znakowa, musisz<br />

pozostawic pole Expression niezaznaczone.<br />

W przypadku kazdego innego typu danych pole<br />

to powinno byc zaznaczane. Z kolei zaznaczenie<br />

pola Expression, widniejacego obok pola<br />

Variable, zmienia cale wyrazenie w oknie<br />

skryptu, nadajac mu forme set (variable,<br />

value). Ta skladnia umozliwia jednoczesne<br />

wprowadzenie wyrazenia zmiennej i jej<br />

wartosci. Na przyklad, wybierajac dla<br />

zmiennych nazwy player1, player2 i player3,<br />

mozesz je szybko utworzyc za pomoca<br />

wyrazenia "player" + counter, gdzie<br />

counter jest równiez zmienna, przechowujaca<br />

liczbe (rys. 9.7). Ten rodzaj wyrazenia zostanie<br />

omówiony w dalszej czesci rozdzialu.<br />

Rys. 9.5. Dla pól Variable oraz Value<br />

w bloku edycji parametrów sa dostepne<br />

pola wyboru Expression<br />

Rys. 9.6. Przyklady wyrazen. Nazwy zmienne<br />

stoja po lewej stronie znaku równosci,<br />

wyrazenia po prawej<br />

Rys. 9.7. Akcja set action (dostepna tylko<br />

przy wykorzystaniu akcji set variable)<br />

pozwala uzyc wyrazenia dla nazwy zmiennej<br />

266


Kontrolowanie przeplywu informacji<br />

Tabela 9.2. Najczesciej spotykane sekwencje<br />

opuszczania znaku<br />

Sekwencja Znak<br />

\b Backspace<br />

\r Return<br />

\t Tab<br />

\" Cudzyslów<br />

\’ Pojedynczy cudzyslów<br />

\\ Odwrócony ukosnik<br />

Wskazówka<br />

• Skoro znak cudzyslowu zawsze otacza<br />

domyslny lancuch znakowy, to jak<br />

wprowadzic cudzyslów dla wlasciwego,<br />

wprowadzonego przez ciebie lancucha<br />

znaków? Robi sie to, wpisujac odwrócony<br />

ukosnik (\) przed cudzyslowem. Nazywa sie<br />

to opuszczaniem znaku. Na przyklad,<br />

lancuch znakowy „The line, \”Call me<br />

Shane\” is from a 1953 movie Western”<br />

odczytuje sie jako: The line, ”Call me<br />

Shane” is from a 1953 movie Western.<br />

Kilka najczesciej uzywanych sekwencji<br />

opuszczania znaków specjalnych<br />

przedstawia tabela 9.2.<br />

Deklarowanie danych<br />

267


Rozdzial 9.<br />

Deklarowanie danych<br />

Poslugiwanie sie zmiennymi<br />

i wyrazeniami<br />

Zmiennych i wyrazen uzywa sie w skrypcie<br />

jako znaków-wypelniaczy dla parametrów.<br />

Niemal w kazdej akcji, wymagajacej okreslenia<br />

parametrów, mozesz zamiast nich podstawiac<br />

zmienne lub wyrazenia. Na przyklad<br />

podstawowa akcja gotoAndStop umozliwia<br />

ci wprowadzenie w polu Frame wyrazenia<br />

zamiast numeru ujecia. Wyrazeniem moze byc<br />

zmienna o nazwie mojaKarta, przechowujaca<br />

liczbe z zakresu 1 do 52. Klatki na listwie<br />

czasowej o numerach 1 do 52 moglyby wtedy<br />

zawierac grafiki 52 kart do gry, a zmiana<br />

zmiennej w akcji gotoAndStop moglaby<br />

powodowac wyswietlanie róznych kart.<br />

W przypadku akcji getURL, pole URL moze<br />

zawierac wyrazenie zamiast wlasciwego adresu<br />

internetowego. Przykladowo, wyrazenie moze<br />

stanowic lancuch znakowy polaczony ze<br />

zmienna, jak w ”http://”+twojaWitryna<br />

Sieciowa. Zmiana zmiennej o nazwie<br />

twojaWitrynaSieciowa bedzie powodowac<br />

wczytywanie róznych adresów URL przez akcje<br />

getURL. Wartosci dla wlasciwosci obiektów<br />

oraz sciezki dostepu do obiektów moga byc<br />

zastepowane wyrazeniami w akcji<br />

setProperty (rys. 9.8).<br />

Innym powszechnym sposobem uzycia<br />

zmiennej jest prosty licznik. Zamiast zajmowac<br />

miejsce parametru, zmienna w tym przypadku<br />

przechowuje numer okreslonego typu zdarzenia,<br />

potrzebny do pózniejszego przywolania<br />

i sprawdzenia. Wynik punktowy gracza moze<br />

byc przechowywany w zmiennej, dzieki czemu<br />

Flash okresli, czy gracz osiagnal ilosc punktów<br />

potrzebna do ukonczenia gry.<br />

Rys. 9.8. Przyklady podstawiania zmiennych<br />

i wyrazen w polach okreslania parametrów<br />

akcji: zmienna frameNumber w akcji<br />

gotoAndPlay (u góry), zmienne myURL oraz<br />

myWindowName w akcji getURL (w srodku)<br />

i zmienne MovieClipName oraz myRotation<br />

w akcji setProperty (u dolu)<br />

268


Kontrolowanie przeplywu informacji<br />

Rys. 9.9. Zmiennej frameNumber przypisano<br />

wartosc 5<br />

Rys. 9.10. Po wybraniu Expression z menu<br />

rozwijanego Type mozesz podstawic zmienna<br />

frameNumber w polu Frame<br />

stop ( )<br />

frameNumber=5<br />

Rys. 9.11. Kiedy uzytkownik zwolni przycisk<br />

umieszczony w dolnej warstwie, Flash odczyta na<br />

podstawie zmiennej (frameNumber) numer ujecia,<br />

do którego ma przeskoczyc – tutaj jest to klatka 5<br />

W celu wprowadzenia zmiennej<br />

do pola okreslania parametru:<br />

1. W pierwszym ujeciu kluczowym glównej<br />

listwy czasowej wybierz Actions/set<br />

variable. W polu Variable palety akcji<br />

wpisz nazwe swojej zmiennej. W polu<br />

Value wpisz liczbe. Zaznacz pole wyboru<br />

Expression dla pola Value (rys. 9.9).<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

3. Zaznacz przycisk i na palecie akcji wybierz<br />

Basic Actions/Go To (rys. 9.10).<br />

4. W bloku edycji parametrów, w menu<br />

rozwijanym Type zaznacz Expression.<br />

W polu Frame wpisz nazwe zmiennej<br />

zadeklarowanej w glównej listwie czasowej<br />

(rys. 9.10).<br />

5. Udostepnij dodatkowe ujecia, które moglyby<br />

byc odtwarzane. Przetestuj film (rys. 9.11).<br />

Twoja zmienna przechowuje liczbe.<br />

W momencie wykonywania akcji<br />

gotoAndPlay Flash uzywa tej liczby jako<br />

oznaczenia ujecia, które ma odtworzyc.<br />

Wskazówka<br />

• W powyzszym cwiczeniu, kiedy deklarujesz<br />

zmienna w postaci lancucha znakowego,<br />

mozesz sprawic, zeby akcja gotoAndPlay<br />

powodowala przeskok do ujecia<br />

oznaczonego etykieta, zamiast numerem.<br />

Przypisz np. lancuch znaków „Konkluzja”<br />

do zmiennej mojaEtykietaUjecia.<br />

Uzywajac teraz nazwy mojaEtykietaUjecia<br />

jako parametru akcji gotoAndPlay,<br />

spowodujesz, ze Flash przeskoczy do ujecia<br />

z etykieta Konkluzja. Utwórz wiele etykiet,<br />

np. Tytul, Wstep, czy Tresc. Podstawiajac<br />

te nazwy do zmiennej mojaEtykietaUjecia,<br />

sprawisz, ze akcja gotoAndPlay bedzie<br />

odtwarzac rózne ujecia filmu.<br />

Deklarowanie danych<br />

269


Rozdzial 9.<br />

Deklarowanie danych<br />

Zakres dzialania zmiennych<br />

Kazda deklarowana zmienna nalezy do<br />

okreslonej listwy czasowej. Wlasciwosc ta<br />

nazywana jest zakresem dzialania zmiennej.<br />

Jesli zadeklarujesz zmienna z poziomu glównej<br />

listwy czasowej, to wlasnie ta zmienna bedzie<br />

ograniczona zakresem dzialania do glównej<br />

listwy czasowej. Jesli zadeklarujesz zmienna<br />

z poziomu klipu filmowego, to bedzie ono<br />

ograniczona zakresem dzialania do tego wlasnie<br />

klipu filmowego. Zakres dzialania zmiennej to<br />

niejako jej dom. Zmienne „egzystuja”<br />

w okreslonych listwach czasowych, wiec jesli<br />

chcesz uzyc informacji przechowywanej<br />

w którejs ze zmiennych, musisz najpierw podac<br />

do niej sciezke dostepu. Mamy tutaj sytuacje<br />

podobna do okreslania sciezek do klipów<br />

filmowych. Zeby uzyskac dostep do klipu<br />

filmowego lub zmiennej, trzeba je<br />

zidentyfikowac za pomoca sciezki dostepu.<br />

Konstruujac sciezki dostepu dla zmiennych,<br />

mozesz uzywac terminów okreslania<br />

wzglednosci _root, this oraz _parent.<br />

W kolejnym cwiczeniu utworzysz menu<br />

rozwijane wczytujace witryne sieciowa za<br />

pomoca akcji getURL. Adres URL dla tej akcji<br />

bedzie przechowywany w zmiennej<br />

zadeklarowanej i osadzonej w glównej listwie<br />

czasowej. Jako ze akcja getURL rezyduje<br />

w klipie filmowym menu rozwijanego, zarówno<br />

zmienna, jak i akcja korzystajaca z tej zmiennej<br />

maja rózne zakresy dzialania. Uzyjesz wiec<br />

sciezki dostepu do zidentyfikowania zmiennej<br />

w glównej listwie czasowej z poziomu listwy<br />

czasowej klipu filmowego.<br />

W celu zidentyfikowania zmiennej<br />

o innym zakresie dzialania:<br />

1. Utwórz klip filmowy bedacy menu<br />

rozwijanym, jak to opisano w rozdziale 4.<br />

Przeciagnij klon tego klipu filmowego<br />

z biblioteki na scene (rys. 9.12).<br />

2. Nazwij klip filmowy przy pomocy palety<br />

Instance.<br />

Rys. 9.12. Klip filmowy w formie menu<br />

rozwijanego posiada dwa stany – zwiniete<br />

(collapsed) i rozwiniete (expanded) – które<br />

moga sie zmieniac<br />

270


Kontrolowanie przeplywu informacji<br />

Rys. 9.13. Zadeklaruj zmienna myURL bedaca<br />

adresem witryny wydawnictwa Peachpit Press<br />

Akcja getURL, przypisana do przycisku wewnatrz klipu<br />

filmowego, odwoluje sie do zmiennej _root.myURL<br />

Zmienna<br />

myURL<br />

ograniczona<br />

zakresem<br />

dzialania<br />

do glównej<br />

listwy<br />

czasowej<br />

3. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i otwórz palete<br />

akcji.<br />

4. Wybierz Actions/set variable.<br />

5. W polu Variable wpisz nazwe. W polu<br />

Value wpisz adres internetowy. Obydwa<br />

pola wyboru Expression pozostaw<br />

niezaznaczone (rys. 9.13).<br />

Ta zmienna zostala zadeklarowana<br />

w glównej listwie czasowej i przechowuje<br />

dane w postaci lancucha znakowego.<br />

6. Przejdz do trybu edycji symbolu twojego<br />

klipu filmowego. Zaznacz jeden<br />

z przycisków w rozwinietym menu.<br />

7. Dodaj manipulator zdarzenia on<br />

(release), wybierajac Actions/getURL.<br />

8. W polu URL wpisz _root, nastepnie<br />

kropke, a potem nazwe zmiennej<br />

zadeklarowanej w glównej listwie czasowej.<br />

Zaznacz pole Expression (rys. 9.14).<br />

9. Przetestuj film. Kiedy zwolnisz przycisk<br />

zawarty w klipie filmowym, Flash odczyta<br />

informacje przechowywana w zmiennej na<br />

glównej listwie czasowej. Jesli nie<br />

zidentyfikowales glównej listwy czasowej<br />

w polu URL akcji getURL, Flash bedzie<br />

próbowal odnalezc zmienna w obrebie klipu<br />

filmowego, co zakonczy sie<br />

niepowodzeniem.<br />

Deklarowanie danych<br />

Rys. 9.14. Dla ostatniego przycisku w menu<br />

rozwijanym przypisz w polu URL akcje<br />

_root.myURL. Jako ze akcja ta jest przypisywana<br />

wewnatrz klipu filmowego menu rozwijanego,<br />

wpisanie _root jest niezbedne do<br />

zidentyfikowania zmiennej myURL,<br />

zadeklarowanej przeciez w glównej listwie<br />

czasowej<br />

271


Rozdzial 9.<br />

Deklarowanie danych<br />

Deklarujac zmienne, mozna przypisac je do<br />

innej listwy czasowej niz ta, w której zostaly<br />

utworzone. Zeby ustawic inny od domyslnego<br />

zakres dzialania zmiennej, trzeba podac sciezke<br />

dostepu do zmiennej w akcji set variable.<br />

W celu przypisania zmiennej<br />

innego zakresu dzialania:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

pierwsze ujecie kluczowe glównej listwy<br />

czasowej i otwórz palete akcji.<br />

2. W polu Variable w miejsce dotychczasowej<br />

zawartosci wstaw nazwe klonu klipu<br />

filmowego, do którego ma ograniczac sie<br />

zakres dzialania zmiennej, nastepnie wpisz<br />

kropke i na koncu nazwe zmiennej<br />

(rys. 9.15).<br />

Teraz twoja zmienna bedzie osadzona<br />

w klonie klipu filmowego w miejsce<br />

glównej listwy czasowej.<br />

3. Przejdz do trybu edycji symbolu twojego<br />

klipu filmowego. Zaznacz jeden<br />

z przycisków w rozwinietym menu.<br />

4. Zaznacz wyrazenie getURL.<br />

5. W polu URL dotychczasowa zawartosc<br />

zastap nazwa zmiennej zadeklarowanej<br />

w glównej listwie czasowej. Zaznacz pole<br />

wyboru Expression (rys. 9.16).<br />

6. Przetestuj film.<br />

Kiedy zwolnisz przycisk zawarty w klipie<br />

filmowym, Flash odczyta informacje<br />

przechowywana w zmiennej osadzonej<br />

w klipie filmowym. Poniewaz po<br />

zadeklarowaniu zmiennej ograniczono jej<br />

zakres dzialania do klipu filmowego, Flash<br />

potrafi ja zlokalizowac i uzyc<br />

przechowywanej w niej informacji jako<br />

adresu URL.<br />

Rys. 9.15. Sciezka dostepu menu.myURL<br />

deklaruje zmienna myURL w klipie filmowym<br />

bedacym menu rozwijanym<br />

Akcja getURL,<br />

przypisana do<br />

przycisku<br />

wewnatrz<br />

klipu<br />

filmowego,<br />

odwoluje sie<br />

do zmiennej<br />

myURL<br />

Zmienna myURL osadzona w listwie<br />

czasowej klipu filmowego<br />

Rys. 9.16. Ostatni przycisk w rozwijanym<br />

menu wymaga podania tylko nazwy zmiennej<br />

myURL, jako ze zmienna ta jest osadzona<br />

wlasnie w klipie filmowym menu rozwijanego<br />

272


Kontrolowanie przeplywu informacji<br />

Wczytywanie zmiennych<br />

z zewnatrz<br />

Tak naprawde, to zmiennych wcale nie trzeba<br />

deklarowac wewnatrz filmu. Flash pozwala na<br />

przechowywanie ich w dokumentach<br />

tekstowych, w kazdej chwili mozliwych do<br />

wczytania. W ten sposób mozesz latwo<br />

edytowac zmienne w obrebie takiego<br />

dokumentu tekstowego, a w rezultacie zmieniac<br />

caly film bez uzywania narzedzi Flasha. Dla<br />

przykladu, tworzac quiz dzialajacy w oparciu<br />

o zmienne w postaci pytan i odpowiedzi,<br />

przechowuj owe zmienne w dokumentach<br />

tekstowych. Kiedy pózniej bedziesz chcial<br />

wymienic pytania, wystarczy, ze dokonasz<br />

edycji samego dokumentu. Ponadto zmienne<br />

w dokumentach tekstowych moga byc<br />

generowane automatycznie przy pomocy<br />

skryptów serwerowych, bazujacych na danych<br />

dostarczanych z zewnatrz. Flash moze wtedy<br />

odczytywac zmienne z dokumentu tekstowego<br />

tylko z ostatnio wprowadzanymi przez<br />

uzytkownika wartoscia mi. Taki zewnetrzny<br />

dokument tekstowy moze przechowywac<br />

dowolna ilosc zmiennych, ale musi byc<br />

zapisany w formacie MIME – standardowym<br />

formacie wykorzystywanym w skryptach CGI.<br />

Zmienne zapisywane sa w nastepujacy sposób:<br />

zmienna1=wartosc1&zmienna2=<br />

wartosc2&zmienna3=wartosc3<br />

gdzie pary zmienna — wartosc oddzielane sa<br />

pojedynczym znakiem &.<br />

Zmienne moga byc wczytywane do okreslonego<br />

poziomu lub do wskazanego klipu filmowego.<br />

W obu przypadkach musisz jednak pamietac<br />

o ich zakresach dzialania, jesli masz zamiar<br />

odczytywac wartosci tych zmiennych.<br />

Wczytywanie zminnych z zewnatrz<br />

273


Rozdzial 9.<br />

Wczytywanie zminnych z zewnatrz<br />

W celu wczytania zmiennych<br />

umieszczonych w pliku tekstowym:<br />

1. Uruchom prosty edytor tekstowy i otwórz<br />

nowy dokument. Mozesz posluzyc sie np.<br />

windowsowym Notatnikiem.<br />

2. Zapisz swoje zmienne i ich wartosci<br />

w standardowym formacie MIME<br />

(rys. 9.17).<br />

3. Zapisz utworzony dokument tekstowy w tej<br />

samej lokalizacji, w której zapisany bedzie<br />

film Flasha. Niewazne, jak nazwiesz swój<br />

plik, ale najlepiej, zeby byla to nazwa<br />

opisowa ze standardowym trzyliterowym<br />

rozszerzeniem.<br />

4. We Flashu otwórz nowy film. Zaznacz<br />

pierwsze ujecie kluczowe w glównej listwie<br />

czasowej i otwórz palete akcji.<br />

5. Wybierz Actions/loadVariables (Esc + lv).<br />

6. W polu URL wprowadz sciezke dostepu do<br />

pliku tekstowego. Poniewaz zarówno plik<br />

tekstowy, jak i plik SWF sa w tym samym<br />

katalogu, wystarczy podac nazwe pliku. Pole<br />

Expression pozostaw niezaznaczone.<br />

7. W menu rozwijanym Location wybierz<br />

Level i nie zmieniaj wpisanej liczby 0<br />

(rys. 9.18).<br />

Flash wczyta zmienne z dokumentu<br />

tekstowego do poziomu 0 lub do glównej<br />

listwy czasowej.<br />

8. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie.<br />

9. Zaznacz klip filmowy. Na palecie akcji<br />

wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Key Down w bloku edycji<br />

parametrów.<br />

10. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Rotation.<br />

Rys. 9.17. Dwie zmienne i ich wartosci,<br />

zapisane w formacie MIME. W tym<br />

przykladzie, zmienne sa zapisane<br />

w dokumencie tekstowym o nazwie data.txt<br />

Rys. 9.18. Akcja LoadVariablesNum wczytuje<br />

zmienne z pliku data.txt do poziomu 0<br />

274


Kontrolowanie przeplywu informacji<br />

Rys. 9.19. Wartosc zmiennej myRotation z pliku<br />

tekstowego jest wykorzystywana do okreslenia<br />

stopnia obrotu klipu filmowego<br />

Rys. 9.20. Dwie dodatkowe akcje setProperty<br />

zmieniaja skale klipu filmowego, uzywajac w tym<br />

celu zmiennej mySize z pliku tekstowego. Klip<br />

filmowy przed wystapieniem zdarzenia keyDown<br />

(u góry z lewej) oraz po wystapieniu zdarzenia<br />

(u góry z prawej)<br />

11. W polu Target bloku edycji parametrów<br />

wpisz this. W polu Value wprowadz<br />

sciezke dostepu do wczytywanej zmiennej.<br />

Jako ze zmienne sa wczytywane do poziomu<br />

0, musisz wpisac _root lub _level0 przed<br />

nazwa zmiennej. Zaznacz obydwa pola<br />

Expression (rys. 9.19).<br />

Kiedy nacisniesz klawisz, Flash uzyje<br />

wczytanych zmiennych jako wartosci<br />

potrzebnych do wykonania rotacji klipu<br />

filmowego.<br />

12. Dodaj nastepna akcje setProperty w celu<br />

wykorzystania drugiej wczytywanej<br />

zmiennej (rys. 9.20).<br />

13. Wyeksportuj film do formatu SWF i zapisz<br />

go w tej samej lokalizacji, co plik tekstowy.<br />

Wskazówki<br />

• Jesli zamierzasz wczytac zmienne<br />

z zewnatrz do klipu filmowego, postaraj sie<br />

uzywac zawsze tej samej sciezki dostepu do<br />

klipu. Nazwij ja np. wczytywaneZmienne,<br />

a bedziesz wiedzial, gdzie szukac<br />

zmiennych, jako ze zostana osadzone w tym<br />

samym miejscu.<br />

• Zmienne umieszczone w dokumencie<br />

tekstowym sa wczytywane do Flasha jako<br />

lancuchy znakowe, co oznacza, ze nie trzeba<br />

wpisywac cudzyslowów wokól wartosci<br />

znakowych.<br />

• Pary zmienna — wartosc zapisuj<br />

w dokumentach tekstowych, pomijajac<br />

wszelkie przenoszenia do nastepnej linii,<br />

odstepy i interpunkcje, z wyjatkiem<br />

symbolu &. Byc moze tobie trudniej bedzie<br />

to odczytac, ale za to Flash szybciej to<br />

zrozumie.<br />

Wczytywanie zminnych z zewnatrz<br />

275


Modyfikowanie zmiennych<br />

Rozdzial 9.<br />

Modyfikowanie zmiennych<br />

Zmienne sa uzyteczne, poniewaz mozna<br />

zmieniac ich zawartosc wraz z odswiezeniem<br />

informacji o statusie filmu lub uzytkownika.<br />

Czasami sprowadza sie to tylko do przypisania<br />

zmiennej nowej wartosci. Kiedy indziej trzeba<br />

wartosci zmiennych dodac, odjac, pomnozyc<br />

lub podzielic, zmienic wartosc boole’owska<br />

true na false czy tez zmodyfikowac<br />

lancuch znakowy przez dodanie kilku znaków.<br />

Przykladowo, zmienna mójWynik moze byc<br />

zadeklarowana z wartoscia 0. Pózniej, z kazdym<br />

punktem zdobytym przez gracza, wartosc tej<br />

zmiennej bedzie rosla o 1. Przeprowadzaniem<br />

operacji polegajacych na modyfikowaniu<br />

informacji przechowywanych w zmiennych<br />

zajmuja sie operatory – symbole, które<br />

„operuja” danymi.<br />

Operator przypisania<br />

i operatory arytmetyczne<br />

Operator przypisania (=) to pojedynczy znak<br />

równosci, który przypisuje zmiennej okreslona<br />

wartosc. Miales juz okazje korzystac z tego<br />

operatora w akcjach set variable, które<br />

automatycznie wstawiaja operator przypisania<br />

do informacji wprowadzanych w polach<br />

Variable oraz Value. Mozesz tez uzyc akcji<br />

evaluate, która udostepnia puste pole<br />

Expression w bloku edycji parametrów. W polu<br />

tym wprowadzasz nazwe zmiennej, wartosc<br />

i operator przypisania pomiedzy nimi<br />

(rys. 9.21). Inne powszechnie uzywane<br />

operatory znajdziesz w tabeli 9.3.<br />

Rys. 9.21. Akcje set variable (u góry)<br />

oraz evaluate (u dolu) tworza skrypty<br />

o równowaznym znaczeniu. W przypadku<br />

akcji evaluate musisz jednak sam wprowadzic<br />

operator przypisania<br />

Tabela 9.3. Najczesciej uzywane operatory<br />

Symbol Opis<br />

+ Dodawanie.<br />

- Odejmowanie.<br />

* Mnozenie.<br />

/ Dzielenie.<br />

++ Zwieksza wartosc o jeden. x++ jest<br />

równowazne z x = x + 1.<br />

-- Zmniejsza wartosc o jeden. x-- jest<br />

równowazne z x = x – 1.<br />

+= Dodaje wartosc i przypisuje ja<br />

zmiennej. x += 5 jest równowazne<br />

z x = x + 5.<br />

-= Odejmuje wartosc i przypisuje ja<br />

zmiennej. x –= 5 jest równowazne<br />

z x = x – 5.<br />

*= Mnozy przez wartosc i przypisuje<br />

wynik zmiennej. x *= 5 jest<br />

równowazne z x = x * 5.<br />

/= Dzieli przez wartosc i przypisuje<br />

wynik zmiennej. x /= 5 jest<br />

równowazne z x = x / 5.<br />

276


Kontrolowanie przeplywu informacji<br />

Rys. 9.22. Po kazdym zwolnieniu wcisnietego<br />

przycisku, przypisana do niego akcja zwieksza<br />

wartosc zmiennej rotation o 10<br />

Operatory sa koniem pociagowym<br />

interaktywnosci Flasha. Bedziesz ich czesto<br />

uzywal do przeprowadzania obliczen w tle,<br />

dodawania wartosci jednej zmiennej do innej<br />

lub zmieniania wlasciwosci obiektu przez<br />

dodanie albo odjecie wartosci zmiennej.<br />

Ponizszy przyklad pokazuje proste<br />

zastosowanieoperatorów do modyfikowania<br />

zmiennej oddzialujacej na grafike filmu.<br />

Utworzysz przycisk, który zwieksza wartosc<br />

zmiennej po kazdym jego wcisnieciu.<br />

Wspomniana zmienna jest uzywana do<br />

ustawiania kata obrotu klipu filmowego.<br />

W celu zwiekszenia wartosci zmiennej<br />

oddzialujacej na wlasciwosc<br />

klipu filmowego:<br />

1. Utwórz klip filmowy i umiesc jego klon na<br />

scenie. Za pomoca palety Instance nadaj mu<br />

nazwe.<br />

2. W pierwszym ujeciu kluczowym glównej<br />

listwy czasowej zadeklaruj zmienna<br />

rotation o wartosci 0.<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

4. Zaznacz przycisk i na palecie akcji wybierz<br />

Actions/evaluate. W polu Expression<br />

wpisz rotation += 10 (rys. 9.22).<br />

Wyrazenie to dodaje 10 do biezacej wartosci<br />

i przypisuje sume do zmiennej o nazwie<br />

rotation.<br />

5. Zaznacz klip filmowy i na palecie akcji<br />

wybierz Actions/onClipEvent. W bloku<br />

edycji parametrów zaznacz zdarzenie<br />

EnterFrame .<br />

6. Wybierz Actions/setProperty.<br />

Modyfikowanie zmiennych<br />

277


Rozdzial 9.<br />

Modyfikowanie zmiennych<br />

7. Z menu rozwijanego Property wybierz<br />

Rotation. W polu Target wpisz this.<br />

W polu Value wpisz _root.rotation.<br />

zaznacz obydwa pola wyboru Expression<br />

(rys. 9.23).<br />

Zdarzenie EnterFrame sprawia, ze akcja<br />

setProperty jest wykonywana<br />

nieustannie. W wyniku jej dzialania obrót<br />

klipu filmowego jest przypisywany do<br />

wartosci zmiennej rotation, która<br />

uzytkownik moze zwiekszyc, zwalniajac<br />

przycisk.<br />

8. Umiesc na scenie kolejny klon przycisku.<br />

Przypisz do zmiennej rotation operator<br />

zmniejszania wartosci o 1 (--), dzieki czemu<br />

wartosc zmiennej bedzie zmniejszac sie po<br />

kazdym kliknieciu przycisku. W ten sposób<br />

bedziesz mógl kontrolowac stopien obrotu<br />

klipu filmowego w odwrotnym kierunku<br />

(rys. 9.24).<br />

Wskazówki<br />

• W celu wykonania bardziej<br />

skomplikowanych obliczen matematycznych<br />

(np. potegowanie, sinus, cosinus) albo<br />

manipulacji lancuchem znakowym<br />

zmiennych lub ich wartosci, musisz uzyc<br />

obiektu matematycznego (Math) lub obiektu<br />

lancucha znakowego (String). Z obiektami<br />

tymi zapoznasz sie w rozdzialach 10. i 11.<br />

• We Flashu obowiazuja zasady kolejnosci<br />

wykonywania dzialan arytmetycznych<br />

(uczyles sie o nich na matematyce,<br />

pamietasz?). Znaczy to, ze pewne operatory<br />

maja pierwszenstwo przed innymi. Na<br />

przyklad, mnozenie i dzielenie zawsze<br />

wykonuje sie przed dodawaniem lub<br />

odejmowaniem (3 + 4 ∗ 2 daje zupelnie inny<br />

wynik niz 3 ∗ 4 + 2).<br />

• Jesli jakas czesc wyrazenia ma zostac<br />

obliczona przed innymi, zamknij<br />

odpowiednia grupe zmiennych i operatorów<br />

w nawiasach. Przykladowo, wynikiem<br />

dzialania ( 3 + 2 ) ∗ 4 jest wartosc 20, ale<br />

w przypadku braku nawiasów, 3 + 2 ∗ 4 da<br />

wynik równy 11.<br />

Rys. 9.23. Stopien obrotu biezacego klipu<br />

filmowego jest nieustannie uaktualniany do<br />

wartosci zmiennej rotation w glównej listwie<br />

czasowej<br />

Przycisk<br />

zmniejszajacy<br />

wartosc zmiennej<br />

Klip filmowy obraca sie w zaleznosci<br />

od wartosci zmiennej rotation<br />

Rys. 9.24. Lufa tego dziala to klip filmowy,<br />

którego wlasciwosc obrotu (_rotation)<br />

zmienia sie stosownie do wartosci zmiennej<br />

rotation<br />

Przycisk<br />

zwiekszaja<br />

cy wartosc<br />

zmiennej<br />

278


Kontrolowanie przeplywu informacji<br />

Rys. 9.25. Klip filmowy mushroom jest powielany<br />

po kazdym zwolnieniu przycisku. Nazwa nowego<br />

klonu oraz jego poziom glebokosci zaleza od<br />

wartosci zmiennej counter<br />

Wiazanie zmiennych<br />

i funkcja eval<br />

Operator dodawania (+) sumuje wartosci<br />

danych liczbowych. Jednak mozna uzyc go<br />

takze do laczenia lancuchów znakowych<br />

i zmiennych przechowujacych dane znakowe.<br />

Operacja taka nazywa sie wiazaniem. Wiazanie<br />

zmiennych i lancuchów znakowych umozliwia<br />

tworzenie sciezek dostepu i skomplikowanych<br />

wyrazen. Na przyklad, czesto praktykowanym<br />

sposobem nadawania nazw zduplikowanym<br />

klonom filmowym jest wiazanie zmiennej<br />

z nazwa oryginalnego klipu filmowego.<br />

Zmienna jest po prostu licznikiem dodajacym<br />

wartosc 1 za kazdym razem, kiedy nastepuje<br />

powielenie klipu. Jesli nazwa klipu filmowego<br />

jest mushroom (grzyb), a nazwa zmiennej<br />

Counter (licznik), to mozesz dowiazac nowa<br />

nazwe za pomoca wyrazenia:<br />

"mushroom" + counter<br />

a rezultatem beda kolejne nazwy, np.<br />

mushroom1 , mushroom2 itp.<br />

W celu dowiazania<br />

lancucha znakowego do zmiennej:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Za pomoca palety<br />

Instance nadaj mu nazwe.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

3. W pierwszym ujeciu glównej listwy<br />

czasowej uzyj akcji set variable do<br />

zadeklarowania zmiennej o wartosci 1.<br />

4. Zaznacz przycisk, otwórz palete akcji<br />

i wybierz Actions/duplicateMovieClip.<br />

5. W polu Target wpisz nazwe klipu<br />

filmowego. Pole Expression pozostaw<br />

niezaznaczone. W polu New Name wpisz<br />

nazwe klipu filmowego w cudzyslowie,<br />

dalej znak +, potem nazwe zmiennej.<br />

Zaznacz pole Expression. W polu Depth<br />

wpisz nazwe zmiennej (rys. 9.25).<br />

Wiazanie zmiennych i funkcja eval<br />

279


Rozdzial 9.<br />

Wiazanie zmiennych i funkcja eval<br />

Utworzony zostanie duplikat klipu<br />

filmowego, z wartoscia zmiennej dowiazana<br />

do nazwy klipu filmowego. Duplikat klipu<br />

jest umieszczany na poziomie glebokosci<br />

odpowiadajacym wartosci zmiennej.<br />

6. Wybierz Actions.setProperty. Z menu<br />

rozwijanego Property wybierz X Position.<br />

7. W polu Target wpisz nazwe klipu<br />

filmowego w cudzyslowie, znak + i nazwe<br />

zmiennej. zaznacz pole wyboru Expression.<br />

W polu Value wpisz nazwe zmiennej, znak<br />

*, i liczbe 20. Zaznacz pole Expression<br />

(rys. 9.26).<br />

Akcja setProperty umiesci duplikat klipu<br />

filmowego w nowym miejscu, wedlug<br />

wspólrzednej x okreslonej na podstawie<br />

wartosci zmiennej. Dzieki temu bedziesz<br />

mógl dostrzec duplikat.<br />

8. Wybierz Actions/evaluate . W polu<br />

Expression wpisz nazwe zmiennej, a dalej<br />

znak ++ (rys. 9.27).<br />

Za kazdym razem, kiedy zwalniasz przycisk<br />

i tworzysz duplikat klipu filmowego, twoja<br />

zmienna zwieksza wartosc o 1. Stad nowe<br />

duplikaty zawsze otrzymuja unikalne nazwy,<br />

oparte na wiazaniu lancucha znakowego<br />

(nazwy klipu) i zmiennej oraz indywidualne<br />

poziomy glebokosci i wspólrzedna x<br />

polozenia na scenie (rys. 9.28).<br />

Rys. 9.26. Duplikat klipu mushroom wedruje<br />

w nowe miejsce<br />

Rys. 9.27. Zmienna counter zwieksza swoja<br />

wartosc o 1<br />

mushroom1 na poziomie<br />

glebokosci = 1, x = 20<br />

mushroom2<br />

na poziomie<br />

glebokosci = 2,<br />

x = 40<br />

Oryginalny<br />

klip filmowy<br />

tanczacego<br />

grzyba,<br />

nazwany<br />

mushroom<br />

mushroom3 na poziomie glebokosci = 3, x = 60<br />

Rys. 9.28. Powielone tanczace grzybki<br />

otrzymuja nazwy utworzone w rezultacie<br />

wiazania lancucha znakowego „mushroom”<br />

ze zmienna counter<br />

280


Kontrolowanie przeplywu informacji<br />

Rys. 9.29. Metoda stop jest dolaczana do<br />

kazdego nowego duplikatu klipu filmowego<br />

mushroom<br />

Odtwarzanie<br />

mushroom1<br />

zatrzymane<br />

w klatce 1.<br />

Odtwarzanie<br />

mushroom2<br />

zatrzymane<br />

w klatce 1.<br />

Rys. 9.30. Przerwane zostaje odtwarzanie<br />

kazdego nowego duplikatu klipu filmowego<br />

mushroom<br />

Oryginalny<br />

klip filmowy<br />

tanczacego<br />

grzyba,<br />

nazwany<br />

mushroom<br />

Odtwarzanie mushroom3 zatrzymane w klatce 1.<br />

Po utworzeniu nowych zmiennych lub obiektów<br />

w wyniku wiazania — mozesz ich uzywac<br />

w innych wyrazeniach. Jednak, dla oszacowania<br />

zawartosci tych wyrazen musisz uzyc funkcji<br />

eval. Funkcja ta odczytuje wyrazenie i zwraca<br />

wartosc w postaci pojedynczego lancucha<br />

znakowego. Zalózmy np., ze chcesz odczytac<br />

wartosc poziomu przezroczystosci<br />

zduplikowanego klipu filmowego mushroom2.<br />

Móglbys spróbowac posluzyc sie takim<br />

wyrazeniem:<br />

"mushroom" + counter + "._alpha"<br />

jednak Flash odczyta to wyrazenie jako lancuch<br />

znakowy i nie rozpozna, ze _alpha to<br />

wlasciwosc klipu mushroom2. Rozwiazaniem<br />

tego problemu jest zgrupowanie pierwszej<br />

czesci wyrazenia w postaci argumentu funkcji<br />

eval, a nastepnie dopisanie wlasciwosci, jak<br />

nizej:<br />

eval ("mushroom" + counter)._alpha<br />

Funkcji eval mozesz uzywac wtedy, kiedy<br />

wyrazen wiazanych, np. w sciezkach dostepu<br />

lub argumentach metod.<br />

W celu uzycia<br />

funkcji eval w sciezce dostepu:<br />

1. Kontynuuj poprzednie cwiczenie. Zaznacz<br />

przycisk i otwórz palete akcji.<br />

2. Dodaj nowe wyrazenie przed wyrazeniem<br />

zwiekszania wartosci zmiennej, wybierajac<br />

najpierw Actions/evaluate.<br />

3. W polu Expression palety akcji wybierz<br />

Functions/eval. Pojawi sie wyrazenie eval<br />

z podswietlonym argumentem zmiennej<br />

(variable).<br />

4. W miejsce argumentu zmiennej wpisz<br />

nazwe klipu filmowego w cudzyslowie,<br />

nastepnie symbol + i na koncu nazwe<br />

zmiennej.<br />

5. Za wyrazeniem eval wpisz kropke, a potem<br />

metode, która ma byc wywolana (rys. 9.29).<br />

Wyrazenie eval szacuje wiazanie,<br />

a nastepnie dolacza do niego metode<br />

(rys. 9.30).<br />

Wiazanie zmiennych i funkcja eval<br />

281


Rozdzial 9.<br />

Sprawdzanie informacji<br />

Sprawdzanie informacji<br />

za pomoca<br />

wyrazen warunkowych<br />

Zmienne oraz wyrazenia sa scisle powiazane<br />

z wyrazeniami warunkowymi. Informacje, które<br />

odczytujesz, przechowujesz w zmiennych<br />

i modyfikujesz za pomoca wyrazen, beda<br />

naprawde uzyteczne dopiero wtedy, kiedy<br />

porównasz je z innymi fragmentami danych.<br />

Wykonanie takiego porównania to zadanie<br />

wlasnie dla wyrazen warunkowych, które<br />

ponadto umozliwiaja zrealizowanie dalszych<br />

instrukcji, w zaleznosci od otrzymanych<br />

rezultatów. Logika wyrazen warunkowych<br />

sprowadza sie w zasadzie do instrukcji: „Jesli<br />

abc jest prawda, to wy konaj xyz”, a we Flashu<br />

definiuje sie zarówno abc (warunek), jak i xyz<br />

(konsekwencja). Wyrazenia warunkowe<br />

przypominaja tez troche manipulatory zdarzen –<br />

obydwie funkcje reaguja na okreslone sytuacje.<br />

W przypadku manipulatorów zdarzen, taka<br />

sytuacja jest zazwyczaj ruch mysza lub<br />

klikniecie jej klawiszem. W wyrazeniach<br />

warunkowych natomiast sytuacja jest biezacy<br />

status zmiennej lub wlasciwosci obiektu.<br />

Wyrazenia warunkowe zaczynaja sie od<br />

instrukcji if (). Argument znajdujacy sie<br />

w nawiasach jest warunkiem – wyrazeniem<br />

porównujacym jedna rzecz z druga. Czy<br />

zmienna mójWynik ma wieksza wartosc od<br />

zmiennej najlepszyWynik? Czy wlasciwosc<br />

_droptarget mojego przeciaganego klipu<br />

filmowego jest niezgodna ze sciezka dostepu<br />

do klipu filmowego mójSmietnik? Czy<br />

wlasciwosc _currentFrame glównej listwy<br />

czasowej ma wartosc 10? To wszystko<br />

przyklady warunków. Jak sie je konstruuje?<br />

Za pomoca operatorów porównywania,<br />

dolaczanych do wyrazen.<br />

282


Kontrolowanie przeplywu informacji<br />

Tabela 9.4. Operatory porównywania<br />

Symbol<br />

Opis<br />

== Równe z...<br />

< Mniejsze niz<br />

> Wieksze niz<br />

= Wieksze lub równe<br />

!= Nie jest równe z...<br />

Rys. 9.31. Wtedy i tylko wtedy, gdy spelniony jest<br />

warunek okreslony w nawiasach, zostana<br />

wykonane konsekwencje warunku –<br />

consequence1, consequence2 i consequence3<br />

Rys. 9.32. Dodaj warunek do akcji przypisanych<br />

do prawego przycisku, który bedzie sprawdzal<br />

wartosc zmiennej rotation<br />

Operatory porównywania<br />

Operator porównywania szacuje wartosci<br />

po obu stronach wyrazenia i zwraca wartosc<br />

prawdy (true) lub falszu (false). Operatory te<br />

wymieniono w tabeli 9.4.<br />

Kiedy po oszacowaniu warunku okazuje sie, ze<br />

zostal spelniony (prawda), nastepuje wykonanie<br />

konsekwencji, okreslonej w nawiasach<br />

klamrowych wyrazenia if (rys. 9.31).<br />

W przypadku niespelnienia warunku (falsz),<br />

wszystkie akcje zamkniete w klamrach sa<br />

ignorowane.<br />

W ponizszym cwiczeniu skorzystasz z pliku,<br />

który utworzyles w celu wykonania obrotu lufy<br />

dziala, w podrozdziale „Modyfikowanie<br />

zmiennych”. Chcemy ustalic maksymalne<br />

odchylenie lufy na poziomie 90 stopni, dlatego<br />

tez skonstruujemy wyrazenie warunkowe<br />

nakazujace Flashowi sprawdzac, czy wartosc<br />

wychylenia (obrotu) jest wieksza niz 90.<br />

W przypadku spelnienia warunku, rotacja lufy<br />

zatrzyma sie na poziomie 90 stopni,<br />

zapobiegajac tym samym wychyleniu jej<br />

ponizej poziomej linii podstawy.<br />

W celu wprowadzenia<br />

wyrazenia warunkowego:<br />

1. Kontynuuj cwiczenie demonstrujace<br />

wykonanie obrotu klipu filmowego<br />

z podrozdzialu „Modyfikowanie<br />

zmiennych”. Zaznacz przycisk i otwórz<br />

palete akcji.<br />

2. Zaraz za wyrazeniem okreslajacym przyrost<br />

zmiennej o 10, wstaw wyrazenie<br />

warunkowe, wybierajac Actions/if<br />

(Esc + if).<br />

3. W polu Condition palety Actions wpisz<br />

nazwe zmiennej, nastepnie symbol > i na<br />

koncu wartosc 90 (rys. 9.32). Flash bedzie<br />

sprawdzal, czy zmienna ma wartosc<br />

wieksza od 90.<br />

Sprawdzanie informacji<br />

283


Rozdzial 9.<br />

Sprawdzanie informacji<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej, a w polu<br />

Value wpisz 90. Zaznacz pole wyboru<br />

Expression (rys. 9.33).<br />

Jesli wartosc zmiennej przekracza 90, Flash<br />

resetuje jej wartosc z powrotem na 90.<br />

Dzieki temu lufa nie obróci sie ponizej<br />

poziomej linii podstawy.<br />

5. Zaznacz drugi przycisk, zmniejszajacy<br />

stopien obrotu i przygotuj podobne<br />

wyrazenie warunkowe, sprawdzajace, czy<br />

zmienna ma wartosc mniejsza niz –90.<br />

W przypadku spelnienia warunku, wartosc<br />

zmiennej powinna byc resetowana do<br />

wartosci –90.<br />

Wskazówka<br />

• Dowolna akcja wprowadzona poza<br />

wyrazeniem warunkowym if bedzie<br />

wykonywana niezaleznie od tego, czy<br />

warunek okreslony w tym wyrazeniu zostal<br />

spelniony, czy nie. Rozwaz nastepujacy<br />

fragment skryptu:<br />

if (myVariable == 10) {<br />

myVariable = 20;<br />

}<br />

myVariable = 30;<br />

Po wykonaniu tych instrukcji, zmienna<br />

myVariable bedzie zawsze przyjmowala<br />

wartosc 30, nawet wtedy, gdy spelniony<br />

zostanie warunek myVariable == 10.<br />

Ostatnie wyrazenie jest wykonywane<br />

niezaleznie od wszystkich innych wyrazen.<br />

Klip filmowy obrócony o 90 stopni<br />

Rys. 9.33. Lufa dziala nie moze obrócic sie<br />

o kat powyzej 90 stopni poniewaz wyrazenie<br />

if nie pozwala zmiennej rotation przyjmowac<br />

wartosci wiekszych niz 90<br />

284


Kontrolowanie przeplywu informacji<br />

Wprowadzanie alternatywy do<br />

wyrazen warunkowych<br />

W wielu sytuacjach bedzie zachodzic potrzeba<br />

wprowadzenia do wyrazenia warunkowego<br />

alternatywnego wyboru. Wyrazenie else<br />

pozwala na wykonanie konsekwencji warunku<br />

w momencie, kiedy nie jest on spelniony.<br />

Wyrazenie else bylo omówione w rozdziale 7.,<br />

jako sposób na wykrycie upuszczonych klipów<br />

filmowych. W tamtym przykladzie wyrazenie<br />

if sprawdzalo, czy klip filmowy zostal<br />

upuszczony w miejscu zajmowanym przez inny<br />

klip filmowy. Gdy warunek byl spelniony,<br />

upuszczony klip znikal; w przypadku<br />

niespelnienia warunku, wyrazenie else<br />

odsylalo przeciagniety klip filmowy do jego<br />

pierwotnej pozycji. Wyrazenie else odnosi<br />

sie do wszystkich warunków niespelnionych<br />

w wyrazeniu if.<br />

Wyrazenie else zawsze towarzyszy wyrazeniu<br />

if, a jego skladnia wyglada nastepujaco:<br />

if (warunek) {<br />

} else {<br />

}<br />

konsekwencja1;<br />

konsekwencja2;<br />

Uzywaj instrukcji else w przypadku istnienia<br />

mozliwosci wyboru pomiedzy dwiema opcjami,<br />

np. przy detekcji kolizji, sprawdzaniu<br />

prawdziwosci argumentu, poprawnosci<br />

odpowiedzi lub hasla.<br />

Wprowadzanie alternatywy<br />

285


Rozdzial 9.<br />

Wprowadzanie alternatywy<br />

W celu wprowadzenia alternatywy<br />

dla warunku prawda lub falsz:<br />

1. Utwórz klip filmowy bedacy przyciskiem<br />

wyboru (radio button), jak to opisano<br />

w rozdziale 5. Klip ten powinien posiadac<br />

przyciski zmieniajace stan na wlaczony lub<br />

wylaczony. Umiesc klon klipu filmowego<br />

na scenie. Za pomoca palety Instance nadaj<br />

mu nazwe.<br />

2. Zaznacz klip filmowy i otwórz palete akcji.<br />

3. Wybierz Actions/onClipEvent. Pozostan<br />

przy zdarzeniu Load.<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej, a w polu<br />

Value wpisz false. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 9.34).<br />

Po wczytaniu tego klipu filmowego,<br />

zmienna zostanie zadeklarowana z wartoscia<br />

false (falsz). Zwróc uwage, ze zawartosc<br />

pola Value jest wyrazeniem, dlatego tez<br />

false jest odczytywane jako zmienna<br />

boole’owska, a nie znakowa.<br />

5. Przejdz do trybu edycji symbolu twojego<br />

klipu filmowego z przyciskiem wyboru.<br />

6. Zaznacz przycisk w stanie „wylaczony”.<br />

Dodaj kolejne wyrazenie ponizej akcji<br />

gotoAndStop, wybierajac Actions/set<br />

variable. W polu Variable wpisz nazwe<br />

zmiennej zadeklarowanej za pomoca<br />

manipulatora zdarzenia klipu filmowego.<br />

W polu Value wpisz true. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 9.35).<br />

Po wcisnieciu przycisku wyboru zmienna<br />

przyjmie wartosc true.<br />

Rys. 9.34. Klip filmowy bedacy przyciskiem<br />

wyboru deklaruje zmienna answer<br />

(odpowiedz) z wartoscia boole’owska false<br />

(falsz)<br />

Rys. 9.35. Przycisk w stanie „wylaczony”<br />

zmienia wartosc zmiennej answer na true<br />

(prawda)<br />

286


Kontrolowanie przeplywu informacji<br />

Rys. 9.36. Przycisk w stanie „wlaczony” zmienia<br />

wartosc zmiennej answer na false (falsz)<br />

Rys. 9.37. Przycisk sprawdza zmienna answer,<br />

osadzona w klipie filmowym przycisku wyboru.<br />

Jesli warunek jest spelniony, inny klip filmowy,<br />

o nazwie response (odpowiedz), przeskakuje do<br />

ujecia wyswietlajacego komunikat<br />

7. Zaznacz przycisk w stanie „wlaczony”.<br />

Dodaj kolejne wyrazenie ponizej akcji<br />

gotoAndStop, wybierajac Actions/set<br />

variable. W polu Variable wpisz nazwe<br />

zmiennej zadeklarowanej za pomoca<br />

manipulatora zdarzenia klipu filmowego.<br />

W polu Value wpisz false. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 9.36).<br />

Ponowne klikniecie przycisku (powodujace<br />

„wylaczenie” go) ustawia wartosc zmiennej<br />

na false.<br />

8. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

9. Zaznacz przycisk i na palecie akcji wybierz<br />

Actions/if.<br />

10. W polu Condition wprowadz sciezke<br />

dostepu, nazwe zmiennej oraz instrukcje<br />

sprawdzania, czy zmienna ma wartosc true.<br />

Pamietaj, ze twoja zmienna jest ograniczona<br />

zakresem dzialania do klipu filmowego,<br />

a nie do glównej listwy czasowej.<br />

11. Wybierz akcje, która ma byc wykonywana<br />

w przypadku prawdziwosci warunku true<br />

(rys. 9.37).<br />

12. Wybierz Actions/else (Esc + el).<br />

13. Wybierz inna akcje, która ma byc<br />

wykonywana w przypadku prawdziwosci<br />

warunku false (rys. 9.38).<br />

Wskazówka<br />

• Nie nalezy mylic warunku prawda lub falsz<br />

z wartosciami true i false zmiennej<br />

boole’owskiej. Akurat w powyzszym<br />

przykladzie zmiennej true odpowiada<br />

spelnienie warunku prawda. Jednak mozliwa<br />

jest tez sytuacja odwrotna, kiedy zmiennej<br />

false odpowiada spelnienie warunku<br />

prawda.<br />

Wprowadzanie alternatywy<br />

Rys. 9.38. Wyrazenie else sprawia, ze klip<br />

filmowy response przeskakuje do innego ujecia<br />

w przypadku, gdy zmienna answer przyjmuje<br />

wartosc false<br />

287


Rozdzial 9.<br />

Rozgalezianie wyrazen warunkowych<br />

Rozgalezianie wyrazen<br />

warunkowych<br />

Jesli masz do czynienia z kilkoma mozliwymi<br />

do spelnienia warunkami oraz odpowiadajaca<br />

im liczba konsekwencji, musisz posluzyc sie<br />

jeszcze bardziej rozgalezionymi wyrazeniami<br />

warunkowymi, niz te, które sa dostepne przy<br />

uzywaniu wyrazenia else. W przypadku np.<br />

projektowania interfejsu witryny sieciowej lub<br />

gry, wymagajacej wprowadzania danych<br />

z klawiatury, bedziesz chcial zapewne<br />

sprawdzac, który klawisz zostal wcisniety,<br />

a nastepnie wymuszac wykonanie akcji<br />

odpowiadajacej temu konkretnemu klawiszowi.<br />

Za pomoca dostepnej we Flashu instrukcji else<br />

if mozesz konstruowac takie wlasnie<br />

rozbudowane wyrazenia warunkowe wraz<br />

z odpowiadajacymi im konsekwencjami.<br />

Skladnia wyglada nastepujaco:<br />

if (warunek1) {<br />

konsekwencja1;<br />

} else if (warunek2) {<br />

konsekwencja2;<br />

} else if (warunek3) {<br />

}<br />

konsekwencja3;<br />

Kazde z wyrazen else if posiada swój wlasny<br />

warunek, który jest szacowany, a takze wlasny<br />

zestaw konsekwencji, wykonywanych<br />

w przypadku spelnienia warunku. W nastepnym<br />

cwiczeniu wykorzystujemy obiekt Key oraz<br />

rozgalezione wyrazenie warunkowe do<br />

przesuniecia i obrócenia klipu filmowego<br />

w sposób uzalezniony od rodzaju wcisnietego<br />

klawisza.<br />

288


Kontrolowanie przeplywu informacji<br />

Rys. 9.39. Po wcisnieciu klawisza strzalki w góre<br />

ten klip filmowy jest obracany o 0 stopni<br />

i przesuwany o 30 pikseli w góre sceny<br />

W celu<br />

rozgalezienia akcji alternatywnych<br />

za pomoca instrukcji else if:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Nadaj mu nazwe za<br />

pomoca palety Instance.<br />

2. Zaznacz klip filmowy i otwórz palete akcji.<br />

3. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie EnterFrame.<br />

4. Wybierz Actions/if. W polu Condition<br />

wpisz Key.isDown(Key.UP).<br />

Pierwszy warunek korzysta z metody<br />

isDown obiektu Key do sprawdzenia, czy<br />

wcisniety zostal klawisz strzalki w góre.<br />

5. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Rotation.<br />

W polu Target wpisz this. W polu Value<br />

wpisz 0. Zaznacz obydwa pola wyboru<br />

Expressions.<br />

6. Ponownie wybierz Actions/setProperty.<br />

Z menu rozwijanego Property wybierz<br />

Y Position. W polu Target wpisz this.<br />

W polu Value wpisz this._y – 30.<br />

Te dwie akcje setProperty obracaja klip<br />

filmowy w ten sposób, ze jego górna<br />

krawedz jest zwrócona do góry, po czym<br />

odejmuja wartosc 30 pikseli od<br />

wspólrzednej y jego polozenia, dzieki czemu<br />

klip przesuwa sie po scenie. Zaznacz<br />

obydwa pola wyboru Expression (rys. 9.39).<br />

7. Wybierz Actions/else if (Esc + ei). W polu<br />

Condition wpisz Key.isDown<br />

(Key.RIGHT).<br />

8. Wybierz dwie akcje setProperty do<br />

ustawienia obrotu klipu filmowego na<br />

wartosc 90 i dodania wartosci 30 do<br />

wspólrzednej x jego polozenia.<br />

9. Wybierz Actions/else if. W polu Condition<br />

wpisz Key.isDown(Key.DOWN).<br />

Rozgalezianie wyrazen warunkowych<br />

289


Rozdzial 9.<br />

Rozgalezianie wyrazen warunkowych<br />

10. Wybierz dwie akcje setProperty do<br />

ustawienia obrotu klipu filmowego na<br />

wartosc 180 i dodania wartosci 30 do<br />

wspólrzednej y jego polozenia.<br />

11. Wybierz Actions/else if. W polu Condition<br />

wpisz Key.isDown(Key.LEFT).<br />

12. Wybierz dwie akcje setProperty do<br />

ustawienia obrotu klipu filmowego na<br />

wartosc 270 i odjecia wartosci 30 do<br />

wspólrzednej x jego polozenia.<br />

13. Przetestuj film.<br />

Ta seria wyrazen if oraz else if<br />

sprawdza, czy uzytkownik wcisnal klawisz<br />

strzalki, a jesli tak, to przesuwa klip filmowy<br />

stosownie do wcisnietego klawisza<br />

(rys. 9.40). Stworzyles zaczatek gry<br />

Frogger!<br />

Wskazówka<br />

• Instrukcje sprawdzania warunku uzyte<br />

w powyzszym cwiczeniu nie zawieraja<br />

operatora porównywania zgodnosci (==).<br />

Jednak w przypadku zmiennych i metod<br />

boole’owskich nie zachodzi potrzeba<br />

specjalnego przyrównywania ich do wartosci<br />

true (prawda). Tak wiec ponizsze<br />

wyrazenia sa ekwiwalentne:<br />

if (Key.isDown(Key.LEFT))<br />

if (Key.isDown(Key.LEFT)==true)<br />

Rys. 9.40. Kompletny skrypt (u dolu) zawiera<br />

cztery wyrazenia warunkowe z instrukcjami if<br />

i else if, sprawdzajacymi, czy wcisnieto którys<br />

z klawiszy strzalek (góra, lewo, prawo lub<br />

dól). Stopien obrotu i pozycja klipu<br />

filmowego (zuczek na rysunku u góry)<br />

zmieniaja sie w zaleznosci od tego, który<br />

z warunków zostal spelniony<br />

290


Kontrolowanie przeplywu informacji<br />

Rys. 9.41. Operator logiczny && laczy te dwa<br />

wyrazenia, w wyniku czego do spelnienia calego<br />

warunku niezbedne jest wcisniecie jednoczesnie<br />

dwóch klawiszy – strzalka w góre i strzalka<br />

w prawo<br />

Laczenie wyrazen warunkowych<br />

za pomoca operatorów logicznych<br />

Istnieje mozliwosc tworzenia zlozonych<br />

wyrazen warunkowych – za pomoca operatorów<br />

logicznych && (AND), || (OR) oraz ! (NOT).<br />

Operatory te lacza dwa lub wiecej warunków<br />

w jednym wyrazeniu if, umozliwiajac<br />

sprawdzanie bardziej skomplikowanych<br />

scenariuszy dzialan. Przykladem moze byc<br />

sprawdzanie, czy wcisnieto jednoczesnie<br />

klawisze strzalki w góre oraz strzalki w prawo,<br />

z zamiarem przesuniecia klipu filmowego po<br />

skosie. Mozliwe tez byloby sprawdzenie, na<br />

której sposród kilku mozliwych pozycji<br />

upuszczony zostal przeciagany klip filmowy.<br />

Operator NOT mozna wykorzystac do<br />

sprawdzenia, czy zmienna zawiera wazny adres<br />

e-mail, ale jednoczesnie taki, którego domena<br />

nie jest obwarowana zakazem dostepu.<br />

Ponizsze cwiczenie bazuje na pliku, który<br />

utworzyles wczesniej, w celu przesuwania klipu<br />

filmowego za pomoca klawiatury. Polaczysz<br />

teraz dwa warunki w jednym wyrazeniu, dzieki<br />

czemu Flash bedzie mógl sprawdzic wcisnieta<br />

kombinacje klawiszy i w efekcie przesunac klip<br />

filmowy po skosie.<br />

W celu polaczenia warunków:<br />

1. Kontynuujemy poprzednie cwiczenie.<br />

Zaznacz symbol klipu filmowego i otwórz<br />

palete akcji.<br />

2. Zaznacz pierwsze wyrazenie if.<br />

3. W polu Condition, umiesc wskaznik myszy<br />

na koncu istniejacego juz warunku.<br />

4. Wybierz Operators/&&.<br />

5. Wprowadz drugi warunek zaraz za<br />

podwójnym symbolem & (rys. 9.41).<br />

Obydwa warunki pojawia sie w polu<br />

Condition, oddzielone operatorem &&.<br />

Laczenie wyrazen warunkowych<br />

291


Rozdzial 9.<br />

6. Zmien odpowiednio akcje setProperty<br />

w celu stworzenia mozliwosci obracania<br />

klipu filmowego i przesuwania go po skosie<br />

(rys. 9.42).<br />

7. Kontynuuj dodawanie wyrazen else if<br />

z polaczonymi warunkami dla pozostalych<br />

kombinacji klawiszy, nie usuwajac jednak<br />

wczesniej przygotowanych warunków<br />

ograniczajacych ruch klipu filmowego<br />

do plaszczyzny wylacznie pionowej lub<br />

poziomej (rys. 9.43).<br />

Dzieki wprowadzeniu operatora logicznego<br />

&& Flash bedzie sprawdzal, czy uzytkownik<br />

wcisnal kombinacje dwóch klawiszy.<br />

Rys. 9.42. Pierwszy fragment skryptu<br />

wskazuje, ze po wcisnieciu jednoczesnie<br />

klawiszy strzalki w góre i strzalki w prawo<br />

zuczek wykona obrót o 45 stopni i przesunie<br />

sie po skosie w kierunku prawo-góra<br />

Laczenie wyrazen warunkowych<br />

Wskazówka<br />

• Mozliwe jest zagniezdzanie wyrazen if<br />

w innych wyrazeniach if, co z kolei jest<br />

równowazne z wprowadzeniem operatora<br />

logicznego && w pojedynczym wyrazeniu<br />

if. Dla przykladu, ponizsze dwa fragmenty<br />

skryptu przed ustawieniem nowej zmiennej<br />

sprawdzaja, czy obydwa warunki zostaly<br />

spelnione:<br />

if (twójWiek >= 12) {<br />

}<br />

if (twójWiek = 12 && twójWiek<br />


Kontrolowanie przeplywu informacji<br />

Zapetlanie wyrazen<br />

Zapetlajac wyrazenia, mozesz tworzyc akcje<br />

lub grupy akcji, które beda wykonywane<br />

okreslona ilosc razy, lub tez dopóki spelniony<br />

bedzie pewien warunek. Powtarzajace sie akcje<br />

sa czesto wykorzystywane do budowania tablic,<br />

specjalnej odmiany zmiennych,<br />

przechowujacych dane w strukturalny, latwo<br />

dostepny sposób. Akcja wykonywana w petli<br />

daje pewnosc, ze kazdy fragment danych jest<br />

wprowadzany i odczytywany w prawidlowej<br />

kolejnosci. Wiecej o tablicach dowiesz sie<br />

z rozdzialu 11. Generalnie jednak, zapetlajacych<br />

sie wyrazen uzywa sie do automatycznego<br />

wykonywania akcji przez ilosc razy okreslana<br />

za pomoca zmiennej o narastajacej wartosci.<br />

Taka zmienna modyfikuje argumenty kazdej<br />

nastepnej metody w petli albo okreslone<br />

wlasciwosci tworzonych obiektów. Na przyklad,<br />

mozesz dynamicznie generowac grafike<br />

w calosci za posrednictwem ActionScript,<br />

powielajac tylko klipy filmowe za pomoca<br />

wyrazen i akcji duplicateMovieClip.<br />

Korzystaj z zapetlajacych sie wyrazen, gdy<br />

zachodzi potrzeba zmiany wlasciwosci calej<br />

serii klipów filmowych, modyfikowania<br />

zlozonych ustawien dzwieku lub wprowadzania<br />

zmian do wartosci grupy zmiennych.<br />

Istnieja trzy rodzaje wyrazen dzialajacych<br />

w petli – akcje while, do while i for – ale<br />

wszystkie one maja to samo zastosowanie. Dwa<br />

pierwsze wykonuja petle, dopóki spelniony jest<br />

okreslony warunek. Trzecie wyrazenie<br />

wykonuje petle, korzystajac przy tym<br />

z wbudowanego licznika.<br />

W celu zastosowania wyrazenia while do<br />

powielania klipów filmowych:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Nadaj mu nazwe za<br />

pomoca palety Instance.<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

Zapetlanie wyrazen<br />

293


Rozdzial 9.<br />

Zapetlanie wyrazen<br />

3. Zaznacz przycisk i otwórz palete akcji.<br />

Wybierz Actions/set variable. W polu<br />

Variable wpisz i. W polu Value wpisz 0.<br />

Zaznacz pole wyboru obok pola Value<br />

(rys. 9.44).<br />

Zmienna i lub j jest czesto uzywana<br />

w postaci licznika petli.<br />

4. Wybierz Actions/while (Esc + wh). W polu<br />

Condition wpisz i < 361.<br />

5. Przypisz dowolne akcje, które maja byc<br />

wykonywane, dopóki warunek pozostaje<br />

spelniony (dopóki i jest mniejsze niz 361).<br />

W tym cwiczeniu dodajemy wyrazenie<br />

duplicateMovieClip oraz dwa wyrazenia<br />

setProperty, obracajace i modyfikujace<br />

przezroczystosc duplikatów (rys. 9.45).<br />

6. Wybierz Actions/evaluate . W polu<br />

Expression wpisz i += 30. Ewentualnie<br />

posluz sie akcja setVariable do<br />

wprowadzenia równowaznego wyrazenia,<br />

i = i + 30. Po kazdym uruchomieniu<br />

petli zmienna i zwieksza wartosc o 30. Po<br />

przekroczeniu wartosci 361 warunek, który<br />

wyrazenie while sprawdza przy kazdym<br />

wykonaniu, przestaje byc spelniony. Flash<br />

konczy wykonywanie petli i przechodzi do<br />

kolejnego wyrazenia (rys. 9.46).<br />

Rys. 9.44. Zadeklaruj zmienna i dla<br />

manipulatora zdarzenia on (release)<br />

Rys. 9.45. Klip filmowy bar jest powielany,<br />

obracany i otrzymuje nowa wartosc poziomu<br />

przezroczystosci tak dlugo, jak dlugo<br />

zmienna I ma wartosc mniejsza niz 361<br />

Klip filmowy bar<br />

Przycisk<br />

Duplikaty klipu<br />

filmowego bar<br />

Rys. 9.46. Klip filmowy bar (u góry) jest<br />

podstawa wzorku (w srodku) wykreslonego<br />

przez wykonywane w petli wyrazenie (u dolu)<br />

294


Kontrolowanie przeplywu informacji<br />

Rys. 9.47. Równowazne wyrazenie do while<br />

Rys. 9.48. Równowazne wyrazenie for<br />

Rys. 9.49. To ostrzegawcze okno dialogowe<br />

pojawia sie, kiedy niespodziewanie próbujesz<br />

uruchomic nieskonczona petle<br />

Wyrazenie do while<br />

Wyrazenie while (Esc + do) jest zblizone do<br />

wyrazenia while, tyle ze warunek jest tu<br />

sprawdzany na koncu petli, a nie na poczatku.<br />

Oznacza to, ze akcje w petli sa wykonywane<br />

co najmniej raz. Ten sam skrypt, który<br />

utworzylismy w poprzednim cwiczeniu, mozna<br />

zapisac za pomoca wyrazenia do while, jak<br />

pokazano na rys. 9.47.<br />

Wyrazenie for<br />

Wyrazenie for (Esc + fr) udostepnia<br />

wbudowany licznik i parametry do zwiekszania<br />

oraz zmniejszania jego zawartosci, dzieki czemu<br />

mozesz uniknac pisania oddzielnych wyrazen.<br />

Parametry wyrazenia for to: Init, deklarujace<br />

zmienna licznika, Condition, czyli sprawdzane<br />

wyrazenie, Next, okreslajace wartosc przyrostu<br />

lub zmniejszania sie zmiennej licznika. Skrypt<br />

utworzony w poprzednim cwiczeniu mozna<br />

zapisac równiez za pomoca wyrazenia for, jak<br />

widac na rys. 9.48.<br />

Wskazówki<br />

• Nie uzywaj zapetlajacych sie wyrazen do<br />

konstruowania zestawów instrukcji<br />

sprawdzajacych okreslony warunek. Takie<br />

sprawdzanie w czasie rzeczywistym<br />

powinno odbywac sie z wykorzystaniem<br />

wyrazenia if w zdarzeniach klipu<br />

filmowego EnterFrame lub Mouse move.<br />

Kiedy Flash wykonuje petle, system<br />

pozostaje zamrozony, co oznacza, ze<br />

zarówno mysz, jak i klawiatura nie reaguja.<br />

• Upewnij sie, ze wartosc przyrostu zmiennej<br />

podajesz w nawiasach klamrowych<br />

towarzyszacych wyrazeniom while lub do<br />

while. Jesli tego nie uczynisz, warunek<br />

nigdy nie zostanie okreslony i Flash zacznie<br />

wykonywac petle nieskonczona ilosc razy.<br />

Na szczescie program ostrzega przed tym<br />

problemem w momencie, kiedy<br />

nieskonczona petla spowalnia dzialanie<br />

procesora (rys. 9.49).<br />

Zapetlanie wyrazen<br />

295


Rozdzial 9.<br />

296


Kontrolowanie tekstu 10<br />

Czesci skladowe jezyka HTML<br />

Na pewno wiesz, ze Flash umozliwia tworzenie przyciagajacych wzrok elementów tekstowych,<br />

w rodzaju tytulów, etykiet i opisów, towarzyszacych twojej animacji i dzwiekowi. Czy jednak<br />

spodziewales sie, ze oprócz okreslenia stylu, koloru i rozmiaru tekstu mozesz zrobic z nim cos<br />

wiecej? Tekst we Flashu jest naprawde zywy, co oznacza, ze uzytkownik moze wprowadzac go,<br />

a nawet zaznaczac i edytowac w czasie odtwarzania filmu. No i moze byc tez dynamiczny, czyli<br />

odswiezany podczas odtwarzania. Kazdy kolejny fragment tekstu wprowadzany przez odbiorce<br />

nazywa sie tekstem pobieranym, a tekst, który mozesz uaktualniac w czasie odtwarzania –<br />

tekstem dynamicznym. Zarówno pobierany, jak i dynamiczny tekst stwarzaja mozliwosc<br />

otrzymywania ze strony uzytkownika zlozonych informacji i dostosowywania filmu Flasha do<br />

tych danych. Mozna np. uzyc tekstu pobieranego do umozliwienia uzytkownikom wpisania ich<br />

imion, a potem spersonalizowania komunikatów pojawiajacych sie podczas odtwarzania filmu.<br />

Ciekawym pomyslem jest tez przygotowanie internetowego samouczka, korzystajacego z funkcji<br />

pobierania tekstu do wprowadzania krótkich odpowiedzi oraz tekstu dynamicznego do<br />

wyzwolenia odpowiedniej reakcji programu.<br />

Za pomoca palety Text Options definiuje sie pola tekstu pobieranego, do których uzytkownik<br />

wprowadza tekst, oraz pola dynamicznego tekstu, wyswietlajacego tekst zmieniajacy sie<br />

w zaleznosci od podanych kryteriów. Tekstom pobieranym przypisuje sie zmienne, dzieki czemu<br />

mozna przechowywac i modyfikowac informacje wprowadzane przez odbiorce, a takze sprawdzac<br />

je za pomoca wyrazen warunkowych. Takie fragmenty tekstu moga byc pózniej wykorzystywane<br />

w skryptach. Dwa obiekty kontrolujace informacje zawarte w pobieranym i dynamicznym tekscie<br />

– obiekt selekcji (Selection) i obiekt lancucha znakowego (String) – pozwalaja analizowac<br />

i manipulowac tekstem lub polozeniem kursora w obrebie pola tekstowego. Dzieki temu mozna<br />

np. wylapywac bledy w pisowni lub we wprowadzanych informacjach, zanim zostana<br />

wykorzystane w filmie Flasha lub przeniesione do zewnetrznej aplikacji w celu przetworzenia.<br />

Niniejszy rozdzial przedstawia niektóre z wielu mozliwosci, jakie niesie ze soba zastosowanie<br />

tekstu pobieranego i dynamicznego, a takze wprowadza cie w zagadnienia zwiazane z uzywaniem<br />

narzedzi kontrolujacych przeplyw informacji pomiedzy filmem Flasha i jego odbiorcami.<br />

Kontrolowanie tekstu<br />

297


Rozdzial 10.<br />

Tekst pobierany<br />

Tekst pobierany<br />

Projekty, które tworzysz we Flashu, moga byc<br />

tak zaprojektowane, by móc pobierac<br />

informacje bezposrednio od odbiorcy – np.<br />

nazwe identyfikujaca uzytkownika i haslo, dane<br />

osobowe potrzebne do przegladu, odpowiedzi<br />

na pytania konkursowe, zamówienia czy<br />

odpowiedzi w internetowych pogawedkach.<br />

Dane takie, nazywane we Flashu tekstem<br />

pobieranym (input text), przypisuje sie do<br />

zmiennych, dzieki czemu moga byc przesylane<br />

do przetworzenia w innych czesciach filmu lub<br />

wysylane do aplikacji serwerowej za pomoca<br />

metod GET i POST.<br />

Ponizsze cwiczenie demonstruje sposób<br />

umozliwienia odbiorcy kontrolowania<br />

parametrów akcji za posrednictwem tekstu<br />

pobieranego. W tym przypadku informacje beda<br />

pobierane od uzytkownika za pomoca bloku<br />

tekstowego, a nastepnie wykorzystywane do<br />

wczytania witryny sieciowej o podanym<br />

adresie URL.<br />

W celu uzycia tekstu pobieranego<br />

do zadania wczytania<br />

witryny sieciowej:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i narysuj na scenie pole tekstowe (rys. 10.1).<br />

2. Na palecie Text Options wybierz Input<br />

Text z rozwijanego menu (rys. 10.2).<br />

Aktualnie zaznaczone pole tekstowe<br />

przyjmie postac pola tekstu pobieranego,<br />

umozliwiajacego wprowadzanie tekstu<br />

w czasie odtwarzania filmu.<br />

3. W polu Variable palety Text Options wpisz<br />

nazwe zmiennej. Dowolny tekst<br />

wprowadzony podczas odtwarzania filmu<br />

zostanie przypisany i przechowany w tej<br />

zmiennej.<br />

4. Zaznacz pole Border/Bg. Twoje pole<br />

tekstowe bedzie teraz mialo czarna ramke<br />

i biale tlo (rys. 10.3).<br />

Uchwyt zmiany<br />

rozmiaru pola<br />

Rys. 10.1. Pole tekstowe tworzy sie za<br />

pomoca narzedzia tekstowego. Mozesz<br />

zmieniac rozmiar pola, przeciagajac uchwyt<br />

w jego prawym dolnym rogu<br />

Rys. 10.2. Takie ustawienia na palecie Text<br />

Options definiuja pole tekstowe jako pole<br />

tekstu pobieranego (Input Text)<br />

Rys. 10.3. Pole tekstowe z nieokreslona<br />

ramka i tlem (z lewej) jest widoczne na scenie<br />

w trybie edycji w postaci pola otoczonego<br />

kropkowana linia. Pole tekstowe, któremu<br />

przypisano ramke i wypelnienie (tlo)<br />

(z prawej), posiada czarna, ciagla ramke<br />

i biale tlo<br />

298


Kontrolowanie tekstu<br />

Rys. 10.4. Akcje przypisane do przycisku<br />

wczytuja do nowego okna przegladarki witryne<br />

sieciowa o adresie przechowywanym w zmiennej<br />

myURL<br />

Rys. 10.5. Zmienna w polu tekstu pobieranego<br />

jest uzywana jako adres URL dla akcji getURL.<br />

Zwróc uwage, ze w polu tekstowym musi byc<br />

podany protokól http://<br />

5. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie, ponizej pola tekstowego. Zaznacz<br />

przycisk i otwórz palete akcji.<br />

6. Wybierz Actions/on. W bloku edycji<br />

parametrów zaznacz zdarzenie Release.<br />

7. Wybierz Actions/getURL. W polu URL<br />

bloku edycji parametrów wpisz nazwe<br />

zmiennej pola tekstu pobieranego. Zaznacz<br />

pole wyboru Expression obok pola URL.<br />

W polu Window wybierz _blank<br />

(rys. 10.4).<br />

8. Przetestuj film.<br />

Kiedy odbiorca filmu wpisze adres URL<br />

w polu tekstowym, adres ten zostanie<br />

zapamietany pod postacia zmiennej.<br />

Nastepnie, po kliknieciu przycisku, Flash<br />

otworzy nowe okno w przegladarce i wczyta<br />

podana strone internetowa (rys. 10.5).<br />

Wskazówki<br />

• Opcje, które wybierzesz na paletach<br />

Character oraz Paragraph, np. font<br />

(czcionka), color (barwa) i alignment<br />

(wyrównanie), zostana przypisane do tekstu<br />

wpisywanego przez odbiorce filmu.<br />

• Istnieje mozliwosc umieszczania w polach<br />

tekstu pobieranego instrukcji na temat tego,<br />

co ma byc wpisane. Umiesc np. zdanie<br />

Tutaj wpisz adres witryny<br />

internetowej w bloku tekstowym w taki<br />

sposób, zeby odbiorca mógl zastapic je<br />

wybranym adresem URL. Mozesz tez<br />

wprowadzic poczatkowa czesc adresu,<br />

np. http://, a uzytkownik dopisze sobie<br />

reszte.<br />

Tekst pobierany<br />

299


Rozdzial 10.<br />

Tekst pobierany<br />

Opcje tekstu pobieranego<br />

Dla tekstu pobieranego – na palecie Text<br />

Options dostepnych jest wiele róznych opcji<br />

(rys. 10.6). Chociaz najwazniejszym polem do<br />

wypelnienia jest Variable, to za pomoca innych<br />

opcji mozesz modyfikowac sposób, w jaki<br />

odbiorca bedzie wprowadzal tekst.<br />

υ<br />

υ<br />

υ<br />

υ<br />

Single Line wymusza wyswietlanie<br />

wprowadzonego tekstu w jednej linii bloku<br />

tekstowego. Jesli dlugosc tekstu wykracza<br />

poza szerokosc bloku, to bedzie on<br />

przewijany horyzontalnie.<br />

Multiline umozliwia wyswietlanie tekstu<br />

w wiecej niz jednej linii bloku tekstowego,<br />

jesli uzytkownik wcisnie klawisz Enter<br />

w celu przejscia do nastepnej linii.<br />

Password ukrywa wpisywane znaki pod<br />

postacia gwiazdek. Uzyj tej opcji do<br />

ukrywania waznych informacji, np. hasla,<br />

przed wzrokiem ludzi zagladajacych<br />

odbiorcy filmu przez ramie.<br />

HTML zezwala na formatowanie tekstu<br />

w standardzie HTML 1.0 w celu<br />

poprawnego wyswietlania.<br />

υ<br />

υ<br />

υ<br />

υ<br />

Border/Bg rysuje czarna ramke wokól<br />

bloku tekstowego i wypelnia go bialym<br />

tlem. Nie zaznaczaj tej opcji, jesli blok<br />

tekstowy ma byc niewidoczny. Postaraj sie<br />

mimo wszystko oznaczac w jakis sposób<br />

bloki tekstowe na scenie, aby byly<br />

widoczne dla odbiorcy filmu.<br />

Word wrap, opcja pojawiajaca sie tylko<br />

po wybraniu innej opcji, Multiline.<br />

Automatycznie przenosi tekst do nastepnej<br />

linii jesli jego dlugosc przekracza szerokosc<br />

bloku.<br />

Max. Chars okresla maksymalna ilosc<br />

znaków mozliwych do wprowadzenia<br />

w bloku tekstowym. Jesli np. odbiorca ma<br />

wpisac nazwe stanu za pomoca<br />

dwuliterowego skrótu, wpisz w tym polu<br />

cyfre 2.<br />

Embed fonts dolacza fonty do<br />

eksportowanego pliku SWF, dzieki czemu<br />

w bloku tekstowym beda wyswietlane<br />

wygladzone fonty wybrane przez ciebie,<br />

a nie te, którymi akurat dysponuje odbiorca.<br />

Jednak pamietaj, ze zwieksza to objetosc<br />

pliku wynikowego.<br />

Rysuje ramke i tlo<br />

Typ tekstu<br />

Sposób wyswietlania<br />

tekstu (ilosc linii)<br />

Nazwa zmiennej<br />

Dolacza wszystkie fonty<br />

Wprowadza<br />

formatowanie HTML<br />

Maksymalna liczba<br />

znaków<br />

Dolacza wzory znaków<br />

specjalnych<br />

Dolacza wybrane fonty<br />

Rys. 10.6. Opcje dostepne na palecie Text Options pozwalaja<br />

zdefiniowac wlasciwosci bloku tekstowego<br />

300


Kontrolowanie tekstu<br />

Wiecej o osadzaniu czcionek i czcionkach systemowych<br />

Osadzenie czcionek w pliku z filmem Flasha<br />

daje pewnosc, ze odbiorca bedzie ogladal<br />

w czasie jego odtwarzania dokladnie takie<br />

fonty, jakich ty uzyles przy projektowaniu<br />

filmu. Domyslnie opcje osadzania czcionek<br />

uruchamia sie dla statycznego tekstu, ale<br />

w przypadku tekstu dynamicznego<br />

i pobieranego – musisz zdecydowac. Jesli nie<br />

dolaczysz czcionek do dokumentu, Flash uzyje<br />

ich najblizszych ekwiwalentów dostepnych<br />

w systemie odbiorcy, wyswietlajac je bez<br />

wygladzania (rys. 10.7).<br />

Dlaczego by wiec nie wybierac opcji osadzania<br />

czcionek za kazdym razem? Przede wszystkim<br />

dlatego, ze drastycznie zwieksza ona wielkosc<br />

eksportowanego pliku SWF z powodu<br />

dolaczania informacji potrzebnych do<br />

wyswietlenia okreslonego fontu.<br />

Tekst pobierany<br />

w fazie<br />

projektowania<br />

Tekst pobierany<br />

w czasie odtwarzania,<br />

z dolaczonym fontem<br />

Tekst pobierany w czasie odtwarzania,<br />

bez dolaczonego fontu<br />

Rys. 10.7. Tekst pobierany, korzystajacy<br />

z okreslonej czcionki w fazie powstawania<br />

projektu (u góry), jest wyswietlany podczas<br />

odtwarzania inaczej, niz na komputerze<br />

odbiorcy, który nie posiada w systemie<br />

odpowiednika czcionki uzytej przez projektanta,<br />

a niedolaczonej do pliku (u dolu)<br />

Jednak ostateczny rozmiar pliku mozna<br />

zmniejszyc, dolaczajac tylko te fonty,<br />

którymi uzytkownik bedzie sie poslugiwal<br />

przy wpisywaniu tekstu. Jesli np.<br />

wymagasz wprowadzania tylko wartosci<br />

numerycznych, dolacz jedynie wzory dla<br />

czcionek przedstawiajacych cyfry. Wtedy<br />

wszystkie cyfry beda dostepne w trakcie<br />

odtwarzania filmu, natomiast pozostale<br />

znaki w ogóle nie wyswietla sie na ekranie<br />

(beda niedostepne).<br />

Innym sposobem na zachowanie<br />

minimalnych rozmiarów pliku,<br />

a jednoczesnie wyeliminowanie problemu<br />

spowodowanego brakiem wlasciwych<br />

fontów po stronie odbiorcy, jest<br />

wykorzystanie czcionek systemowych.<br />

Czcionki te pojawiaja sie na koncu listy<br />

dostepnej w menu rozwijanym Font, a sa<br />

to _sans, _serif i _typewriter. Opcja ta<br />

wyszukuje fonty w systemie odbiorcy,<br />

najbardziej zblizone do okreslonego fontu<br />

systemowego. Oto lista odpowiedników<br />

fontów systemowych:<br />

υ<br />

υ<br />

υ<br />

Arial dla fontów typu _sans<br />

Times New Roman dla fontów typu<br />

_serif<br />

Courier New dla fontów typu<br />

_typewriter<br />

Kiedy uzywasz fontów systemowych,<br />

mozesz byc pewien, ze odbiorca widzi<br />

na ekranie tekst bardzo zblizony do tekstu,<br />

z którego korzystales, tworzac projekt.<br />

Jednak fonty systemowe maja tez dwie<br />

wady: sa wyswietlane bez wygladzania<br />

i nie moga byc animowane lub maskowane.<br />

Tekst pobierany<br />

301


Tekst dynamiczny<br />

Rozdzial 10.<br />

Tekst dynamiczny<br />

W przypadku tekstu, który ma zmieniac swoje<br />

wlasciwosci, jak np. punktacja w grze<br />

zrecznosciowej, wynik obliczen czy tez procent<br />

ilosci ujec twojego filmu Flasha, sciagnietych<br />

z sieci, najlepiej spisuje sie tekst dynamiczny.<br />

Podczas gdy bloki tekstu pobieranego akceptuja<br />

informacje dostarczane przez odbiorce, bloki<br />

tekstu dynamicznego przekazuja dane<br />

uzytkownikowi. Tak jak w przypadku tekstu<br />

pobieranego, równiez i tutaj mamy do czynienia<br />

ze zmienna, a jej zawartosc jest wlasnie tym, co<br />

widac bedzie w bloku tekstowym. W dodatku,<br />

opcje dynamicznego tekstu sa zgodne z tymi,<br />

które pojawiaja sie podczas edycji tekstu<br />

pobieranego, choc z jednym wyjatkiem: polem<br />

wyboru Selectable. Zaznaczenie tej opcji<br />

pozwoli uzytkownikowi zaznaczac i kopiowac<br />

tekst wyswietlany w bloku, ale uniemozliwi<br />

dokonywanie przez niego zmian.<br />

W kolejnym cwiczeniu przygotujemy zarówno<br />

bloki tekstu pobieranego, jak i dynamicznego.<br />

Po wprowadzeniu przez uzytkownika<br />

temperatury w stopniach Celsjusza w bloku<br />

tekstu pobieranego, Flash przeksztalci podana<br />

wartosc do skali Fahrenheita i wyswietli wynik<br />

w bloku tekstu dynamicznego.<br />

W celu uzycia tekstu dynamicznego<br />

do wyprowadzania<br />

informacji na ekran:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

narysowania bloku tekstowego.<br />

2. Na palecie Text Options, wybierz Input<br />

Text z pierwszego menu rozwijanego.<br />

W polu Variable wpisz nazwe zmiennej<br />

tekstu pobieranego (rys. 10.8).<br />

Aktualnie zaznaczony blok tekstowy<br />

przyjmie postac bloku tekstu pobieranego,<br />

umozliwiajac wprowadzanie informacji<br />

w czasie odtwarzania filmu.<br />

3. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i przeciagnij nim po scenie w celu<br />

narysowania kolejnego bloku tekstowego.<br />

Rys. 10.8. Blok tekstu pobieranego nazwij<br />

celsius<br />

302


Kontrolowanie tekstu<br />

Rys. 10.9. Blok tekstu dynamicznego<br />

nazwij fahrenheit<br />

Rys. 10.10. To wyrazenie oblicza wartosc<br />

zmiennej Fahrenheit na podstawie wyrazenia<br />

wprowadzonego w polu Value<br />

Blok tekstu<br />

pobieranego Celsius<br />

Blok tekstu dynamicznego<br />

Fahrenheit<br />

Rys. 10.11. Zawartosc bloku tekstu<br />

dynamicznego (Fahrenheit) jest uaktualniana<br />

po wprowadzeniu nowej informacji do bloku<br />

tekstu pobieranego (Celsius)<br />

• Wykorzystaj bloki dynamicznego tekstu,<br />

wyswietlajace zawartosc zmiennych jako<br />

narzedzie do wykrywania i usuwania bledów<br />

w programie. Jesli projektujesz<br />

rozbudowany film Flasha, korzystajacy<br />

z duzej ilosci zmiennych, mozesz utworzyc<br />

blok tekstu dynamicznego, wyswietlajacego<br />

aktualne wartosci zmiennych, a tym samym<br />

bedziesz wiedzial, w jaki sposób Flash<br />

przetwarza informacje. W rozdziale 12.<br />

zapoznasz sie z innymi jeszcze metodami<br />

sledzenia zmiennych, ale juz ta opisana<br />

powyzej pozwala dolaczyc do filmu<br />

narzedzie podgladu wartosci zmiennych.<br />

4. Na palecie Text Options, wybierz tym<br />

razem Dynamic Text z pierwszego menu<br />

rozwijanego.<br />

Aktualnie zaznaczony blok tekstowy<br />

przyjmie postac bloku tekstu dynamicznego,<br />

umozliwiajac wyswietlanie i uaktualnianie<br />

informacji za posrednictwem tego pola.<br />

5. W polu Variable palety Text Options<br />

wpisz nazwe zmiennej tekstu dynamicznego<br />

(rys. 10.9).<br />

6. Zaznacz obydwa bloki tekstowe i wybierz<br />

Insert/Convert to Symbol . Wpisz nazwe<br />

symbolu i wybierz opcje Movie Clip<br />

w typie Behavior . Kliknij OK.<br />

Flash umiesci obydwa bloki tekstowe<br />

w obrebie klipu filmowego, którego klon<br />

pozostanie na scenie.<br />

7. Zaznacz nowo utworzony klon klipu<br />

filmowego, zawierajacy przygotowane<br />

wczesniej bloki tekstowe i otwórz palete akcji.<br />

8. Wybierz Actions/onClipEvent. W bloku<br />

edycji parametrów zaznacz zdarzenie<br />

EnterFrame .<br />

9. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej tekstu<br />

dynamicznego. W polu Value wprowadz<br />

formule wykorzystujaca zmienna tekstu<br />

pobieranego. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 10.10).<br />

10. Przetestuj film. Flash wyswietla wartosc<br />

zmiennej tekstu dynamicznego na podstawie<br />

informacji wprowadzonej przez<br />

uzytkownika w bloku tekstu pobieranego<br />

(rys. 10.11). Obliczanie odbywa sie w czasie<br />

rzeczywistym, a wyswietlana informacja jest<br />

uaktualniana po kazdej zmianie zawartosci<br />

bloku tekstu pobieranego.<br />

Wskazówki<br />

• W powyzszym cwiczeniu zmienna tekstu<br />

jest dynamicznego uaktualniana nieustannie,<br />

poniewaz zawiera sie w detektorze<br />

onClipEvent (enterFrame).<br />

Tekst dynamiczny<br />

303


Rozdzial 10.<br />

Wiazanie tekstu<br />

Wiazanie tekstu<br />

Wykorzystanie dynamicznego tekstu do<br />

wiazania lub laczenia pobieranego tekstu<br />

z innymi zmiennymi i lancuchami znakowymi<br />

pozwala na bardziej elastyczna prace<br />

z wyrazeniami, a takze tworzenie<br />

spersonalizowanej interakcji Flasha z odbiorca.<br />

Uzytkownik moze np. zostac najpierw<br />

poproszony o wpisanie swojego imienia do<br />

bloku tekstu pobieranego o nazwie twojeImie.<br />

W polu tekstu dynamicznego mozesz ustawic<br />

jego zmienna tak:<br />

"Czesc, "+twojeImie+", witamy<br />

w programie Flash!"<br />

w efekcie czego odbiorca zobaczy swoje imie<br />

podstawione do komunikatu powitalnego.<br />

W jednym z wczesniejszych cwiczen tworzyles<br />

film Flasha wczytujacy witryne sieciowa<br />

o adresie wprowadzonym do bloku tekstu<br />

pobieranego. Wiazac zmienna myURL<br />

w wyrazeniu:<br />

"http://"+myURL<br />

eliminujesz potrzebe wpisywania przez<br />

uzytkownika schematu protokolu internetowego<br />

przed wlasciwym adresem witryny.<br />

Posluguj sie ta strategia, wraz z innymi<br />

akcjami Flasha, w tworzeniu elastycznych<br />

i edytowalnych funkcji oraz interfejsów.<br />

W ponizszym przykladzie powiazesz bloki<br />

tekstu pobieranego od klienta do<br />

automatycznego skompilowania informacji<br />

we wlasciwym porzadku, a nastepnie<br />

uzyjesz akcji print do wydrukowania<br />

kompletnego rachunku lub zamówienia.<br />

W celu<br />

powiazania bloków tekstowych<br />

na potrzeby wydruku:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i utwórz kilka bloków tekstu<br />

pobieranego. Za pomoca palety Text<br />

Options przypisz kazdemu z nich<br />

zmienna o unikalnej nazwie (rys. 10.12).<br />

2. Utwórz symbol klipu filmowego<br />

i przejdz do trybu edycji tego symbolu.<br />

3. Przypisz akcje stop do pierwszego<br />

ujecia kluczowego klipu filmowego.<br />

Pozostaw to ujecie kluczowe pustym.<br />

Akcja stop zapobiega odtwarzaniu tego<br />

klipu filmo wego w nieskonczonosc.<br />

Nazwa zmiennej bloku tekstu pobieranego = Name<br />

Nazwa zmiennej bloku tekstu pobieranego = Address<br />

Nazwa zmiennej bloku tekstu pobieranego = City<br />

Nazwa zmiennej bloku tekstu pobieranego = State<br />

Nazwa zmiennej bloku tekstu pobieranego = Zip<br />

Nazwa zmiennej bloku tekstu pobieranego = Widgets<br />

Rys. 10.12. Zdefiniuj szesc bloków tekstu pobieranego z unikalnymi nazwami zmiennych<br />

304


Kontrolowanie tekstu<br />

Dolacz wszystkie<br />

wykorzystane fonty<br />

Akcja stop w ujeciu kluczowym 1.<br />

Rys. 10.13. Blok dynamicznego tekstu jest<br />

umieszczony w ujeciu kluczowym 2., wraz<br />

z grafika gotowa do wydruku<br />

Ujecie<br />

kluczowe 2.<br />

z etykieta #p<br />

Grafika<br />

towarzyszaca<br />

Blok tekstu<br />

dynamicznego<br />

Ujecie<br />

kluczowe 7.<br />

z etykieta #b<br />

Kryjacy<br />

prostokat<br />

4. Nadaj nastepnemu ujeciu kluczowemu<br />

etykiete #p i utwórz w nim duzy blok tekstu<br />

dynamicznego. Na palecie Text Options,<br />

wybierz Multiline z menu rozwijanego,<br />

nastepnie wpisz nazwe zmiennej i zaznacz<br />

opcje Word wrap oraz Embed fonts, zeby<br />

dolaczyc do pliku potrzebne czcionki. Dodaj<br />

tez grafike, która bedzie pojawiac sie na<br />

wydruku (rys. 10.13).<br />

Blok tekstu dynamicznego bedzie<br />

wyswietlal powiazane informacje, a etykieta<br />

#p pozwoli na wydrukowanie oznaczonego<br />

nia ujecia kluczowego.<br />

5. Nadaj innemu ujeciu kluczowemu etykiete<br />

#b i narysuj duzy, kryjacy prostokat, który<br />

bedzie pokrywal obszar zajmowany przez<br />

blok dynamicznego tekstu, umieszczony<br />

w poprzednim ujeciu kluczowym<br />

(rys. 10.14).<br />

Etykieta #b wskazuje, ze to ujecie kluczowe<br />

stanowi obszar drukowany.<br />

6. Wróc do glównej listwy czasowej<br />

i przeciagnij na scene klon klipu filmowego<br />

z trzema utworzonymi wlasnie ujeciami<br />

kluczowymi. Nazwij klon orderform za<br />

posrednictwem pola Name palety Instance.<br />

7. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie.<br />

8. Zaznacz klon przycisku i na palecie akcji<br />

wybierz Actions/set variable.<br />

9. W polu Variable wprowadz sciezke dostepu<br />

do zmiennej tekstu dynamicznego. W polu<br />

Value wpisz kombinacje znaków<br />

i zmiennych tekstu pobieranego w celu<br />

powiazania informacji wprowadzanej przez<br />

uzytkownika w zwarta, drukowalna postac.<br />

Wiazanie tekstu<br />

Rys. 10.14. Kryjacy prostokat wyznacza obszar<br />

drukujacy sie dla wszystkich ujec kluczowych<br />

oznaczonych etykieta #p<br />

305


Rozdzial 10.<br />

Wiazanie tekstu<br />

Uzyj sekwencji opuszczania znaku, np. \r,<br />

do wprowadzenia przejsc do kolejnej linii.<br />

Zaznacz pole wyboru Expression obok pola<br />

Value (rys. 10.15)<br />

10. Na palecie akcji wybierz Actions/print.<br />

W menu rozwijanym Print wybierz<br />

As vectors, a nastepnie zaznacz Target<br />

w polu Location oraz wpisz nazwe klonu<br />

klipu filmowego orderform. Zaznacz pole<br />

wyboru Expression obok pola Location.<br />

W polu Bounding box wybierz opcje<br />

Movie (rys. 10.16).<br />

11. Przetestuj film. Kiedy odbiorca filmu<br />

wprowadzi dane do bloków tekstu<br />

pobieranego i kliknie przycisk, blok<br />

dynamicznego tekstu powiaze zmienne<br />

tekstu pobieranego i wyswietli odpowiednia<br />

informacje w ujeciu kluczowym z etykieta #p.<br />

Potem akcja print spowoduje wydrukowanie<br />

zawartosci tego ujecia (rys. 10.17).<br />

Wskazówki<br />

• Upewnij sie, ze w polu Name na palecie<br />

Instance wpisales nazwe dla klipu<br />

filmowego zawierajacego ujecie<br />

przeznaczone do wydruku. Nawet jesli nie<br />

potrzebujesz podawac sciezki dostepu do<br />

klipu z poziomu utworzonego przycisku,<br />

to nazwa ta musi zostac wprowadzona, jesli<br />

Flash ma wydrukowac zawartosc klipu<br />

filmowego.<br />

• Mozesz ukryc klip filmowy znajdujacy sie<br />

na scenie – a jednoczesnie nie utracic<br />

mozliwosci jego wydrukowania – ustawiajac<br />

wlasciwosc _visible na wartosc falsz<br />

(false). Zmiana tej wlasciwosci nie wplywa<br />

na sposób wydruku zawartosci klipu<br />

filmowego.<br />

• W przypadku drukowania zawartosci<br />

bloków dynamicznego tekstu wazne jest<br />

dolaczanie do pliku wykorzystanych fontów.<br />

Osiaga sie dzieki temu znacznie lepsza<br />

jakosc wydruku.<br />

Rys. 10.15. Sciezka dostepu do bloku tekstu<br />

dynamicznego o nazwie printOutput zawiera<br />

odwolanie do klipu filmowego orderform<br />

(formularz zamówienia). Blok tekstu<br />

dynamicznego wyswietla lancuch znakowy<br />

wiazacy zmienne tekstu pobieranego i podaje<br />

koncowy koszt zamówionych produktów<br />

(widgets), mnozac zmienna przez 5<br />

Rys. 10.16. Wyrazenie print przesyla dane<br />

zawarte w ujeciu z etykieta #p do drukarki<br />

Rys. 10.17. Film Flasha (u góry) udostepnia<br />

bloki tekstu pobieranego, których zawartosc<br />

jest kompilowana w bloku dynamicznego<br />

tekstu, a nastepnie drukowana (u dolu)<br />

306


Kontrolowanie tekstu<br />

Wyswietlanie tekstu HTML<br />

Flash umozliwia wyswietlanie w blokach tekstu<br />

dynamicznego dokumentów w formacie HTML<br />

1.0. Jesli wstawisz tekst do zmiennej bloku<br />

tekstu dynamicznego, wczesniej zaznaczajac<br />

wprowadzany dokument jako HTML, Flash<br />

zinterpretuje odpowiednio znaczniki i zachowa<br />

styl formatowania. Oznacza to tyle, ze mozesz<br />

integrowac dokumenty HTML z filmem Flasha,<br />

zachowujac wszystkie ich style i funkcjonalnosc<br />

punktów wezlowych HREF (czyli hiperlaczy).<br />

Znaczniki HTML<br />

zgodne z blokami tekstowymi Flasha<br />

υ<br />

υ<br />

υ<br />

υ<br />

υ<br />

υ<br />

υ<br />

υ<br />

Znacznik wykorzystywany do<br />

tworzenia hiperlaczy<br />

Styl pogrubiony pisma<br />

Kolor czcionki<br />

Rodzaj czcionki<br />

Rozmiar czcionki<br />

Styl pochyly pisma<br />

Akapit<br />

Styl podkreslony pisma<br />

Duze mozliwosci stwarza kombinacja tekstu<br />

HTML wczytanego do bloków tekstu<br />

dynamicznego za pomoca akcji<br />

loadVariablesNum. W celu uaktualnienia<br />

informacji wyswietlanych w czasie odtwarzania<br />

filmu wystarczy wówczas zmienic jedynie<br />

dokument HTML rezydujacy poza plikiem<br />

Flasha. To bardzo wygodne, gdyz w takiej<br />

sytuacji nie trzeba otwierac pliku Flasha w celu<br />

dokonania okresowych zmian. Wszystkie<br />

niezbedne uaktualnienia moze wykonac<br />

aplikacja serwerowa lub uzytkownik<br />

nieznajacy Flasha.<br />

Wyswietlanie tekstu HTML<br />

307


Rozdzial 10.<br />

Wyswietlanie tekstu HTML<br />

W celu wczytania i wyswietlenia<br />

dokumentu HTML<br />

w bloku dynamicznego tekstu:<br />

1. Uruchom dowolny edytor tekstu lub edytor<br />

HTML i utwórz swój dokument HTML. Na<br />

samym poczatku tekstu HTML wprowadz<br />

nazwe zmiennej i operator przypisania (znak<br />

równosci, =). Zapisz gotowy plik tekstowy<br />

(rys. 10.18).<br />

2. We Flashu – zaznacz pierwsze ujecie<br />

kluczowe na glównej listwie czasowej<br />

i otwórz palete akcji.<br />

3. Wybierz Actions/loadVariables. W polu<br />

URL wpisz nazwe utworzonego wczesniej<br />

dokumentu HTML. Pozostaw biezace<br />

ustawienie opcji Location (Level, liczba 0)<br />

(rys. 10.19).<br />

Flash wczyta plik tekstowy zawierajacy<br />

zmienna.<br />

4. Wybierz narzedzie tekstowe (Text Tool )<br />

i narysuj blok tekstowy o wielkosci<br />

zblizonej do rozmiarów sceny.<br />

5. Na palecie Text Options wybierz opcje<br />

Dynamic Text, Multiline i zaznacz pola<br />

HTML oraz Word wrap. Nadaj blokowi<br />

tekstowemu nazwe zmiennej (rys. 10.20).<br />

6. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz przycisk i otwórz palete<br />

akcji.<br />

7. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej tekstu<br />

dynamicznego. W polu Value wpisz nazwe<br />

zmiennej wprowadzonej w pliku tekstowym<br />

(rys. 10.21).<br />

Rys. 10.18. Tekst HTML zostal przypisany do<br />

zmiennej o nazwie HTMLpage i zapisany<br />

w oddzielnym dokumencie<br />

Rys. 10.19. Ta akcja kontrolujaca ujecia<br />

wczytuje plik variables.txt, zawierajacy<br />

zmienna przechowujaca tekst HTML<br />

Rys. 10.20. Nazwij blok tekstu dynamicznego<br />

displayMyPage<br />

Rys. 10.21. Zmienna tekstu dynamicznego<br />

o nazwie displayMyPage wyswietla zawartosc<br />

zmiennej HTMLpage<br />

308


Kontrolowanie tekstu<br />

Blok<br />

dynamicznego<br />

tekstu<br />

displayMyPage<br />

Rys. 10.22. Blok tekstu dynamicznego wyswietla<br />

teks w formacie HTML<br />

8. Wyeksportuj plik SWF do tej samej<br />

lokalizacji, w której znajduje sie<br />

przygotowany na poczatku plik tekstowy.<br />

Odtwórz plik SWF za pomoca przegladarki<br />

lub odtwarzacza Flasha.<br />

Kiedy uzytkownik kliknie przycisk, Flash<br />

podstawi zmienna tekstu dynamicznego do<br />

zewnetrznej zmiennej w pliku tekstowym,<br />

przechowujacej tekst w formacie HTML.<br />

W bloku dynamicznego tekstu wyswietlane<br />

beda informacje z zachowaniem stylu<br />

i formatu ustalonych za pomoca znaczników<br />

(rys. 10.22).<br />

Wskazówki<br />

• Jako ze tylko niektóre sposród znaczników<br />

HTML sa czytelne dla bloków<br />

dynamicznego tekstu, powinienes dokladnie<br />

sprawdzac swoje dokumenty pod katem<br />

poprawnosci wyswietlania. Jesli Flash nie<br />

rozpozna znacznika, to zostanie on<br />

zignorowany.<br />

• Znacznik w srodowiskach przegladarek<br />

pojawia sie normalnie jako podkreslony<br />

i w innym kolorze, natomiast we Flashu<br />

hiperlacze jest sygnalizo wane jedynie przez<br />

wskaznik myszy przyjmujacy postac<br />

„raczki”. Mozna jednak recznie ustawic<br />

kolor i styl podkreslony dla hiperlaczy,<br />

dodajac znaczniki (styl podkreslony)<br />

oraz


Animowanie dynamicznego tekstu<br />

Rozdzial 10.<br />

Animowanie<br />

dynamicznego tekstu<br />

Jesli przeksztalcisz bloki tekstu dynamicznego<br />

w symbole, to bedziesz mógl je animowac, tak<br />

jak robi sie to z wszystkimi innymi klonami<br />

symboli. Dzieki temu mozliwe staje sie<br />

tworzenie tytulów i bannerów reklamowych,<br />

które nie tylko dynamicznie zmieniaja<br />

zawartosc, ale takze przesuwaja sie po ekranie,<br />

obracaja i zmieniaja swoje rozmiary. Wyobraz<br />

sobie na przyklad sterowiec z przyczepiona do<br />

jego boku tablica wyników, podrózujacy wzdluz<br />

sceny. Jesli wykorzystasz owa tablice jako blok<br />

dynamicznego tekstu, bedziesz mógl<br />

uaktualniac wynik lub wyswietlac komunikaty<br />

za kazdym nastepnym przelotem sterowca.<br />

W podobny sposób mozna przygotowac monitor<br />

notowan gieldowych, z cenami akcji<br />

przesuwajacymi sie wzdluz ekranu. Jeszcze inny<br />

przyklad to gra, w której status gracza jest<br />

wyswietlany obok symbolizujacej go ikony,<br />

nawet jesli przemieszcza sie ona po scenie.<br />

W celu utworzenia przemieszczajacego sie<br />

bloku dynamicznego tekstu:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i utwórz blok tekstowy.<br />

2. Na palecie Text Options wybierz<br />

z kolejnych menu rozwijanych opcje<br />

Dynamic Text oraz Single Line. Wprowadz<br />

nazwe zmiennej (Variable) i osadz<br />

wszystkie potrzebne fonty (rys. 10.23).<br />

3. Z glównego paska menu wybierz<br />

Insert/Convert to Symbol . Nazwij swój<br />

symbol i w oknie dialogowym, które sie<br />

pojawi, wybierz Graphic w typie Behavior .<br />

Kliknij OK.<br />

Flash umiesci blok dynamicznego tekstu<br />

wewnatrz symbolu graficznego i wprowadzi<br />

jego klon na scene.<br />

Rys. 10.23. Zmienna dynamicznego tekstu<br />

nazwij display i osadz w pliku wszystkie fonty<br />

310


Kontrolowanie tekstu<br />

Klon symbolu graficznego zawierajacy<br />

blok dynamicznego tekstu<br />

Maska w warstwie 5.<br />

Grafika tla<br />

Rys. 10.24. Do listwy czasowej klipu filmowego<br />

tablicy wyników (blimp scoreboard) dolacz<br />

animowany klon symbolu graficznego,<br />

zawierajacego dynamiczny tekst. Grafika bedzie<br />

przemieszczac sie po scenie wraz z maska tablicy<br />

wyników<br />

Rys. 10.25. Nazwij blok tekstu pobieranego<br />

message (komunikat)<br />

4. Zaznacz klon symbolu graficznego i wybierz<br />

Insert/Convert to Symbol . Nazwij symbol<br />

i w oknie dialogowym, które sie pojawi,<br />

wybierz Movie Clip w typie Behavior.<br />

Kliknij OK.<br />

Flash umiesci symbol graficzny wewnatrz<br />

symbolu klipu filmowego i wprowadzi jego<br />

klon na scene.<br />

5. Za pomoca pola Name palety Instance<br />

nadaj nazwe dla klonu klipu filmowego.<br />

6. Przejdz do trybu edycji symbolu twojego<br />

klipu filmowego. Klip ten zawiera teraz klon<br />

symbolu graficznego, w którym z kolei<br />

umieszczony jest blok dynamicznego tekstu.<br />

7. Utwórz sekwencje animacji ruchu klonu<br />

symbolu graficznego przemieszczajacego sie<br />

po scenie (rys. 10.24).<br />

8. Wróc do glównej listwy czasowej. Wybierz<br />

narzedzie tekstowe (Text Tool) i utwórz<br />

kolejny blok tekstowy ponizej klonu klipu<br />

filmowego.<br />

9. Na palecie Text Options wybierz opcje<br />

Input Text i Single Line. Wprowadz nazwe<br />

zmiennej (Variable) dla tego bloku<br />

tekstowego (rys. 10.25).<br />

10. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji. Wybierz Actions/onClipEvent,<br />

a nastepnie zdarzenie EnterFrame.<br />

11. Wybierz Actions/set variable. W polu<br />

Variable wprowadz sciezke dostepu do<br />

zmiennej tekstu dynamicznego. W polu<br />

Value wprowadz sciezke dostepu do<br />

zmiennej tekstu pobieranego. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 10.26).<br />

Blok dynamicznego tekstu bedzie teraz<br />

nieustannie uaktualniany stosownie do<br />

zawartosci bloku tekstu pobieranego.<br />

Animowanie dynamicznego tekstu<br />

Rys. 10.26. Przypisz zmienna dynamicznego<br />

tekstu o nazwie display do zmiennej tekstu<br />

pobieranego, nazwanej message<br />

311


Rozdzial 10.<br />

Animowanie dynamicznego tekstu<br />

12. Przetestuj film.<br />

Informacja wprowadzona przez uzytkownika<br />

do bloku tekstu pobieranego zostanie<br />

przypisana do bloku tekstu dynamicznego,<br />

zawierajacego sie w animacji klipu<br />

filmowego. Uaktualniony tekst bedzie<br />

przesuwal sie po scenie (rys. 10.27).<br />

Wskazówki<br />

• Umiesc blok dynamicznego tekstu wewnatrz<br />

klipu filmowego i kontroluj jego wyglad za<br />

pomoca ActionScript. Uzyj akcji<br />

setProperty do modyfikowania<br />

wlasciwosci klipu filmowego – np. rotacji,<br />

przezroczystosci, umiejscowienia –<br />

a polozenie i wyglad bloku tekstowego beda<br />

sie zmieniac odpowiednio do wybranych<br />

ustawien.<br />

• Pamietaj, zeby dolaczac wszystkie fonty<br />

w przypadku dynamicznego tekstu, który<br />

ma byc animowany, lub który jest czescia<br />

maskowanej warstwy. Jesli tego nie zrobisz,<br />

blok tekstowy nie bedzie animowany we<br />

wlasciwy sposób albo zostanie przykryty<br />

maska.<br />

Tekst dynamiczny<br />

Tekst pobierany<br />

Rys. 10.27. Blok dynamicznego tekstu<br />

(u góry) wyswietla animacje dowolnego<br />

tekstu wprowadzonego przez uzytkownika<br />

do bloku tekstu pobieranego (u dolu)<br />

312


Kontrolowanie tekstu<br />

Widoczny fragment tekstu w bloku<br />

Scroll = 1<br />

Rys. 10.28. Wlasciwosc scroll okresla pierwsza<br />

widoczna linie tekstu<br />

Kontrolowanie przewijania bloku<br />

tekstowego<br />

Jesli informacja wprowadzana do bloku tekstu<br />

dynamicznego lub pobieranego przekracza<br />

zdefiniowane rozmiary bloku, Flash zaczyna<br />

przewijac tekst, dzieki czemu aktualnie<br />

edytowany fragment moze byc widoczny. Linie<br />

tekstu, które nie mieszcza w wyznaczonym<br />

obszarze, moga byc ukryte przed wzrokiem<br />

odbiorcy, ale mimo to pozostaja dla niego<br />

dostepne – wystarczy kliknac wewnatrz bloku<br />

tekstowego i przeniesc kursor w góre lub w dól.<br />

Mozna tez dynamiczne wyswietlac rózne linie<br />

tekstu, ukryte lub nie, kontrolujac pozycje<br />

pierwszej widocznej linii tekstu w bloku<br />

tekstowym. Umozliwiajaca to wlasciwosc nosi<br />

nazwe scroll (przewijanie). Górna linia<br />

przyjmuje wartosc 0 i zmienia sie wraz<br />

z przewijaniem nowych linii tekstu w góre<br />

lub w dól (rys. 10.28).<br />

Flash pozwala ci na odczytanie wartosci<br />

wlasciwosci scroll, dzieki czemu wiesz, na<br />

która dokladnie linie tekstu aktualnie patrzy<br />

odbiorca filmu. Mozliwe jest równiez<br />

modyfikowanie wartosci wlasciwosci scroll<br />

i tym samym wymuszanie na odbiorcy<br />

obejrzenia okreslonej linii tekstu. Zwykle<br />

tworzy sie interfejs w ten sposób, zeby<br />

uzytkownik mógl sam decydowac o przewijaniu<br />

tekstu, podobnie jak kontroluje paski<br />

przewijania w przegladarce czy dowolnym<br />

innym oknie na ekranie monitora. W ponizszym<br />

cwiczeniu utworzysz taki wlasnie interfejs.<br />

Przewijanie bloku tekstowego<br />

313


Rozdzial 10.<br />

Przewijanie bloku tekstowego<br />

W celu utworzenia<br />

przewijanego bloku tekstu<br />

pobieranego:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie, tworzac w ten<br />

sposób blok tekstowy.<br />

2. Na palecie Text Options, zaznacz opcje<br />

Input Text oraz Multiline w kolejnych<br />

menu rozwijanych. Zaznacz pola wyboru<br />

Border/Bg i Word wrap. W polu Variable<br />

wpisz nazwe bloku tekstu pobieranego<br />

(rys. 10.29).<br />

3. Utwórz symbol przycisku w ksztalcie<br />

strzalki zwróconej w góre. Umiesc klon<br />

przycisku na scenie.<br />

4. Umiesc na scenie kolejny klon przycisku<br />

i wybierz Modify/Transform/Flip Vertical,<br />

dzieki czemu druga strzalka skierowana<br />

bedzie w dól. Wyrównaj obydwa przyciski<br />

w pionie, ustawiajac je obok bloku tekstu<br />

pobieranego (rys. 10.30).<br />

5. Zaznacz przycisk strzalki w góre i otwórz<br />

palete akcji. Wybierz Actions/on. Zaznacz<br />

zdarzenie Press.<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej pressing<br />

(naciskanie). W polu Value wpisz wartosc<br />

logiczna true (prawda). Zaznacz pole<br />

wyboru Expression obok pola Value.<br />

7. Ponownie wybierz Actions/set variable.<br />

W polu Variable wpisz nazwe zmiennej<br />

movement (ruch). W polu Value wpisz<br />

cyfre –1 i zaznacz pole wyboru Expression<br />

(rys. 10.31).<br />

Po nacisnieciu klawisza myszy zmienna<br />

pressing przyjmie wartosc true, a zmienna<br />

movement wartosc –1.<br />

8. Wybierz Actions/on. Zaznacz zdarzenie<br />

Release.<br />

Rys. 10.29. Nazwij blok tekstu pobieranego<br />

scrollwindow (okno przewijane)<br />

Blok tekstu pobieranego<br />

Rys. 10.30. Umiesc dwa przyciski obok bloku<br />

tekstu pobieranego<br />

Rys. 10.31. Klikniecie przycisku strzalki do<br />

góry przypisuje zmiennej pressing wartosc<br />

true i zmiennej movement wartosc –1<br />

Klon pierwszego<br />

przycisku<br />

Klon drugiego<br />

przycisku<br />

314


Kontrolowanie tekstu<br />

Rys. 10.32. Zwolnienie przycisku strzalki w góre<br />

przypisuje zmiennej pressing wartosc false<br />

Rys. 10.33. Kompletny skrypt dla przycisku<br />

strzalki w dól, tak jak jest widoczny w oknie<br />

skryptu palety akcji<br />

Rys. 10.34. Akcje przypisane do klipu filmowego<br />

dodaja wartosc zmiennej movement do<br />

wlasciwosci scroll bloku tekstowego<br />

scrollwindow, jesli zmienna pressing ma<br />

wartosc true<br />

Rys. 10.35. Przyciski po prawej zwiekszaja lub<br />

zmniejszaja wartosc wlasciwosci scroll bloku<br />

tekstu pobieranego<br />

9. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej pressing.<br />

W polu Value wp isz wartosc logiczna<br />

false (falsz) i zaznacz pole wyboru<br />

Expression.<br />

Po zwolnieniu klawisza myszy zmienna<br />

pressing przyjmie wartosc false<br />

(rys. 10.32).<br />

10. Zaznacz przycisk strzalki w dól i wprowadz<br />

te same wyrazenia w oknie skryptu palety<br />

akcji, z wyjatkiem p rzypisania do zmiennej<br />

movement wartosci 1 w momencie<br />

nacisniecia klawisza myszy (rys. 10.33).<br />

11. Zaznacz obydwa przyciski i wybierz<br />

Insert/Convert to Symbol . Wprowadz<br />

nazwe symbolu i wybierz opcje Movie Clip<br />

w typie Behavior. Kliknij OK.<br />

Utworzone klawisze strzalek zostana<br />

wprowadzone do symbolu klipu filmowego.<br />

Klon klipu pozostanie na scenie.<br />

12. Zaznacz klon klipu filmowego<br />

zawierajacego dwa przyciski i na palecie<br />

akcji wybierz Actions/onClipEvent.<br />

Wybierz zdarzenie EnterFrame.<br />

13. Wybierz Actions/if. W polu Condition<br />

wpisz:<br />

this.pressing == true<br />

14. Wybierz Actions/set variable. W polu<br />

Variable wprowadz pelna sciezke dostepu<br />

do zmiennej tekstu pobieranego, a nastepnie<br />

kropke i wlasciwosc scroll. W polu Value<br />

wprowadz pelna sciezke dostepu do<br />

zmiennej tekstu pobieranego, nastepnie<br />

kropke i wlasciwosc scroll, po czym dodaj<br />

wartosc zmiennej this.movement.<br />

Zaznacz pole Expression (rys. 10.34).<br />

Flash sprawdzi, czy kliknieto którys<br />

z przycisków. Jesli tak, program doda<br />

wartosc zmiennej movement do biezacej<br />

wartosci scroll. W przypadku wcisniecia<br />

górnej strzalki wartosc scroll zmniejszy<br />

sie o 1. Jesli to dolna strzalka zostala<br />

wcisnieta, wartosc scroll zwiekszy sie o 1<br />

(rys. 10.35).<br />

Przewijanie bloku tekstowego<br />

315


Rozdzial 10.<br />

Przewijanie bloku tekstowego<br />

Podczas gdy wlasciwosc scroll okresla<br />

pierwsza widoczna linie w bloku tekstowym,<br />

wlasciwosc maxscroll definiuje maksymalna<br />

dozwolona wartosc wlasciwosci scroll w tym<br />

bloku tekstowym. Oznacza ona linie u szczytu<br />

bloku w momencie, kiedy widoczna jest ostatnia<br />

w ogóle linia tekstu (rys. 10.36). Nie mozna<br />

zmieniac wartosci maxscroll, jako ze<br />

definiuje ja dlugosc i rozmiar tekstu w bloku,<br />

ale mozliwe jest odczytanie jej wartosci.<br />

Przypisz wartosc maxscroll do wlasciwosci<br />

scroll, a bedziesz mógl automatycznie<br />

przewinac tekst do dolnej czesci bloku.<br />

Ewentualnie oblicz wartosc scroll w proporcji<br />

do maxscroll i zbuduj przeciagany pasek<br />

przewijania, odzwierciedlajacy i kontrolujacy<br />

pozycje tekstu w obrebie bloku tekstowego.<br />

W celu przewiniecia tekstu<br />

do konca bloku tekstowego:<br />

1. Kontynuujac poprzednie cwiczenie, utwórz<br />

nowy symbol przycisku i umiesc jego klon<br />

na scenie.<br />

2. Zaznacz przycisk i otwórz palete akcji.<br />

wybierz Actions/set variable.<br />

3. W polu Variable wpisz nazwe zmiennej<br />

tekstu pobieranego, kropke i wlasciwosc<br />

scroll. W polu Value wpisz nazwe<br />

zmiennej tekstu pobieranego, kropke<br />

i wlasciwosc maxscroll. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 10.37).<br />

Po kliknieciu przycisku biezaca wartosc<br />

maxscroll zostanie przypisana do<br />

wlasciwosci scroll bloku tekstu<br />

pobieranego. Wówczas tekst zostanie<br />

automatycznie przewiniety, dzieki czemu<br />

widoczna stanie sie ostatnia linia.<br />

Widoczna czesc bloku tekstowego<br />

Wlasciwosc<br />

maxscroll<br />

Rys. 10.36. W tym przykladzie maxscroll = 4<br />

Rys. 10.37. Wartosc maxscroll jest<br />

przypisywana do wlasciwosci scroll bloku<br />

tekstowego scrollwindow<br />

316


Kontrolowanie tekstu<br />

Manipulowanie<br />

lancuchami znakowymi<br />

Definiujac blok tekstowy jako blok tekstu<br />

pobieranego, dajesz odbiorcy mozliwosc<br />

wprowadzania i edytowania informacji. Wiesz<br />

juz, jak taka informacja moze zostac uzyta<br />

w wyrazeniach z innymi akcjami, czy tez<br />

dowiazana i wyswietlana w blokach<br />

dynamicznego tekstu. Jednak, czesto konieczne<br />

jest przeanalizowanie tekstu, wprowadzonego<br />

przez uzytkownika, przed wykorzystaniem go.<br />

Byc moze trzeba bedzie usunac pewne slowa<br />

lub zlokalizowac okreslony znak czy tez<br />

sekwencje znaków. Na przyklad, jesli<br />

wymagasz od odbiorcy wprowadzenia adresu<br />

e-mail, mozesz sprawdzic, czy podano adres we<br />

wlasciwej formie, wyszukujac symbol @.<br />

Mozna tez w podobny sposób sprawdzic numer<br />

telefonu klienta, okreslic numer kierunkowy na<br />

podstawie trzech pierwszych cyfr<br />

i spersonalizowac zasoby odbiorcy lub liste<br />

nowosci, podajac lokalne zainteresowania.<br />

Ten rodzaj sprawdzania, manipulowania<br />

i kontrolowania informacji wprowadzonej do<br />

bloku tekstu pobieranego odbywa sie dzieki<br />

kombinacji obiektu selekcji (Selection)<br />

i obiektu lancucha znakowego (String). Obiekt<br />

selekcji pozwala okreslic, który blok tekstowy<br />

jest aktualnie zaznaczony, a takze kontrolowac<br />

pozycje kursora w obrebie tego bloku. Obiekt<br />

lancucha znakowego umozliwia odczytywanie<br />

i zmienianie wlasciwosci informacji<br />

wprowadzonych do bloku tekstu pobieranego.<br />

Manipulowanie lancuchami znakowymi<br />

317


Rozdzial 10.<br />

Obiekt selekcji<br />

Obiekt selekcji odpowiada za kontrole<br />

zaznaczenia tekstu w bloku tekstu pobieranego.<br />

W odróznieniu od wiekszosci innych obiektów,<br />

obiekt selekcji nie potrzebuje funkcji<br />

konstruktora do przygotowania klonu, zanim<br />

bedziesz mógl go uzyc. Wynika to z faktu, ze<br />

w filmie Flasha moze istniec naraz tylko jedna<br />

pozycja kursora lub jedno zaznaczenie<br />

(co oznacza, ze w danej chwili uzytkownik<br />

moze wpisywac lub selekcjonowac tekst tylko<br />

w jednym bloku tekstowym). Tak wiec obiekt<br />

selekcji bedzie zawsze odnosil sie do tej jednej<br />

pozycji kursora lub zaznaczenia w bloku<br />

tekstowym tekstu pobieranego lub<br />

dynamicznego.<br />

Obiekt selekcji<br />

Metody obiektu selekcji oddzialuja na dwie<br />

wlasciwosci bloku tekstowego: okreslenie<br />

w lancuchu tekstowym miejsca, w którym<br />

znajduje sie kursor, oraz, ustalenie aktualnie<br />

aktywnego – inaczej zogniskowanego – bloku<br />

tekstowego. Metody obiektu selekcji<br />

wymieniono w tabeli 10.1.<br />

Tabela 10.1. Metody obiektu selekcji<br />

Metoda<br />

getBeginIndex()<br />

getEndIndex()<br />

getCaretIndex()<br />

setSelection(beginIndex,<br />

endIndex)<br />

getFocus()<br />

Opis<br />

Odczytuje indeks poczatku selekcji.<br />

Odczytuje indeks konca selekcji.<br />

Odczytuje indeks pozycji kursora.<br />

Ustawia selekcje wedlug okreslonych indeksów poczatku oraz konca.<br />

Odczytuje nazwe zmiennej aktywnego w danym momencie bloku<br />

tekstowego.<br />

setFocus(variableName) Ustawia ogniskowanie bloku tekstowego o podanej nazwie zmiennej,<br />

dzieki czemu mozna odczytywac informacje o tekscie zawartym<br />

w danym bloku tekstowym, jesli istnieje kilka bloków tekstowych.<br />

318


Kontrolowanie tekstu<br />

Rys. 10.38. Nazwij blok tekstu pobieranego<br />

mySelection (moje zaznaczenie)<br />

Rys. 10.39. Nazwij blok tekstu dynamicznego<br />

myIndex (mój indeks)<br />

Kontrolowanie selekcji wewnatrz<br />

bloków tekstowych<br />

Istnieje mozliwosc kontrolowania selekcji lub<br />

pozycji kursora wewnatrz edytowalnych bloków<br />

tekstowych. Pozwala to kierowac uwage<br />

odbiorcy na okreslone znaki lub wprowadzane<br />

przez niego slowa, byc moze w celu wskazania<br />

ewentualnych bledów w pisowni. Poza tym<br />

mozesz sledzic polozenie kursora, podobnie jak<br />

dzieki wlasciwosciom _xmouse i _ymouse<br />

okresla sie lokalizacje wskaznika myszy<br />

uzytkownika.<br />

Pozycja kazdego znaku w lancuchu znakowym<br />

jest numerowana i uzywana w postaci<br />

wskaznika na potrzeby metod obiektu selekcji.<br />

Pierwszy znak otrzymuje indeks 0, nastepny 1,<br />

itd. Jesli kursor nie znajduje sie wewnatrz bloku<br />

tekstowego w momencie, kiedy Flash odczytuje<br />

indeks zaznaczenia, zwracana jest wartosc –1.<br />

W celu<br />

zidentyfikowania pozycji kursora<br />

w bloku tekstowym:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Multiline z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable). Zaznacz pola<br />

Border/Bg i Word wrap (rys. 10.38).<br />

2. Wybierz narzedzie tekstowe (Text Tool)<br />

i przeciagnij nim po scenie w celu utworzenia<br />

kolejnego bloku tekstowego. Na palecie Text<br />

Options, wybierz Dynamic Text oraz<br />

Multiline z kolejnych menu rozwijanych.<br />

Przydziel dla bloku dynamicznego tekstu<br />

nazwe zmiennej (Variable). Zaznacz pole<br />

Border/Bg (rys. 10.39).<br />

3. Zaznacz obydwa bloki tekstowe i wybierz<br />

Insert/Convert to Symbol . Nazwij symbol<br />

i wybierz opcje Movie Clip w typie<br />

Behavior. Kliknij OK.<br />

Kontrolowanie selekcji<br />

319


Rozdzial 10.<br />

Kontrolowanie selekcji<br />

Obydwa twoje bloki tekstowe zostana<br />

umieszczone wewnatrz symbolu klipu<br />

filmowego, którego klon pozostanie obecny<br />

na scenie.<br />

4. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji. Wybierz Actions/onClipEvent.<br />

Zaznacz zdarzenie enterFrame.<br />

5. Wybierz Actions/set variable. Umiesc<br />

kursor w polu Value i wybierz Objects/<br />

Selection/getCaretIndex (rys. 10.40).<br />

W polu Value pojawi sie metoda<br />

getCaretIndex. Zaznacz pole Expression.<br />

6. Przetestuj film.<br />

Na poczatku blok dynamicznego tekstu<br />

wyswietla wartosc –1, z uwagi na to, iz blok<br />

tekstu pobieranego nie jest aktualnie<br />

zogniskowany. Kiedy odbiorca rozpocznie<br />

wpisywanie tekstu w bloku tekstu<br />

pobieranego, Flash uaktualni blok<br />

dynamicznego tekstu, wyswietlajac pozycje<br />

kursora (rys. 10.41).<br />

W celu zmiany selekcji<br />

w obrebie bloku tekstowego:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

klon klipu filmowego i otwórz palete akcji.<br />

2. Dodaj wyrazenie za akcja set variable,<br />

wybierajac Actions/if.<br />

3. W polu Condition wpisz:<br />

Key.isDown(Key.ENTER)<br />

Flash sprawdzi, czy nacisniety zostal<br />

klawisz Enter.<br />

4. Wybierz Actions/evaluate .<br />

Rys. 10.40. Flash przypisuje pozycje kursora<br />

(caret, karetke) zmiennej myIndex<br />

Rys. 10.41. Biezacy indeks kursora to 12.<br />

Pierwsza litera „T” ma indeks 0. Odstep<br />

pomiedzy wyrazami „position” i „of” ma<br />

indeks 12<br />

320


Kontrolowanie tekstu<br />

Rys. 10.42. Powyzsza metoda setSelection<br />

zaznacza znaki wprowadzone miedzy<br />

parametrami beginIndex i endIndex<br />

Rys. 10.43. Powyzsza metoda setSelection<br />

zaznacza znaki wprowadzone miedzy pierwszym<br />

znakiem i biezaca pozycja kursora<br />

Rys. 10.44. Uzytkownik wpisuje tekst do bloku<br />

tekstu pobieranego (z lewej). Po wcisnieciu<br />

klawisza Enter, Flash automatycznie zaznacza<br />

tekst (z prawej). Indeks u dolu zmienia wartosc<br />

z 30 na 31, poniewaz uzycie Entera liczy sie jako<br />

kolejna pozycja indeksu<br />

5. Umiesc kursor w polu Expression i wybierz<br />

Objects/Selection/setSelection.<br />

W polu Expression pojawi sie metoda<br />

setSelection(beginIndex,<br />

endIndex)(rys. 10.42).<br />

6. W miejsce parametru beginIndex wpisz 0.<br />

Zmien parametr endIndex, wybierajac<br />

Objects/Selection/getCaretIndex<br />

(rys. 10.43).<br />

7. Przetestuj film.<br />

Kiedy uzytkownik zacznie wpisywac tekst<br />

do bloku tekstu pobieranego, blok<br />

dynamicznego tekstu wyswietli indeks<br />

kursora. Po wcisnieciu klawisza Enter<br />

wywolywana jest metoda setSelection.<br />

Metoda ta powoduje zaznaczenie znaków<br />

wpisanych pomiedzy indeksem 0<br />

(pierwszym znakiem) i biezaca pozycja<br />

kursora, czyli zostaje zaznaczone wszystko,<br />

co uzytkownik wpisal (rys. 10.44).<br />

Kontrolowanie selekcji<br />

321


Rozdzial 10.<br />

Ogniskowanie bloków tekstowych<br />

Ogniskowanie<br />

bloków tekstowych<br />

Jesli masz na scenie wiele bloków tekstowych,<br />

musisz miec mozliwosc kontrolowania, który<br />

z nich jest w danym momencie aktywny lub<br />

zogniskowany, zanim bedziesz mógl odczytac<br />

albo przypisac pozycje kursora czy tez selekcji.<br />

Do tego celu sluza metody getFocus<br />

i setFocus obiektu selekcji.<br />

Metoda getFocus zwraca lancuch znakowy<br />

zawierajacy bezwzgledna sciezke dostepu do<br />

bloku tekstowego, korzystajac z instrukcji<br />

_level0. Przykladowo, jesli aktualn ie<br />

zaznaczony blok tekstowy o nazwie twojeImie<br />

znajduje sie w glównej listwie czasowej, a ty<br />

wywolasz metode getFocus, zostanie<br />

zwrócona nastepujaca wartosc:<br />

"_level0.twojeImie"<br />

Musisz zapamietac, ze zwracana wartosc jest<br />

lancuchem znakowym, a uzyto instrukcji<br />

_level0. Jesli przyrównasz wartosc getFocus<br />

do sciezki, uzywajac _root lub this,<br />

ewentualnie zapomnisz o znaku cudzyslowu,<br />

Flash nie rozpozna sciezki. Jesli na scenie nie<br />

ma aktualnie zogniskowanego bloku<br />

tekstowego, metoda getFocus zwraca wartosc<br />

null (nic).<br />

Podobnie jak getFocus, równiez metoda<br />

setFocus wymaga uzycia lancucha znakowego<br />

i bezwzglednej sciezki dostepu do bloku<br />

tekstowego. Mozesz jednak w tym wypadku<br />

korzystac z instrukcji _level0 lub _root.<br />

W kolejnym cwiczeniu utworzysz kilka bloków<br />

tekstu pobieranego. W zaleznosci od tego, który<br />

blok tekstowy wybierze uzytkownik, blok<br />

dynamicznego tekstu bedzie wyswietlal<br />

odpowiedni komunikat.<br />

322


Kontrolowanie tekstu<br />

Rys. 10.45. Utwórz trzy bloki tekstu pobieranego<br />

(pokazano tu wyglad palety Text Options dla<br />

srodkowego bloku) (u góry) i jeden blok<br />

dynamicznego tekstu (u dolu)<br />

Rys. 10.46. Jesli metoda getFocus zwraca<br />

wartosc null, to znaczy, ze zaden z bloków<br />

tekstowych nie zostal zogniskowany<br />

W celu zogniskowania<br />

bloku tekstowego:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Single Line z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable).<br />

2. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i utwórz kolejne dwa bloki<br />

tekstu pobieranego. Przydziel kazdemu<br />

z nich unikalna nazwe zmiennej.<br />

3. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia czwartego bloku tekstowego.<br />

Na palecie Text Options, wybierz Dynamic<br />

Text oraz Multiline z kolejnych menu<br />

rozwijanych. Zaznacz pole Word wrap.<br />

Wprowadz nazwe zmiennej dla bloku<br />

dynamicznego tekstu (rys. 10.45).<br />

4. Zaznacz wszystkie bloki tekstowe i wybierz<br />

Insert/Convert to Symbol . Wpisz nazwe<br />

symbolu i wybierz opcje Movie Clip<br />

w typie Behavior, po czym kliknij OK.<br />

Utworzone bloki tekstowe zostana<br />

umieszczone w symbolu klipu filmowego,<br />

którego klon pozostanie obecny na scenie.<br />

5. Nazwij klip filmowy za pomoca pola Name<br />

palety Instance.<br />

6. Majac zaznaczony klon klipu filmowego,<br />

otwórz palete akcji. Wybierz<br />

Actions/onClipEvent. Zaznacz zdarzenie<br />

enterFrame .<br />

7. Wybierz Actions/if.<br />

8. Majac kursor w polu Condition, wybierz<br />

Objects/Selection/getFocus. W polu<br />

Condition pojawi sie metoda getFocus.<br />

9. Dopisz w polu Condition == null<br />

(rys. 10.46).<br />

Flash sprawdzi, czy uzytkownik nie<br />

zaznaczyl któregos z bloków tekstowych.<br />

Ogniskowanie bloków tekstowych<br />

323


Rozdzial 10.<br />

10. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej bloku<br />

dynamicznego tekstu. W polu Value wpisz<br />

tresc komunikatu nakazujacego odbiorcy<br />

zaznaczyc blok tekstowy (rys. 10.47).<br />

11. Wybierz Actions/else if. W polu Condition<br />

wybierz metode getFocus i przyrównaj<br />

zwracana przez nia wartosc do sciezki<br />

dostepu do zmiennej pierwszego bloku<br />

tekstu pobieranego (rys. 10.48).<br />

Rys. 10.47. Komunikat wpisany do pola<br />

Value pojawi sie w bloku dynamicznego<br />

tekstu o nazwie display<br />

Ogniskowanie bloków tekstowych<br />

12. Wybierz Actions/set variable. Przypisz<br />

zmiennej dynamicznego tekstu komunikat<br />

zawierajacy instrukcje dla uzytkownika<br />

(rys. 10.49).<br />

13. Dodaj kolejne dwa warunki else if i ustal,<br />

zeby blok dynamicznego tekstu zmienial<br />

swoja zawartosc w momencie spelnienia<br />

kazdego z warunków. Kompletny skrypt<br />

powinien wygladac jak na rys. 10.50.<br />

14. Przetestuj film.<br />

Kiedy uzytkownik oglada film Flasha po raz<br />

pierwszy, zaden z bloków tekstowych nie<br />

jest zogniskowany, ale komunikat<br />

wyswietlany w bloku dynamicznego tekstu<br />

mówi mu, co ma zrobic. Jesli odbiorca<br />

zaznaczy blok tekstowy, Flash natychmiast<br />

rozpozna, o który blok chodzi (rys. 10.51).<br />

Rys. 10.48. Flash sprawdza, czy blok tekstu<br />

pobieranego o nazwie name, umieszczony<br />

w klipie filmowym myMovieClip, jest<br />

aktualnie zaznaczony<br />

Zaden z bloków tekstu<br />

pobieranego nie jest<br />

aktualnie zogniskowany<br />

Blok dynamicznego tekstu<br />

Zogniskowany jest<br />

blok tekstowy name<br />

Blok dynamicznego tekstu<br />

Rys. 10.51. Dla kazdego zogniskowanego bloku<br />

tekstowego pojawia sie inny komunikat. Powyzszy<br />

przyklad ilustruje sytuacje, kiedy zaden z bloków<br />

nie jest aktywny (u góry) oraz kiedy<br />

zogniskowano górny blok tekstowy (u dolu)<br />

Rys. 10.49. Komunikat wpisany w polu Value<br />

pojawia sie w bloku dynamicznego tekstu<br />

o nazwie display<br />

Rys. 10.50. Kompletny skrypt zawiera<br />

wayrazenia warunkowe dla kazdego<br />

zogniskowanego bloku tekstowego<br />

324


Kontrolowanie tekstu<br />

Rys.10.52. Ponizej pierwszego warunku else if<br />

wstaw warunek sprawdzajacy, czy wcisnieto<br />

klawisz Enter<br />

Rys. 10.53. Ta metoda setFocus ogniskuje blok<br />

tekstu pobieranego o nazwie address (adres),<br />

rezydujacy w klipie filmowym myMovieClip<br />

Rys. 10.54. Kompletny skrypt zawiera warunki<br />

niezbedne do zogniskowania nastepnego bloku<br />

tekstu pobieranego po wcisnieciu klawisza Enter<br />

W celu wybrania aktywnego<br />

bloku tekstowego:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

klon klipu filmowego i otwórz palete akcji.<br />

2. Zaznacz pierwsze wyrazenie else if.<br />

Dopisz ponizej wyrazenie if. W polu<br />

Condition wpisz:<br />

Key.isDown (Key.ENTER)<br />

Jest to instrukcja, która nakazuje Flashowi<br />

sprawdzic, czy uzytkownik nacisnal klawisz<br />

Enter w momencie, kiedy pierwszy blok<br />

tekstowy jest zogniskowany (rys. 10.52).<br />

3. Wybierz Actions/evaluate . Majac kursor<br />

w polu Expression, wybierz<br />

Objects/Selection/setFocus.<br />

W polu Expression pojawi sie metoda<br />

setFocus, z podswietlonym parametrem<br />

variableName.<br />

4. W miejsce parametru variableName<br />

wprowadz bezwzgledna scie zke dostepu do<br />

zmiennej drugiego bloku tekstu<br />

pobieranego, uzywajac znaku cudzyslowu<br />

(rys. 10.53).<br />

Flash zogniskuje teraz nastepny blok<br />

tekstowy.<br />

5. Kontynuuj dodawanie wyrazen<br />

warunkowych i metod setFocus dla<br />

pozostalych dwóch linii skryptu else if<br />

(rys. 10.54).<br />

6. Przetestuj film.<br />

Kiedy uzytkownik wprowadzi tekst do<br />

pierwszego bloku tekstu pobieranego<br />

i wcisnie klawisz Enter, Flash zogniskuje<br />

nastepny blok tekstu pobieranego, dzieki<br />

czemu uzytkownik bedzie mógl<br />

kontynuowac wprowadzanie informacji bez<br />

potrzeby klikania odpowiedniego bloku<br />

w celu jego uaktywnienia. Uzyj<br />

przedstawionej metody przygotowania<br />

interfejsu kontroli zaznaczania bloków<br />

tekstowych za pomoca klawisza Tab.<br />

Ogniskowanie bloków tekstowych<br />

325


Rozdzial 10.<br />

Obiekt lancucha znakowego<br />

Obiekt lancucha znakowego<br />

Metody i wlasciwosci mozna przypisac do<br />

obiektu lancucha znakowego w celu<br />

analizowania i manipulowania danymi<br />

znakowymi. Obiekt lancucha moze powiedziec<br />

ci np., gdzie znajduje sie okreslony znak, czy<br />

tez jaki znak znajduje sie na wskazanej pozycji.<br />

Mozliwe jest takze wyciecie fragmentu<br />

lancucha (nazywanego podl ancuchem)<br />

i wstawienie go do innego, jak równiez wiazanie<br />

lancuchów i podlancuchów. Obiekt lancucha<br />

znakowego pozwala zmieniac fragmenty<br />

lancucha znakowego na pisane wielkimi lub<br />

malymi literami. Rózne metody i wlasciwosci<br />

tego typu obiektu przedstawiono w tabeli 10.2.<br />

Wszystkie te operacje z poprawianiem<br />

i przestawianiem lancuchów znakowych mozesz<br />

wykonywac bez wczesniejszego utworzenia<br />

klonu obiektu lancucha znakowego. Flash robi<br />

to automatycznie, tworzac tymczasowy obiekt<br />

lancucha znakowego, który po wykonaniu<br />

metody jest usuwany.<br />

Tabela 10.2. Metody i wlasciwosci obiektu lancucha znakowego<br />

Metoda lub wlasciwosc<br />

indexOf(searchString,<br />

fromIndex)<br />

lastIndexOf(searchString,<br />

fromIndex)<br />

charAt(index)<br />

substring(indexA, indexB)<br />

substr(start, length)<br />

Opis<br />

Podobnie jak w przypadku obiektu selekcji,<br />

indeksy obiektu lancucha znakowego sa<br />

tworzone na podstawie pozycji znaku<br />

w lancuchu. Pierwszy znak otrzymuje<br />

indeks 0, drugi indeks 1, itd.<br />

Wskazówka<br />

• Mozesz uzyc funkcji String w celu<br />

dokonania konwersji wartosci dowolnej<br />

zmiennej, wyrazenia lub obiektu na<br />

lancuch znakowy, zanim wykonane<br />

zostana metody obiektu lancucha<br />

znakowego. Przykladowo, jesli twoja<br />

zmienna przyciskWyboru jest zmienna<br />

boole’owska, to wyrazenie<br />

String (przyciskWyboru)<br />

zwraca lancuch znakowy true (prawda)<br />

lub false (falsz). Od teraz znaki te<br />

moga podlegac manipulowaniu za<br />

pomoca metod obiektu lancucha<br />

znakowego.<br />

Przeszukuje lancuch znakowy i zwraca miejsce wystapienia po<br />

raz pierwszy podlancucha wskazanego parametrem<br />

searchString. Opcjonalny parametr fromIndex okresla<br />

punkt rozpoczecia przeszukiwania.<br />

Przeszukuje lancuch znakowy i zwraca miejsce wystapienia po<br />

raz ostatni podlancucha wskazanego parametrem<br />

searchString. Opcjonalny parametr fromIndex okresla<br />

punkt rozpoczecia przeszukiwania.<br />

Zwraca znak znajdujacy sie na pozycji wskazanej indeksem.<br />

Zwraca lancuch znakowy, którego pozycje wyznaczaja parametry<br />

indexA i indexB.<br />

Zwraca lancuch znakowy o podanej dlugosci, zaczynajacy sie od<br />

indeksu start.<br />

concat(string1,...,stringN) Wiaze wskazane lancuchy.<br />

toLowerCase()<br />

Zamienia znaki w lancuchu na pisane mala litera.<br />

toUpperCase()<br />

Zamienia znaki w lancuchu na pisane wielka litera.<br />

length<br />

Wlasciwosc zwracajaca dlugosc lancucha.<br />

326


Kontrolowanie tekstu<br />

Rys. 10.55. Nazwij blok tekstu pobieranego<br />

myString (mój lancuch)<br />

Rys. 10.56. Przypisz metode indexOf do bloku<br />

myString<br />

Rys. 10.57. Metoda indexOf sprawdza blok<br />

myString w poszukiwaniu znaku % i podstawia<br />

jego indeks do zmiennej characterPosition<br />

(pozycja znaku)<br />

Analizowanie lancuchów<br />

znakowych za pomoca obiektu<br />

lancucha znakowego<br />

Uzyj metod obiektu lancucha znakowego do<br />

zidentyfikowania znaku lub znaków w tym<br />

lancuchu. Ponizsze cwiczenia ilustruja sposób<br />

analizowania bloków tekstu pobieranego w celu<br />

sprawdzenia, czy uzytkownik wprowadzil<br />

pozadana informacje.<br />

W celu<br />

zidentyfikowania pozycji znaku:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Single Line z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable) (rys. 10.55).<br />

2. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz go i otwórz palete akcji.<br />

3. Wybierz Actions/set variable.<br />

4. W polu Variable wpisz nazwe zmiennej.<br />

W polu Value wpisz nazwe zmiennej bloku<br />

tekstu pobieranego. Nastepnie, majac kursor<br />

w polu Value, wybierz Objects/String/<br />

indexOf.<br />

Metoda indexOf pojawi sie za zmienna<br />

tekstu pobieranego. Podswietlone zostana<br />

argumenty searchString i fromIndex.<br />

Parametr searchString sluzy do<br />

okreslenia znaku, który chcesz<br />

zidentyfikowac w lancuchu. Parametr<br />

fromIndex jest punktem poczatkowym<br />

lancucha – jest to parametr opcjonalny<br />

(rys. 10.56).<br />

5. W miejsce parametru searchString wpisz<br />

znak, który ma byc wyszukany. Upewnij sie,<br />

ze wpisales go w cudzyslowie. Usun<br />

parametr fromIndex. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 10.57).<br />

Analizowanie lancuchów znakowych<br />

327


Rozdzial 10.<br />

Analizowanie lancuchów znakowych<br />

Kiedy uzytkownik wprowadzi tekst do bloku<br />

tekstu pobieranego i kliknie utworzony<br />

przycisk, Flash sprawdzi tekst<br />

w poszukiwaniu wskazanego znaku<br />

i przypisze jego pozycje zmiennej. Uzyj tej<br />

zmiennej w metodach obiektu selekcji lub<br />

obiektu lancucha znakowego w celu<br />

dalszego modyfikowania informacji.<br />

Wskazówki<br />

• Odwrotnoscia metody indexOf jest metoda<br />

charAt. Zwraca ona znak zajmujacy<br />

pozycje w lancuchu o podanym indeksie.<br />

Metody tej móglbys uzyc np. w celu<br />

sprawdzenia, czy pierwszy, drugi i trzeci<br />

znak odpowiadaja numerowi kierunkowemu<br />

telefonu do danej miejscowosci.<br />

• Jesli poszukiwany znak, oznaczony<br />

parametrem indexOf, wystepuje<br />

w lancuchu znakowym wiecej niz raz, Flash<br />

zwróci tylko indeks pozycji, na której ten<br />

znak wystepuje po raz pierwszy. Uzyj<br />

metody lastIndexOf do odczytania<br />

miejsca ostatniego wystapienia tego znaku.<br />

• Gdybys chcial wyszukac wszystkie<br />

miejsca wystepowania okreslonego<br />

znaku, musisz uzyc wielu iteracji metody<br />

indexOf. Wykorzystaj przy tym<br />

opcjonalny parametr fromIndex, który<br />

rozpoczyna wyszukiwanie od<br />

wskazanego indeksu. Wyobraz sobie np.,<br />

ze zmienna wejsciowa zawiera lancuch<br />

znakowy „home/images/vacation”.<br />

Nastepnie przypisz skrypt:<br />

slash1 = input.indexOf ("/");<br />

slash1 = input.indexOf ("/",<br />

slash1+1);<br />

Pierwsze wyrazenie przypisuje zmienna<br />

slash1 do miejsca pierwszego<br />

wystapienia symbolu ukosnika<br />

w lancuchu znakowym wprowadzonej<br />

informacji (slash1 = 4). Drugie<br />

wyrazenie ponownie wyszukuje symbol<br />

ukosnika, ale zaczynajac od znaku<br />

stojacego za pierwszym napotkanym<br />

ukosnikiem (przy indeksie 5 lub literze<br />

„i” w slowie „images”). Konstruujac<br />

petle while lub do while, mozesz<br />

zmusic Flasha do przeszukania calego<br />

lancucha, zaczynajac za kazdym razem<br />

od ostatniego miejsca wystapienia znaku.<br />

Powtarzaj czynnosc, dopóki wartosc<br />

zwracana metody indexOf nie bedzie<br />

równa wartosci metody lastIndexOf.<br />

328


Kontrolowanie tekstu<br />

Rys. 10.58. Nazwij blok tekstu pobieranego<br />

yourEmail (twój e-mail)<br />

Rys. 10.59. Nazwij blok tekstu dynamicznego<br />

display (ekran)<br />

Jesli Flash przeszukuje lancuch znakowy<br />

z uzyciem metod indexOf lub lastIndexOf<br />

i nie znajduje wskazanego znaku, zwracana jest<br />

wartosc –1. Mozna wykorzystac te wlasciwosc<br />

do wyszukiwania brakujacych znaków w<br />

lancuchu. Przykladowo, jesli indexOf("%")<br />

== -1, to wiadomo, ze symbolu procentu<br />

brakuje w lancuchu znakowym. W kolejnym<br />

cwiczeniu sprawdzimy zmienna<br />

wprowadzonego tekstu w poszukiwaniu<br />

symbolu @ oraz kropki, aby przekonac sie,<br />

czy adres e-mail zostal wpisany poprawnie.<br />

W celu sprawdzenia bloku tekstowego w<br />

poszukiwaniu brakujacego znaku:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Single Line z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable) (rys. 10.58).<br />

2. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i przeciagnij nim po scenie<br />

w celu utworzenia kolejnego bloku<br />

tekstowego. Na palecie Text Options,<br />

wybierz Dynamic Text oraz Multiline<br />

z kolejnych menu rozwijanych. Zaznacz<br />

pole Word wrap. Przydziel dla bloku tekstu<br />

dynamicznego nazwe zmiennej (Variable)<br />

(rys. 10.59).<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie, pomiedzy dwoma blokami<br />

tekstowymi. Zaznacz przycisk i otwórz<br />

palete akcji.<br />

4. Na palecie akcji wybierz Actions/if.<br />

5. W polu Condition wpisz nazwe zmiennej<br />

bloku tekstu pobieranego. Majac kursor<br />

w polu Condition, wybierz Objects/<br />

Objects/String/indexOf. Za zmienna bloku<br />

tekstu pobieranego pojawi sie metoda<br />

indexOf, z podswietlonymi argumentami<br />

searchString i fromIndex.<br />

Analizowanie lancuchów znakowych<br />

329


Rozdzial 10.<br />

Analizowanie lancuchów znakowych<br />

6. W miejsce parametru searchString wpisz<br />

symbol "@". Upewnij sie, ze dolaczyles<br />

cudzyslów. Usun parametr fromIndex.<br />

Flash sprawdzi blok tekstu pobieranego<br />

w poszukiwaniu symbolu @.<br />

7. Uzupelnij do konca wyrazenie warunkowe.<br />

Powinno ono wygladac tak:<br />

yourEmail.indexOf ("@") == -1<br />

Ten warunek sprawdza, czy symbol @ nie<br />

jest obecny w zmiennej yourEmail<br />

(rys. 10.60).<br />

8. W tym samym polu Condition wpisz<br />

operator logiczny OR, ||.<br />

9. Dodaj drugi warunek, sprawdzajacy, czy<br />

znak kropki (.) nie jest obecny w zmiennej:<br />

yourEmail.indexOf (".") == -1<br />

10. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej bloku<br />

dynamicznego tekstu. W polu Value<br />

wprowadz komunikat informujacy odbiorce<br />

o zaistnialym bledzie w pisowni<br />

(rys. 10.61).<br />

11. Wybierz Actions/else. Nastepnie wybierz<br />

Actions/set variable. Przypisz dodatkowy<br />

komunikat do zmiennej dynamicznego<br />

tekstu, bedacy podziekowaniem za podanie<br />

adresu e-mail (rys. 10.62).<br />

12. Przetestuj film. Kiedy uzytkownik kliknie<br />

przycisk po wprowadzeniu adresu e-mail do<br />

bloku tekstu pobieranego, Flash sprawdzi<br />

lancuch znakowy w poszukiwaniu symbolu<br />

@ i kropki, a nastepnie zwróci ich indeksy.<br />

Jesli którys z indeksów bedzie mial wartosc<br />

–1, uzytkownik zobaczy komunikat<br />

informujacy o podaniu nieprawidlowego<br />

adresu. W przeciwnym wypadku,<br />

wyswietlony zostanie komunikat<br />

z podziekowaniem (rys. 10.63).<br />

Rys. 10.60. Warunek zostanie spelniony,<br />

jesli w zmiennej yourEmail nie pojawi<br />

sie symbol @<br />

Rys. 10.61. Komunikat wpisany w polu Value<br />

pojawi sie w bloku dynamicznego tekstu<br />

o nazwie display<br />

Rys. 10.62. Ten komunikat pojawi sie w bloku<br />

dynamicznego tekstu o nazwie display<br />

w przypadku niespelnienia warunku<br />

Rys. 10.63. Wprowadzenie nieprawidlowego<br />

adresu e-mail w bloku tekstu pobieranego<br />

powoduje wyswietlenie ostrzezenia bloku<br />

dynamicznego tekstu (u góry). Wpisanie<br />

adresu zawierajacego Symbol @ oraz kropke<br />

powoduje wyswietlenie w bloku<br />

dynamicznego tekstu komunikatu<br />

z podziekowaniem (u dolu)<br />

330


Kontrolowanie tekstu<br />

Rys. 10.64. Flash sprawdza, czy nie brakuje<br />

symbolu @, kropki, a takze ustala, czy blok tekstu<br />

pobieranego o nazwie yourEmail jest pusty<br />

4. Dodaj trzeci warunek, sprawdzajacy dlugosc<br />

lancucha. Stosowne wyrazenie powinno<br />

wygladac tak:<br />

yourEmail.length == 0<br />

Kiedy uzytkownik kliknie przycisk, Flash<br />

sprawdzi dlugosc lancucha znakowego<br />

w bloku tekstu pobieranego i ustali, czy<br />

cokolwiek zostalo wpisane (rys. 10.64).<br />

Wskazówka<br />

• Uzyj metod indexOf lub lastIndexOf<br />

w celu odszukania znaku lub sekwencji<br />

znaków. Jesli jako argument wprowadzisz<br />

lancuch znakowy, np. indexOf (".org"),<br />

Flash zwróci indeks miejsca pierwszego<br />

wystapienia sekwencji .org w lancuchu.<br />

Obiekt lancucha znakowego posiada jedna<br />

wlasciwosc, length, okreslajaca liczbe znaków<br />

w lancuchu. Jest to wlasciwosc tylko do<br />

odczytu, uzyteczna do sprawdzania wzglednego<br />

umiejscowienia znaków. Na przyklad, budujac<br />

interfejs internetowego sklepiku z blokami<br />

tekstu pobieranego do podawania cen, mozesz<br />

sprawdzac wprowadzany tekst w celu ustalenia,<br />

czy znak kropki znajduje sie trzy miejsca przed<br />

dlugoscia lancucha, jak w wyrazeniu:<br />

input.indexOf (".") == input.length<br />

– 3<br />

Jesli powyzszy warunek jest spelniony, mozna<br />

potraktowac dwie ostatnie cyfry jako czesc<br />

dziesietna.<br />

Nastepne cwiczenie uzupelnia przedstawiony<br />

wczesniej proces sprawdzania poprawnosci<br />

wpisanego adresu e-mail. Tym razem nakazesz<br />

Flashowi upewnic sie, ze dlugosc<br />

wprowadzonego lancucha znakowego nie<br />

wynosi 0 (co oznacza, ze odbiorca nic nie<br />

wpisal).<br />

W celu sprawdzenia dlugosci<br />

lancucha znakowego:<br />

1. Kontynuujemy poprzednie cwiczenie,<br />

sprawdzajace poprawnosc wpisanego adresu<br />

e-mail. Zaznacz przycisk i otwórz palete<br />

akcji.<br />

2. Zaznacz wyrazenie if.<br />

3. W polu Condition dodaj kolejny operator<br />

logiczny ||.<br />

Analizowanie lancuchów znakowych<br />

331


Przegrupowywanie lancuchów<br />

Rozdzial 10.<br />

Przegrupowywanie lancuchów<br />

znakowych za pomoca<br />

obiektu lancucha znakowego<br />

Kiedy juz posiadasz informacje<br />

o umiejscowieniu poszczególnych znaków<br />

w lancuchu oraz o dlugosci samego lancucha<br />

znakowego, mozesz zaznaczyc jego czesc<br />

i podstawic ja do innej zmiennej. Flash<br />

umozliwia wykorzystanie wyselekcjonowanych<br />

fragmentów lancucha wraz z innymi lancuchami<br />

znakowymi, a odbywa sie to przy uzyciu metod<br />

concat, fromCharCode, slice, split,<br />

substr lub substring. Wiekszosc tych metod<br />

jest do siebie podobna. W ksiazce omówimy<br />

tylko metody substring (pozwalajaca<br />

wykorzystac zaznaczony fragment lancucha)<br />

i concat (umozliwiajaca laczenie kilku<br />

oddzielnych lancuchów znakowych). Mozesz<br />

uzywac kombinacji tych dwóch metod do<br />

kontrolowania informacji przeplywajacych<br />

miedzy blokami tekstu pobieranego i reszta<br />

elementów filmu Flasha, by na koncu trafic do<br />

bloku dynamicznego tekstu.<br />

W celu wykorzystania<br />

wyselekcjonowanego<br />

fragmentu lancucha znakowego:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Multiline z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable). Zaznacz pole<br />

Word wrap (rys. 10.65).<br />

2. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i przeciagnij nim po scenie<br />

w celu utworzenia kolejnego bloku<br />

tekstowego. Na palecie Text Options,<br />

wybierz Dynamic Text oraz Multiline<br />

z kolejnych menu rozwijanych. Przydziel dla<br />

bloku tekstu dynamicznego nazwe zmiennej<br />

(Variable). Zaznacz pole Word wrap<br />

(rys. 10.66).<br />

Rys. 10.65. Nazwij blok tekstu pobieranego<br />

inputBox<br />

Rys. 10.66. Nazwij blok tekstu dynamicznego<br />

outputBox<br />

332


Kontrolowanie tekstu<br />

Rys. 10.67. Zmienna o nazwie beginning<br />

(poczatek) przechowuje pozycje poczatkowa<br />

selekcji<br />

Rys. 10.68. Zmienna o nazwie ending (koniec)<br />

przechowuje pozycje koncowa selekcji<br />

Rys. 10.69. Metoda substring tworzy podlancuch<br />

na podstawie zawartosci zmiennej inputBox,<br />

przechowujacej indeksy indexA i indexB<br />

Rys. 10.70. Zmienna beginning wskazuje<br />

poczatek podlancucha znakowego, a zmienna<br />

ending – jego koniec<br />

3. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie, pomiedzy dwoma blokami<br />

tekstowymi. Zaznacz przycisk i otwórz<br />

palete akcji.<br />

4. Wybierz Action/on. Zaznacz zdarzenie<br />

Roll Over.<br />

5. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej. W polu<br />

Value wybierz Objects/Selection/<br />

getBeginIndex. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 10.67).<br />

Do zmiennej przypisana zostanie pozycja<br />

poczatku selekcji.<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe kolejnej zmiennej.<br />

Umiesc kursor w polu Value i wybierz<br />

Objects/Selection/getEndIndex. Zaznacz<br />

pole wyboru Expression obok pola Value<br />

(rys. 10.68).<br />

Do zmiennej przypisana zostanie pozycja<br />

konca selekcji.<br />

7. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe kolejnej zmiennej.<br />

W polu Value wpisz nazwe zmiennej tekstu<br />

pobieranego, a nastepnie wybierz<br />

Objects/String/substring.<br />

Metoda substring pojawi sie za zmienna<br />

tekstu pobieranego, z podswietlonymi<br />

parametrami indexA i indexB. Parametr<br />

indeXa definiuje poczatek sekwencji<br />

znaków, który chcesz wyciac, a parametr<br />

indexB oznacza koniec sekwencji<br />

(rys. 10.69).<br />

8. W mie jsce parametru indexA wpisz<br />

zmienna poczatku selekcji. W miejsce<br />

parametru indexB wpisz zmienna konca<br />

selekcji. Zaznacz pole wyboru Expression<br />

obok pola Value (rys. 10.70).<br />

9. Utwórz nowy manipulator zdarzenia,<br />

wybierajac Actions/on. Zaznacz zdarzenie<br />

Release.<br />

Przegrupowywanie lancuchów<br />

333


Rozdzial 10.<br />

Przegrupowywanie lancuchów<br />

10. Wybierz Actions/set variable i przypisz<br />

zmienna przechowujaca wyselekcjonowany<br />

fragment lancucha znakowego do bloku<br />

dynamicznego tekstu (rys. 10.71).<br />

Odbiorca moze teraz wpisac tekst do bloku<br />

tekstu pobieranego i zaznaczyc jego<br />

fragment. W momencie najechania mysza<br />

utworzonego przycisku – Flash zapamieta<br />

pozycje zaznaczenia i podstawi ten<br />

podlancuch do innej zmiennej. Po kliknieciu<br />

przycisku wybrany podlancuch znakowy<br />

pojawi sie w bloku dynamicznego tekstu<br />

(rys. 10.72).<br />

Wskazówka<br />

• Byc moze zastanawiasz sie, dlaczego<br />

metody selekcji sa przypisywane do<br />

zdarzenia Roll Over, zamiast zdarzenia<br />

Release. Dzieje sie tak, poniewaz Flash<br />

moze przechwycic informacje o pozycji<br />

kursora lub selekcji tylko z aktywnego bloku<br />

tekstowego. Jesli odbiorca kliknie przycisk,<br />

blok tekstowy przestanie byc aktywny<br />

(zogniskowany) i selekcja zniknie.<br />

Przypisanie informacji o zaznaczeniu do<br />

zdarzenia Roll Over daje pewnosc, ze<br />

selekcja zostanie wykonana przed jej<br />

usunieciem.<br />

Rys. 10.71. Zmienna outputBox wyswietla<br />

zawartosc zmiennej selectedString<br />

(zaznaczony fragment lancucha)<br />

Blok tekstu<br />

pobieranego<br />

inputBox<br />

Blok tekstu<br />

dynamicznego<br />

outputBox<br />

Blok tekstu<br />

pobieranego<br />

inputBox<br />

Blok tekstu<br />

dynamicznego<br />

outputBox<br />

Rys. 10.72. Zaznaczony fragment „sentence<br />

here” (u góry) jest przenoszony do podlancucha<br />

i wyswietlany w bloku dynamicznego tekstu<br />

ponizej przycisku (u dolu)<br />

Usprawnienie weryfikacji adresu e-mail za pomoca metody substring<br />

Mozesz wykorzystac metode substring<br />

w poprzednim cwiczeniu w celu usprawnienia<br />

wyswietlania informacji zwrotnej.<br />

Przykladowo, zamiast ogólnego podziekowania<br />

po wprowadzeniu poprawnego adresu, mozesz<br />

wyswietlic informacje spersonalizowana na<br />

podstawie znaków nastepujacych po symbolu<br />

@. Twoje podziekowanie bedzie wtedy<br />

skierowane do nazwy uzytkownika, która<br />

najczesciej jest jego imieniem lub<br />

pseudonimem. Ustaw zmienna bloku<br />

dynamicznego tekstu w nastepujacy sposób:<br />

"Thank you, " +<br />

yourEmail.substring (0,<br />

(yourEmail.indexOf("@"))) + ",<br />

we’ll contact you soon."<br />

Podlancuch zwróci selekcje fragmentu<br />

pomiedzy pierwszym znakiem (indeks 0)<br />

i symbolem @.<br />

334


Kontrolowanie tekstu<br />

Rys. 10.73. Stwórz trzy bloki tekstu pobieranego<br />

Rys. 10.74. Nazwij blok dynamicznego tekstu<br />

display (wyswietlacz)<br />

Za pomoca metody concat mozesz polaczyc<br />

wyciete lancuchy znakowe w bardziej<br />

uzyteczny sposób. Parametry metody concat<br />

sa indywidualnymi wyrazeniami (oddzielonymi<br />

przecinkami), które mozesz laczyc. Metoda<br />

concat ma takie samo dzialanie jak operator<br />

dodawania (+), który omawialismy wczesniej<br />

w tym rozdziale. Na przyklad, ponizsze dwa<br />

wyrazenia sa wzgledem siebie równorzedne:<br />

"Hello, ".concat (firstName, " ",<br />

lastName);<br />

"Hello, " + firstName + " " +<br />

lastName;<br />

W celu polaczenia dwóch<br />

oddzielnych lancuchów znakowych:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Multiline z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable). Zaznacz pole<br />

Word wrap.<br />

2. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i przeciagnij nim po scenie<br />

w celu utworzenia jeszcze dwóch bloków<br />

tekstowych, z ustawieniami jak wyzej.<br />

Nadaj poszczególnym bloko m rózne nazwy<br />

(rys. 10.73).<br />

3. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia czwartego bloku tekstowego.<br />

Na palecie Text Options, wybierz Dynamic<br />

Text oraz Multiline z kolejnych menu<br />

rozwijanych. Zaznacz pole Word wrap.<br />

Przydziel dla bloku tekstu dynamicznego<br />

nazwe zmiennej (Variable) (rys. 10.74).<br />

4. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz go i otwórz palete akcji.<br />

Przegrupowywanie lancuchów<br />

335


Rozdzial 10.<br />

Przegrupowywanie lancuchów<br />

5. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej bloku<br />

dynamicznego tekstu. W polu Value wpisz<br />

nazwe zmiennej pierwszego bloku tekstu<br />

pobieranego. Na koniec wybierz<br />

Objects/String/concat.<br />

Metoda concat pojawi sie w polu Value,<br />

zaraz za zmienna pierwszego bloku tekstu<br />

pobieranego. Zobaczysz podswietlone<br />

parametry string1 i stringN.<br />

Przedstawiaja one wartosci, które maja<br />

zostac powiazane (rys. 10.75).<br />

6. W miejsce podswietlonych parametrów<br />

wpisz nazwy zmiennych drugiego<br />

i trzeciego bloku tekstu pobieranego,<br />

oddzielonych spacjami i przecinkami.<br />

Zaznacz pole Expression (rys. 10.76).<br />

7. Przetestuj film. Kiedy uzytkownik<br />

wprowadzi informacje do bloków tekstu<br />

pobieranego i kliknie przycisk, Flash<br />

powiaze trzy zmienne bloków tekstu<br />

pobieranego i wyswietli je w bloku<br />

dynamicznego tekstu (rys. 10.77).<br />

Rys. 10.75. Metoda concat wiaze wartosci<br />

okreslone w jej parametrach ze zmienna<br />

o nazwie title (tytul)<br />

Rys. 10.76. Powyzsza metoda concat jest<br />

ekwiwalentem wyrazenia: title + " " +<br />

firstName + " " + lastName<br />

Rys. 10.77. Flash wiaze zawartosc trzech<br />

górnych pól tekstu pobieranego w jeden<br />

lancuch znakowy, wyswietlany w dolnym polu<br />

dynamicznego tekstu<br />

336


Kontrolowanie tekstu<br />

Modyfikowanie<br />

lancuchów znakowych<br />

za pomoca<br />

obiektu lancucha znakowego<br />

Istnieja dwie proste metody, umozliwiajace<br />

modyfikacje liter lancucha znakowego:<br />

toUpperCase oraz toLowerCase. Obydwie<br />

metody zmieniaja caly lancuch znakowy na<br />

pisany, odpowiednio, duzymi lub malymi<br />

literami. Jesli chcesz zmodyfikowac tylko<br />

wybrane litery, musisz najpierw przygotowac<br />

podlancuchy znakowe, zawierajace owe<br />

wybrane przez ciebie litery, jak to omówilis my<br />

w poprzedniej sekcji rozdzialu. Modyfikuj<br />

podlancuchy na pisane wielkimi lub malymi<br />

literami, a nastepnie lacz je z powrotem za<br />

pomoca metody concat.<br />

W celu zmiany wielkosci liter<br />

w lancuchu znakowym:<br />

1. Wybierz narzedzie tekstowe (Text Tool )<br />

i przeciagnij nim po scenie w celu<br />

utworzenia bloku tekstowego. Na palecie<br />

Text Options, wybierz Input Text oraz<br />

Single Line z kolejnych menu rozwijanych.<br />

Przydziel dla bloku tekstu pobieranego<br />

nazwe zmiennej (Variable).<br />

2. Ponownie wybierz narzedzie tekstowe<br />

(Text Tool) i przeciagnij nim po scenie<br />

w celu utworzenia kolejnego bloku<br />

tekstowego. Na palecie Text Options,<br />

wybierz Dynamic Text oraz Single Line<br />

z kolejnych menu rozwijanych. Przydziel dla<br />

bloku tekstu dynamicznego nazwe zmiennej<br />

(Variable).<br />

3. Utwórz symbol przycis ku i umiesc jego klon<br />

na scenie. Zaznacz go i otwórz palete akcji.<br />

Modyfikowanie lancuchów znakowych<br />

337


Rozdzial 10.<br />

Modyfikowanie lancuchów znakowych<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej bloku<br />

dynamicznego tekstu. W polu Value wpisz<br />

nazwe zmiennej bloku tekstu pobieranego.<br />

Potem wybierz Objects/<br />

StringtoUpperCase oraz zaznacz pole<br />

Expression. Metoda toUpperCase pojawi<br />

sie w polu Value, zaraz za zmienna bloku<br />

tekstu pobieranego. Dla metody tej nie sa<br />

wymagane zadne parametry, jako ze jej<br />

dzialanie odnosi sie do calego lancucha<br />

znakowego (rys. 10.78).<br />

5. Przetestuj film. Kiedy uzytkownik<br />

wprowadzi tekst do bloku tekstu<br />

pobieranego i kliknie przycisk, Flash<br />

zamieni wszystkie znaki lancucha<br />

znakowego na pisane wielka litera<br />

i wyswietli rezultat tej operacji w bloku<br />

dynamicznego tekstu (rys. 10.79).<br />

Wskazówka<br />

• W celu przypisania do lancucha znakowego<br />

innego stylu, np. pogrubionego lub<br />

pochylego, musisz zdefiniowac te style<br />

w opcjach Character i Paragraph bloku<br />

dynamicznego tekstu. Wielkie i male litery<br />

to w zasadzie odmienne znaki, a nie style,<br />

co sprawia, ze trzeba modyfikowac lancuch<br />

znakowy.<br />

Rys. 10.78. Metoda toUpperCase<br />

przeksztalca znaki przechowywane<br />

w zmiennej myInput na pisane wielka litera<br />

Blok tekstu pobieranego myInput<br />

Blok dynamicznego tekstu o nazwie display<br />

Rys. 10.79. Rezultat wykonania metody<br />

toUpperCase jest widoczny w bloku<br />

dynamicznego tekstu o nazwie display<br />

338


Manipulowanie danymi 11<br />

Czesci skladowe jezyka HTML<br />

Informacje, które przechowujesz w zmiennych, modyfikujesz w wyrazeniach i sprawdzasz przy<br />

pomocy wyrazen warunkowych, czesto musza byc dalej przetwarzane z uzyciem rachunków<br />

matematycznych, takich jak potegowanie czy obliczanie sinusa i cosinusa. Flash wykonuje<br />

podobne obliczenia, korzystajac z obiektu matematycznego (Math), umozliwiajacego tworzenie<br />

formul dzialania interakcji pomiedzy obiektami w twoim filmie i odbiorca, a takze wzorów<br />

geometrycznych do ksztaltowania grafiki. Dla przykladu: poslugujac sie obiektem<br />

matematycznym, mozesz zaprojektowac prawidlowa trajektorie kolizji obiektów, zasymulowac<br />

efekt oddzialywania sil grawitacji w samouczku do lekcji fizyki, obliczac rachunek<br />

prawdopodobienstwa w grze karcianej czy tez generowac liczby losowe, pozwalajace wprowadzic<br />

do filmu nieprzewidywalne elementy. Wiekszosc takich informacji, którymi manipulujesz, musi<br />

byc przechowywana w tablicach, jesli chcesz uzyskac wieksza kontrole nad danymi i efektywnosc<br />

ich wykorzystania. Tablice moga byc uzywane do porzadkowania danych, np. w listach zakupów,<br />

tabelach koloru lub zapiskach sportowych.<br />

Jesli informacja, której potrzebujesz, jest uzalezniona od czasu lub daty, mozesz skorzystac<br />

z obiektu daty (Date) do uzyskania danych na temat biezacego roku, miesiaca, a nawet<br />

milisekundy. Dzieki temu latwo dolaczysz do swojego filmu zegar i timer, uzyskujac mozliwosc<br />

przesylania do serwera informacji czasowej wraz z profilem odbiorcy.<br />

Wykonywanie wszystkich tych procesów zwiazanych z przetwarzaniem danych znacznie ulatwia<br />

uzycie funkcji. Nauczysz sie, jak budowac funkcje laczace oddzielne wyrazenia i obiekty w taki<br />

sposób, aby zwiekszyc ich pierwotne mozliwosci. Wystarczy wspomniec tu chocby<br />

o zaprojektowaniu funkcji automatycznie dolaczajacej do filmu dzwiek, a nastepnie odtwarzajacej<br />

go i ustawiajacej poziom glosnosci lub panorame w oparciu o podane parametry. Mozliwe jest<br />

takze tworzenie funkcji pozwalajacej ksztaltowac wlasne obiekty. Rozwijaj mozliwosci<br />

predefiniowanych obiektów Flasha, przygotowujac sterujace nimi wlasne metody i wlasciwosci.<br />

Rozdzial 11. pomoze ci zrozumiec, jak poslugiwac sie takimi zlozonymi, ale jednoczesnie<br />

elastycznymi danymi. Dowiesz sie równiez o sposobach integrowania róznych obiektów,<br />

z którymi zapoznales sie dotychczas.<br />

Manipulowanie danymi<br />

339


Rozdzial 11.<br />

Wykonywanie obliczen<br />

za pomoca obiektu<br />

matematycznego<br />

Wykonywanie obliczen<br />

Obiekt matematyczny pozwala na<br />

wykorzystanie funkcji trygonometrycznych,<br />

takich jak sinus, cosinus i tangens, funkcji<br />

logarytmicznych, funkcji zaokraglania wartosci<br />

liczbowych, czy wreszcie stalych<br />

matematycznych, np. Pi (3.141592) lub<br />

e (2.718281). Metody i wlasciwosci obiektu<br />

matematycznego przedstawia tabela 11.1.<br />

Podobnie jak w przypadku obiektu Key, tak i tu<br />

nie jest potrzebne tworzenie klonu obiektu przed<br />

uzyciem jego metod lub wlasciwosci. Podobnie<br />

wszystkie wlasciwosci obiektu matematycznego<br />

sa wartosciami tylko do odczytu i zapisuje sie je<br />

wielkimi literami. Kazda metoda jest<br />

poprzedzona wprowadzeniem obiektu Math.<br />

Na przyklad, w celu obliczenia kwadratu<br />

liczby 10, napiszesz:<br />

mojaOdpowiedz = Math.sqrt (10);<br />

a wynik obliczenia zostanie podstawiony do<br />

zmiennej mojaOdpowiedz. Jesli zamierzasz<br />

wykorzystac stala, posluz sie skladnia:<br />

mojObwod = Math.PI * 2 * mojPromien;<br />

Stala matematyczna Pi jest mnozona przez 2<br />

i przez wartosc zmiennej mojPromien, a wynik<br />

obliczenia jest podstawiany do zmiennej<br />

mojObwod.<br />

340


Manipulowanie danymi<br />

Tabela 11.1. Metody i wlasciwosci obiektu matematycznego<br />

Metoda lub wlasciwosc Opis<br />

abs(number)<br />

Oblicza wartosc bezwzgledna (z pominieciem znaku).Wyrazenie<br />

Math.abs(-4) zwraca wartosc 4.<br />

acos(number)<br />

Oblicza wartosc cosinusa luku<br />

asin(number)<br />

Oblicza wartosc sinusa luku.<br />

atan(number)<br />

Oblicza wartosc tangensa luku.<br />

atan2(y, x) Oblicza wartosc kata (w radianach) miedzy osia x i punktem na osi y.<br />

ceil(number)<br />

Zaokragla liczbe w góre do najblizszej liczby calkowitej. Wyrazenie<br />

Math.ceil (2.34) zwraca wartosc 3.<br />

cos(number)<br />

Oblicza wartosc cosinusa kata podanego w radianach.<br />

exp(number)<br />

Oblicza wartosc wykladnika potegi stalej Eulera (e).<br />

floor(number)<br />

Zaokragla liczbe w dól do najblizszej liczby calkowitej. Wyrazenie<br />

Math.floor (2.34) zwraca wartosc 2.<br />

log(number)<br />

Oblicza wartosc logarytmu naturalnego.<br />

max(x, y)<br />

Zwraca wieksza z dwóch porównywanych wartosci. Wyrazenie<br />

Math.max (2, 7) zwraca wartosc 7.<br />

min(x, y)<br />

Zwraca mniejsza z dwóch porównywanych wartosci. Wyrazenie<br />

Math.max (2, 7) zwraca wartosc 2.<br />

pow(base, exponent) Oblicza wartosc wykladnika potegi danej liczby.<br />

random() Zwraca liczbe losowa z zakresu 0,0 do 1,0.<br />

round(number)<br />

Zaokragla liczbe do najblizszej wartosci. Gdy czesc ulamkowa wartosci jest<br />

mniejsza od 0,5, to funkcja zaokragla w gól, gdy natomiast czesc ulamkowa<br />

wynosi 0,5 i wiecej, to funkcja zaokragla w góre. Wyrazenie<br />

Math.round (2.34) zwraca wartosc 2.<br />

sin(number)<br />

Oblicza wartosc sinusa kata podanego w radianach.<br />

sqrt(number)<br />

Oblicza wartosc kwadratu potegi.<br />

tan(number)<br />

Oblicza wartosc tangensa kata podanego w radianach.<br />

E<br />

Stala Eulera; podstawa logarytmów naturalnych.<br />

LN2 Logarytm naturalny liczby 2.<br />

LOG2E Logarytm Eulera podstawy równej 2.<br />

LN10 Logarytm naturalny liczby 10.<br />

LOG10E Logarytm Eulera podstawy równej 10.<br />

PI<br />

Obwód kola podzielony przez jego srednice.<br />

SQRT1_2 Kwadrat potegi liczby ½.<br />

SQRT2 Kwadrat potegi liczby 2.<br />

Wykonywanie obliczen<br />

341


Rozdzial 11.<br />

Obliczanie wartosci katowych<br />

Obliczanie wartosci katowych za<br />

pomoca<br />

obiektu matematycznego<br />

Kat zachowywany pomiedzy obiektem i scena<br />

lub pomiedzy dwoma obiektami jest uzyteczna<br />

informacja w tworzeniu interakcji w grach, jak<br />

tez w przypadku dynamicznych animacji<br />

i interfejsów budowanych od poczatku do konca<br />

za pomoca jezyka ActionScript. Przykladowo,<br />

tworzac pokretlo regulujace poziom glosnosci<br />

dzwieku, musisz obliczyc kat pomiedzy<br />

kierunkiem, w którym uzytkownik przeciaga<br />

pokretlo i osia pionowa lub pozioma, a nastepnie<br />

odpowiednio zmienic obrót pokretla i sama<br />

glosnosc dzwieku. Zanim jednak przejdziesz<br />

do obliczania wartosci katowych, dobrze byloby<br />

przypomniec sobie poznane w szkole sredniej<br />

podstawowe zasady trygonometryczne, rzadzace<br />

obliczaniem sinusa, cosinusa i tangensa.<br />

Mnemoniczna nazwa SOH CAH TOA pomaga<br />

zachowac poprawnosc obliczania funkcji<br />

trygonometrycznych. Symbole te sa akronimami<br />

wyrazen: Sine = Opposite over Hypotenuse<br />

(sinus = przyprostokatna naprzeciwlegla do<br />

przeciwprostokatnej), Cosine = Adjacent over<br />

Hypotenuse (cosinus = przyprostokatna<br />

przylegla do przeciwprostokatnej) i Tangent =<br />

Opposite over Adjacent (tangens =<br />

przyprostokatna naprzeciwlegla do<br />

przyprostokatnej przyleglej) (rys. 11.1).<br />

Znajomosc dlugosci dwóch dowolnych boków<br />

trójkata prostokatnego wystarcza do obliczenia<br />

pozostalych dwóch katów. Zwykle bedziesz mial<br />

do czynienia z dlugosciami przyprostokatnych,<br />

jako ze to one wlasnie reprezentuja wspólrzedne<br />

x i y punktu (rys. 11.2). Znajac wspólrzedne x, y,<br />

mozesz obliczyc kat (theta) za pomoca ponizszych<br />

wzorów matematycznych:<br />

Tangens kata = przyprostokatna naprzeciwlegla/<br />

przyprostokatna przylegla<br />

lub<br />

Tangens kata = y/x<br />

lub<br />

Kat = tangens luku (y/x)<br />

Adjacent (przyprostokatna przylegla)<br />

Hypotenuse<br />

(przeciwprostokatna)<br />

Rys. 11.1. Kat (theta) trójkata prostokatnego<br />

jest definiowany przez sinus, cosinus, tangens<br />

i dlugosc trzech boków<br />

Os y<br />

Rys. 11.2. Punkt na scenie tworzy trójkat<br />

prostokatny z bokami x (przyprostokatna<br />

przylegla) oraz y (przyprostokatna<br />

naprzeciwlegla)<br />

Opposite<br />

(przyprostokatna<br />

naprzeciwlegla)<br />

Sinus kata = przyprostokatna<br />

naprzeciwlegla/przeciwprostokatna<br />

Cosinus kata = przyprostokatna<br />

przylegla/przeciwprostokatna<br />

Tangens kata = przyprostokatna<br />

naprzeciwlegla/przyprostokatna przylegla<br />

x<br />

y<br />

Os x<br />

342


Manipulowanie danymi<br />

We Flashu mozna powyzsze wyrazenia zapisac<br />

przy pomocy obiektu matematycznego<br />

w nastepujacy sposób:<br />

mojKat = Math.atan(this._y/this._x);<br />

Warto dodac, ze jest dostepna jeszcze latwiejsza<br />

metoda zdefiniowania wspólrzednych x, y, bez<br />

potrzeby wykonywania dzielenia. Metoda<br />

atan2 przyjmuje wspólrzedne x, y jako dwa<br />

argumenty, wiec wyrazenie moze wygladac<br />

nastepujaco:<br />

mojKat = Math.atan2(this._y,<br />

this._x)<br />

Niestety, metody trygonometryczne obiektu<br />

matematycznego wymagaja – i zwracaja –<br />

wartosci w radianach, które opisuja kat<br />

w rozumieniu liczby stalej Pi, co jest<br />

wygodniejsze matematycznie, ale juz nie tak<br />

praktyczne w momencie, gdy chcesz uzyc<br />

wartosci do zmodyfikowania wlasciwosci<br />

_rotation klipu filmowego. Mozna jednak<br />

przeksztalcic wartosc katowa w radianach na<br />

stopnie – i odwrotnie – za pomoca ponizszych<br />

wzorów:<br />

Radiany = Math.PI/180 * liczba_<br />

stopni;<br />

Stopnie = liczba_radianów * 180/<br />

Math.PI;<br />

Ponizsze cwiczenia demonstruja sposób<br />

obliczenia katów przeciaganego klipu<br />

filmowego i wyswietlenia wartosci w stopniach<br />

w bloku dynamicznego tekstu.<br />

Obliczanie wartosci katowych<br />

W celu obliczenia kata<br />

tworzonego wzgledem sceny:<br />

1. Utwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Nazwij go, korzystajac<br />

z pola Name palety Instance.<br />

2. Utwórz blok dynamicznego tekstu, w sposób<br />

opisany w rozdziale 10. Na palecie Text<br />

Options wybierz opcje Single Line<br />

i przypisz do bloku tekstowego nazwe<br />

zmiennej (Variable).<br />

3. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

343


Rozdzial 11.<br />

Obliczanie wartosci katowych<br />

4. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Load.<br />

5. Wybierz Actions/startDrag. W polu Target<br />

wpisz this. Zaznacz pole Expression.<br />

Zaznacz tez pola Constrain to rectangle<br />

i Lock mouse to center. Wpisz 0 w polu L,<br />

0 w polu T, szerokosc sceny w polu R<br />

i wysokosc sceny w polu B (rys. 11.3).<br />

W rezultacie punkt srodkowy klipu<br />

filmowego bedzie podazal za wskaznikiem<br />

myszy, a sam klip zostanie osadzony<br />

w obramowaniu wyznaczonym przez<br />

rozmiary sceny.<br />

6. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

7. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej, która<br />

bedzie przechowywac wartosc kata<br />

w radianach. Umiesc kursor w polu Value<br />

i wybierz Object/Math/atan2. Zaznacz pole<br />

Expression (rys. 11.4).<br />

8. W polu Value, w miejsce argumentu y<br />

wpisz this._y, a w miejsce argumentu x<br />

wpisz this._x (rys. 11.5).<br />

Flash obliczy tangens luku wspólrzednej y<br />

polozenia wskaznika, podzielonej przez<br />

wspólrzedna x i zwróci wynik, bedacy<br />

wartoscia w radianach.<br />

9. Wybierz Actions/set variable. W polu<br />

Variable wprowadz pelna sciezke dostepu<br />

do bloku dynamicznego tekstu na glównej<br />

listwie czasowej.<br />

10. W polu Value wprowadz wyrazenie, które<br />

mnozy wartosc zmiennej przechowujacej kat<br />

w radianach przez 180 i dzieli wynik przez<br />

stala Pi:<br />

myRadians * 180/Math.PI;<br />

Zaznacz pole Expression i dowiaz lancuch<br />

znakowy "degrees" na koncu wyrazenia.<br />

Wartosc kata zostanie przeksztalcona<br />

z radianów na stopnie i przypisana do<br />

zmiennej dynamicznego tekstu (rys. 11.6).<br />

Rys. 11.3. Ta akcja startDrag sprawia, ze<br />

klip filmowy podaza za wskaznikiem myszy,<br />

bedac obramowanym prostokatem<br />

o wymiarach 300 x 300 pikseli<br />

Rys. 11.4. Metoda Math.atan2 w polu Value<br />

wymaga podania argumentów y oraz x<br />

Rys. 11.5. Metoda Math.atan2 oblicza kat,<br />

jaki klip filmowy tworzy z punktem<br />

wyjsciowym (lewy górny róg sceny)<br />

Rys. 11.6. Blok dynamicznego tekstu<br />

o nazwie myDegrees wyswietla wartosc kata<br />

w stopniach<br />

344


Manipulowanie danymi<br />

Rys. 11.7. Klip filmowy tworzy kat o wartosci ok.<br />

65 stopni ponizej osi x<br />

Klip filmowy<br />

myreferencePoint<br />

Zmienna<br />

myRadians<br />

Przeciagany klip<br />

filmowy<br />

Blok dynamicznego<br />

tekstu myDegrees<br />

Przeciagany<br />

klip filmowy<br />

(this)<br />

Rys. 11.8. Róznica pomiedzy wspólrzedna y<br />

pozycji przeciaganego klipu filmowego i klipem<br />

filmowym myReferencePoint jest parametrem y<br />

dla metody Math.atan2. Róznica pomiedzy<br />

wspólrzedna x pozycji przeciaganego klipu<br />

filmowego i klipem filmowym myReferencePoint<br />

jest parametrem x dla metody Math.atan2<br />

11. Przetestuj film.<br />

Klip filmowy podaza za wskaznikiem myszy<br />

przesuwanym po scenie. Flash oblicza kat,<br />

jaki klip filmowy tworzy z osia glównej<br />

listwy czasowej i wyswietla wartosc tego<br />

kata (w stopniach) w bloku dynamicznego<br />

tekstu (rys. 11.7).<br />

W celu obliczenia kata<br />

tworzonego wzgledem innego punktu:<br />

1. Kontynuujac poprzednie cwiczenie, utwórz<br />

kolejny symbol klipu filmowego i umiesc<br />

jego klon na scenie. Nazwij go, korzystajac<br />

z pola Name palety Instance.<br />

2. Zaznacz klon pierwszego klipu filmowego<br />

(ten przeciagany) i otwórz palete akcji.<br />

3. Zaznacz wyrazenie obliczajace kat za<br />

pomoca metody atan2. Zmien wyrazenie<br />

w nastepujacy sposób:<br />

Math.atan2((this._y-<br />

_root.myReferencePoint._y),<br />

(this._x-_root.myReferencePoint.<br />

_x));<br />

gdzie myReferencePoint (punkt<br />

odniesienia) jest nazwa drugiego klipu<br />

filmowego, który nie bedzie przeciagany.<br />

Odejmujac wspólrzedne y oraz x punktu<br />

odniesienia od pozycji przeciaganego klipu<br />

filmowego, Flash oblicza odleglosci y i x<br />

pomiedzy dwoma punktami (rys. 11.8).<br />

4. Przetestuj film.<br />

Za przesuwanym przez uzytkownika<br />

wskaznikiem bedzie podazal klip filmowy.<br />

Flash oblicza kat pomiedzy przeciaganym<br />

klipem filmowym i klipem stacjonarnym,<br />

a nastepnie wyswietla wartosc tego kata<br />

(w stopniach) w bloku dynamicznego tekstu.<br />

Obliczanie wartosci katowych<br />

345


Rozdzial 11.<br />

Jak dotad, wartosci obliczanych katów<br />

posiadaly wiele miejsc po przecinku. Czesto<br />

jednak zachodzi potrzeba zaokraglenia tych<br />

wartosci do najblizszej liczby calkowitej, zeby<br />

mozna bylo uzyc ich jako parametrów metod<br />

i wlasciwosci. Uzywaj metod Math.round do<br />

zaokraglania wartosci do najblizszej liczby<br />

calkowitej, Math.ceil do zaokraglania<br />

wartosci do najblizszej liczby calkowitej<br />

wiekszej lub równej wskazanej wartosci oraz<br />

metody Math.floor do zaokraglania wartosci<br />

do najblizszej liczby calkowitej mniejszej lub<br />

równej wskazanej wartosci.<br />

Rys. 11.9. Wartosc wyrazenia w nawiasach<br />

jest zaokraglana do najblizszej liczby<br />

calkowitej i wyswietlana w bloku<br />

dynamicznego tekstu o nazwie myDegrees<br />

Obliczanie wartosci katowych<br />

W celu zaokraglenia<br />

do liczby calkowitej:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

przeciagany klip filmowy i otwórz palete<br />

akcji.<br />

2. Zaznacz wyrazenie przeksztalcajace wartosc<br />

w radianach na wartosc w katach.<br />

3. Umiesc kursor w polu Value na poczatku<br />

wyrazenia i wpisz metode Math.round.<br />

Uzyj nawiasów do zgrupowania wyrazenia<br />

dokonujacego przeksztalcenia z radianów na<br />

stopnie (rys. 11.9).<br />

Flash przeksztalci wartosc kata podana<br />

w radianach na stopnie, a potem przypisze<br />

tej wartosci metode Math.round,<br />

ostatecznie zwracajac najblizsza wartosci<br />

liczbe calkowita.<br />

Mozesz wykorzystac metody obliczajace<br />

wartosci katów i zaokraglajace te wartosci do<br />

utworzenia przeciaganego, obrotowego<br />

pokretla. Celem jest tu obliczenie kata<br />

pomiedzy pozycja wskaznika myszy i punktem<br />

srodkowym pokretla. Potem wystarczy<br />

przypisac do tego kata wlasciwosc _rotation.<br />

W celu utworzenia<br />

obrotowego pokretla:<br />

1. Utwórz symbol klipu filmowego o ksztalcie<br />

pokretla. Utwórz symbol przycisku i umiesc<br />

jego klon wewnatrz symbolu klipu<br />

filmowego.<br />

346


Manipulowanie danymi<br />

Rys. 11.10. Przypisz zmiennej pressing wartosc<br />

true dla wcisnietego przycisku<br />

Rys. 11.11. Przypisz zmiennej pressing wartosc<br />

false dla przycisku zwolnionego, takze poza jego<br />

obszarem aktywnym<br />

Rys. 11.12. Zmienna myRadians przechowuje<br />

obliczony kat pomiedzy wskaznikiem myszy<br />

i klipem filmowym<br />

2. Zaznacz klon przycisku umieszczonego<br />

w klipie filmowym i otwórz palete akcji.<br />

3. Wybierz Actions/on. Zaznacz zdarzenie<br />

Press i usun zaznaczenie zdarzenia Release.<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej pressing.<br />

W polu Value wpisz true. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 11.10).<br />

5. Wybierz Actions/on. Zaznacz zdarzenia<br />

Release i Release Outside.<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej pressing.<br />

W polu Value wpisz false. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 11.11).<br />

Klon przycisku odnotowuje zdarzenia<br />

zarówno jego wcisniecia, jak i zwolnienia.<br />

7. Wróc do glównej listwy czasowej i umiesc<br />

klon twojego klipu filmowego (tego, który<br />

zawiera przycisk) na scenie.<br />

8. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

9. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

10. Wybierz Actions/if. W polu Condition<br />

wpisz pressing == true.<br />

11. Wybierz Actions/set variable. W polu<br />

Variable podaj nazwe zmiennej. W polu<br />

Value wpisz:<br />

Math.atan2((_root._ymousethis._y),<br />

(_root._xmousethis._x));<br />

Zaznacz pole wyboru Expression obok pola<br />

Value.<br />

Flash obliczy kat pomiedzy pozycja<br />

wskaznika myszy i punktem srodkowym<br />

klipu filmowego (rys. 11.12).<br />

Obliczanie wartosci katowych<br />

347


Rozdzial 11.<br />

Obliczanie wartosci katowych<br />

12. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej. W polu<br />

Value wprowadz wyrazenie umozliwiajace<br />

konwersje radianów na stopnie<br />

i zaokraglajace wynik do najblizszej liczby<br />

calkowitej. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 11.13).<br />

13. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Rotation.<br />

W polu Target wpisz this. Zaznacz pole<br />

Expression. W polu Value wpisz nazwe<br />

zmiennej przechowujacej wartosc kata<br />

w stopniach i dodaj 90. Zaznacz pole<br />

Expression.<br />

Stopien obrotu klipu filmowego jest<br />

przypisywany do obliczonego kata. Wartosc<br />

90 dodaje sie w celu skompensowania<br />

róznicy pomiedzy obliczonym katem<br />

i wlasciwoscia obrotu klipu filmowego.<br />

Wartosc 0 dla wlasciwosci _rotation<br />

odpowiada pozycji „na godzinie dwunastej”<br />

klipu filmowego, ale jednoczesnie pozycji<br />

„na godzinie trzeciej” obliczonego kata, tak<br />

wiec dodanie 90 wyrównuje te wartosci<br />

(rys. 11.14).<br />

14. Przetestuj film.<br />

Kiedy uzytkownik kliknie przycisk na<br />

pokretle, bedzie mógl obracac pokretlem<br />

wokól jego punktu srodkowego. Pokretlo<br />

przestanie sie obracac po zwolnieniu<br />

przycisku.<br />

Rys. 11.13. Wartosc kata jest przeksztalcana<br />

z radianów na stopnie, zaokraglana do<br />

najblizszej liczby calkowitej i przypisywana<br />

do zmiennej myDegrees<br />

this_rotation = 0<br />

myDegrees = 0<br />

Rys. 11.14. Obrót klipu filmowego jest<br />

ustawiony na podstawie wartosci zmiennej<br />

myDegrees + 90 stopni, w celu zniwelowania<br />

róznicy pomiedzy obliczonym katem<br />

(myDegrees) i wlasciwoscia obrotu<br />

348


Manipulowanie danymi<br />

1<br />

x<br />

Rys. 11.15. Wartosci x oraz y dla tego<br />

samochodu, przebywajacego okreslona odleglosc,<br />

sa definiowane przez sinus i cosinus jego kata<br />

Rys. 11.16. Obrót klipu filmowego zaczyna sie na<br />

osi pionowej i zmierza w kierunku ruchu<br />

wskazówek zegara (z lewej). Wartosci sinusa<br />

i cosinusa kata zaczynaja sie na osi poziomej<br />

i rosna w kierunku przeciwnym do ruchu<br />

wskazówek zegara (z prawej)<br />

y<br />

Odleglosc<br />

Kat<br />

Uzywanie funkcji sinus<br />

i cosinus<br />

do wyznaczania ruchu<br />

ukierunkowanego<br />

Jesli chcesz kontrolowac dystans przebyty na<br />

scenie przez obiekt w oparciu o kat, mozesz<br />

uzyc funkcji trygonometrycznych sinusa<br />

i cosinusa, które pomoga ci wykonac obliczenia.<br />

Zalózmy, ze masz zamiar stworzyc gre<br />

wyscigowa z samochodem poruszanym przez<br />

uzytkownika wokól sciezki. Samochód<br />

podrózowalby z okreslona predkoscia<br />

i w kierunku, w którym skierowany jest jego<br />

przód. Jesli jest skierowany do góry, samochód<br />

pojedzie do przodu. Jesli jest skierowany<br />

w prawo, samochód pojedzie w prawo. Jesli jest<br />

skierowany pod katem 75 stopni, samochód<br />

równiez pojedzie w odpowiednim dla tego<br />

polozenia kierunku. Obliczenie odleglosci, jaka<br />

ma przebyc samochód w kierunku poziomym<br />

i pionowym, wymaga uzycia metod Math.sin<br />

i Math.cos obiektu matematycznego. Nowa<br />

pozycja samochodu jest okreslana przez boki x<br />

oraz y trójkata tworzonego przez kat ustawienia<br />

samochodu. Kiedy samochód jest skierowany<br />

do góry, wartosc y wynosi 1 i wartosc x równa<br />

sie 0. Jesli skierowac samochód na prawo, to<br />

wartosc y wynosi 0 i wartosc x równa jest 1.<br />

W przypadku, gdy samochód jest ustawiony<br />

w jakims kierunku posrednim, sinus i cosinus<br />

kata pozwola ci obliczyc stosunek x do y<br />

(rys. 11.15). Sinus kata okresla wartosc<br />

bezwzgledna y, a cosinus – wartosc<br />

bezwzgledna x. Warto zauwazyc, ze, sinus<br />

i cosinus bazuja na katach rozpoczynajacych sie<br />

od wartosci 0 stopni na osi poziomej. Natomiast<br />

wlasciwosc obrotu (_rotation) jest oparta na<br />

katach rozpoczynajacych sie od wartosci 0<br />

stopni na osi pionowej. Stad konieczne jest<br />

uzycie cosinusa w przypadku wartosci y i sinusa<br />

dla wartosci x (rys. 11.16).<br />

mojSamochod._y = mojSamochod_y –<br />

Math.cos(kat);<br />

mojSamochod._x = mojSamochod_x +<br />

Math.sin(kat);<br />

Uzywanie funkcji sinus i cosinus<br />

349


Rozdzial 11.<br />

Uzywanie funkcji sinus i cosinus<br />

W ponizszym cwiczeniu utworzysz klip<br />

filmowy, którego stopien obrotu bedzie<br />

kontrolowany przez uzytkownika. Klip filmowy<br />

ma tutaj stala predkosc, bedzie wiec zmierzal<br />

w kierunku, w jakim go ustawiono – podobnie<br />

jak samochód, który jedzie tak, jak sterujesz<br />

kierownica.<br />

W celu<br />

utworzenia sterowanego obiektu<br />

przemieszczajacego sie<br />

ruchem kierunkowym:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nadaj mu nazwe.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Key Down.<br />

4. Wybierz Actions/if. W polu Condition<br />

wpisz:<br />

Key.isDown (Key.LEFT);<br />

Flash sprawdzi, czy wcisnieto klawisz<br />

strzalki w lewo.<br />

5. Wybierz Actions/evaluate . W polu<br />

Expression wpisz myRotation jako nazwe<br />

zmiennej obrotu klipu filmowego, nastepnie<br />

operator -= i na koncu liczbe 10. Flash<br />

odejmie 10 od biezacej wartosci zmiennej<br />

myRotation, jesli wcisniety zostanie<br />

klawisz strzalki w lewo (rys. 11.17).<br />

6. Wybierz Actions/else. W polu Condition<br />

wpisz:<br />

Key.isDown (Key.RIGHT);<br />

Flash sprawdzi, czy wcisnieto klawisz<br />

strzalki w prawo.<br />

7. Wybierz Actions/evaluate . W polu<br />

Expression wpisz myRotation, nastepnie<br />

operator += i na koncu liczbe 10.<br />

Flash doda 10 do biezacej wartosci zmiennej<br />

myRotation, jesli wcisniety zostanie<br />

klawisz strzalki w prawo (rys. 11.18).<br />

Rys. 11.17. Zmienna myRotation zwieksza<br />

swoja wartosc po nacisnieciu klawisza<br />

strzalki w lewo<br />

Rys. 11.18. Zmienna myRotation zwieksza<br />

swoja wartosc po nacisnieciu klawisza<br />

strzalki w prawo<br />

350


Manipulowanie danymi<br />

Rys. 11.19. Cosinus kata obrotu klipu filmowego<br />

jest po obliczeniu przypisywany do zmiennej<br />

ychange<br />

Rys. 11.20. Sinus kata obrotu klipu filmowego<br />

jest po obliczeniu przypisywany do zmiennej<br />

xchange<br />

8. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

9. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej ychange.<br />

Umiesc wskaznik myszy w polu Value<br />

i wybierz Objects/Math/cos. W polu Value<br />

pojawi sie metoda Math.cos<br />

z podswietlonym argumentem.<br />

10. W miejsce podswietlonego argumentu<br />

wstaw wyrazenie przeksztalcajace wartosc<br />

zmiennej myRotation z radianów na<br />

stopnie. Pomnóz cale wyrazenie przez 3<br />

i zaznacz pole wyboru Expression obok<br />

pola Value (rys. 11.19).<br />

Zmienna ychange repre zentuje wartosc<br />

bezwzgledna boku trójkata y. Pomnozenie<br />

przez 3 zwieksza te wartosc, dzieki czemu<br />

klip filmowy porusza sie nieco szybciej<br />

w kierunku y.<br />

11. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej xchange.<br />

Umiesc wskaznik w polu Value i wybierz<br />

Objects/Math/cos. W polu Value pojawi<br />

sie metoda Math.sin z podswietlonym<br />

argumentem.<br />

12. W miejsce podswietlonego argumentu<br />

wstaw wyrazenie przeksztalcajace wartosc<br />

zmiennej myRotation z radianów na<br />

stopnie. Pomnóz cale wyrazenie przez 3<br />

i zaznacz pole wyboru Expression obok<br />

pola Value (rys. 11.20).<br />

Zmienna xchange reprezentuje wartosc<br />

bezwzgledna boku trójkata x. Pomnozenie<br />

przez 3 zwieksza te wartosc, dzieki czemu<br />

klip filmowy porusza sie nieco szybciej<br />

w kierunku x.<br />

Uzywanie funkcji sinus i cosinus<br />

351


Rozdzial 11.<br />

Uzywanie funkcji sinus i cosinus<br />

13. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Y Position.<br />

W polu Target wpisz this. W polu Value<br />

wpisz:<br />

this._y – ychange;<br />

Zaznacz obydwa pola wyboru Expression.<br />

14. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz X Position.<br />

W polu Target wpisz this. W polu Value<br />

wpisz:<br />

this._x + xchange;<br />

Zaznacz obydwa pola wyboru Expression.<br />

15. Wybierz Actions/setProperty. Z menu<br />

rozwijanego Property wybierz Rotation.<br />

W polu Target wpisz this. W polu Value<br />

wpisz nazwe zmiennej myRotation.<br />

Zaznacz obydwa pola wyboru Expression<br />

(rys. 11.21).<br />

16. Przetestuj film.<br />

Kiedy uzytkownik nacisnie klawisz strzalki<br />

w lewo lub strzalki, zmieni sie stopien<br />

obrotu klipu filmowego. Zmienia sie tez<br />

wartosci x oraz y, obliczone na podstawie<br />

kata klipu filmowego. Klip filmowy bedzie<br />

sie poruszal w kierunku, w jakim<br />

skierowany jest jego „nos” (tutaj – przód<br />

samochodu) (rys. 11.22).<br />

Rys. 11.21. Ostatnie trzy wyrazenia<br />

setProperty widoczne w oknie skryptu<br />

modyfikuja pozycje x i y w zmiennych<br />

xchange oraz ychange; zmieniaja tez stopien<br />

obrotu klipu filmowego na podstawie<br />

zmiennej myRotation<br />

Rys. 11.22. Kiedy klip filmowy samochodu<br />

obraca sie, wartosci x i y sa obliczane na<br />

podstawie sinusa oraz cosinusa kata,<br />

a w rezultacie definiowana jest nowa<br />

pozycja samochodu<br />

352


Manipulowanie danymi<br />

c<br />

b<br />

Obliczanie odleglosci<br />

za pomoca<br />

obiektu matematycznego<br />

a<br />

Rys. 11.23. Ten trójkat prostokatny ma boki<br />

oznaczone jako a, b i c<br />

Dzieki wykorzystaniu wlasciwosci twierdzenia<br />

Pitagorasa, Flash umozliwia obliczenie<br />

odleglosci pomiedzy dwoma obiektami.<br />

Technika ta moze byc uzyteczna w tworzeniu<br />

niespotykanych interakcji, zachodzacych<br />

miedzy elementami interfejsu – np. grafika,<br />

przyciskami lub dzwiekami, reagujacymi<br />

w zaleznosci od ich odleglosci w stosunku<br />

do wskaznika myszy. Mozliwe jest nawet<br />

projektowanie gier z interakcja bazujaca na<br />

odleglosci miedzy obiektami i graczem.<br />

Przykladowo, gra, w której gracz uzywa siatki<br />

do zlapania zlotej rybki plywajacej po<br />

akwarium, moze wykorzystywac odleglosc<br />

pomiedzy zlota rybka i siatka w celu<br />

zasymulowania zachowania rybki. Byc moze<br />

im blizej znajduje sie siatka, tym szybciej rybka<br />

bedzie uciekac.<br />

Odleglosc pomiedzy dwoma dowolnymi<br />

punktami jest opisywana równaniem:<br />

a 2 + b 2 = c 2<br />

lub<br />

c = pierwiastek kwadratowy (a 2 + b 2 )<br />

Zmienne a i b o znaczaja dlugosci boków<br />

trójkata prostokatnego, natomiast c jest<br />

dlugoscia przeciwprostokatnej (rys. 11.23).<br />

Uzywajac metod Flasha, Math.sqrt oraz<br />

Math.pow, odleglosc miedzy punktami na<br />

przeciwprostokatnej mozna obliczyc za pomoca<br />

wyrazenia:<br />

c = Math.sqrt ((Math.pow (a, 2)) +<br />

(Math.pow (b, 2)));<br />

Obliczanie odleglosci<br />

353


Rozdzial 11.<br />

Obliczanie odleglosci<br />

W celu obliczenia odleglosci<br />

pomiedzy wskaznikiem myszy<br />

i dowolnym punktem:<br />

1. Utwórz klip filmowy i umiesc jego klon na<br />

scenie. Za pomoca pola Name palety<br />

Instance nadaj mu nazwe.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Mouse move.<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz xDistance. W polu Value<br />

wpisz:<br />

_root._xmouse – this._x<br />

Zaznacz pole wyboru Expression obok pola<br />

Value.<br />

Odleglosc pomiedzy wspólrzedna x<br />

polozenia wskaznika myszy i wspólrzedna x<br />

polozenia klipu filmowego zostanie<br />

przypisana do zmiennej xDistance<br />

(rys. 11.24).<br />

5. Wybierz Actions/set variable. W polu<br />

Variable wpisz yDistance. W polu Value<br />

wpisz:<br />

_root._ymouse – this._y<br />

Zaznacz pole wyboru Expression obok pola<br />

Value.<br />

Odleglosc pomiedzy wspólrzedna y<br />

polozenia wskaznika myszy i wspólrzedna y<br />

polozenia klipu filmowego zostanie<br />

przypisana do zmiennej yDistance<br />

(rys. 11.25).<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej<br />

myDistance. Umiesc wskaznik w polu<br />

Value i wybierz Objects/Math/sqrt.<br />

W polu Value pojawi sie metoda<br />

Math.sqrt z podswietlonym argumentem.<br />

Rys. 11.24. Róznica pomiedzy wspólrzedna x<br />

polozenia wskaznika myszy i wspólrzedna x<br />

polozenia klipu filmowego stanowi odleglosc<br />

miedzy nimi na osi x<br />

Rys. 11.25. Róznica pomiedzy wspólrzedna y<br />

polozenia wskaznika myszy i wspólrzedna y<br />

polozenia klipu filmowego stanowi odleglosc<br />

miedzy nimi na osi y<br />

354


Manipulowanie danymi<br />

Rys. 11.26. Odleglosc miedzy dwoma punktami<br />

jest obliczana na podstawie wartosci zmiennych<br />

xDistance i yDistance<br />

Zmienna<br />

myDistance<br />

Blok dynamicznego<br />

tekstu myDisplay<br />

7. W miejsce podswietlonego argumentu<br />

wstaw nowy, wybierajac<br />

Objects/Math/pow i wpisujac xDistance<br />

oraz 2 dla metody Math.pow. Dodaj kolejna<br />

metode Math.pow, z argumentami<br />

yDistance i 2 (rys. 11.26).<br />

Flash obliczy kwadrat wartosci zmiennej<br />

xDistance i doda ja do kwadratu wartosci<br />

zmiennej yDistance. Nastepnie obliczy<br />

kwadrat wartosci tej sumy.<br />

8. Wybierz Actions/set variable. Przypisz<br />

wartosc zmiennej myDistance do bloku<br />

dynamicznego tekstu na scenie (rys. 11.27).<br />

9. Przetestuj film.<br />

Kiedy wskaznik przemieszcza sie po<br />

obszarze klipu filmowego, Flash oblicza<br />

odleglosc miedzy nimi w pikselach.<br />

Rys. 11.27. Blok dynamicznego tekstu myDisplay<br />

pokazuje wartosc calkowita zmiennej myDistance<br />

Obliczanie odleglosci<br />

355


Rozdzial 11.<br />

Generowanie liczb losowych<br />

Generowanie liczb losowych<br />

Gdybys potrzebowal wlaczyc do swojego filmu<br />

Flasha jakies elementy przypadkowosci, czy to<br />

dla uatrakcyjnienia projektu, czy tez na potrzeby<br />

mechaniki gry, mozesz w tym celu skorzystac<br />

z metody obiektu matematycznego o nazwie<br />

Math.random. Metoda ta pozwala generowac<br />

liczby z zakresu 0 do 1, z uwzglednieniem<br />

maksymalnie 15 miejsc po przecinku.<br />

Przykladowe wartosci zwracane przez te metode<br />

moga wygladac nastepujaco:<br />

0.242343544598273<br />

0.043628738493829<br />

0.7567833408654<br />

Liczbe losowa mozna modyfikowac, mnozac jej<br />

wartosc lub dodajac do niej inna wartosc<br />

i w efekcie otrzymujac okreslony zakres liczb.<br />

Przykladowo, jesli potrzebujesz liczb losowych<br />

z zakresu 1 do 10, pomnóz wartosc zwracana<br />

przez metode Math.random przez 9,<br />

a nastepnie dodaj 1, jak w wyrazeniu:<br />

Math.random () * 9 + 1;<br />

Jesli chodzi ci o liczbe calkowita, uzyj metody<br />

Math.round, która zaokragli wartosc do<br />

najblizszej liczby calkowitej.<br />

W celu wygenerowania liczby losowej:<br />

1. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz klon i otwórz palete akcji.<br />

2. Wybierz Actions/set variable.<br />

3. W polu Variable wpisz nazwe zmiennej.<br />

Umiesc wskaznik myszy w polu Value<br />

i wybierz Objects/Math/random. Zaznacz<br />

pole wyboru Expression.<br />

W polu Variable pojawi sie metoda<br />

Math.random (rys. 11.28).<br />

4. Utwórz na scenie blok dynamicznego tekstu,<br />

o tej samej nazwie zmiennej, jakiej uzyles<br />

w przypadku akcji przypisanych do klonu<br />

przycisku. Po kliknieciu przycisku,<br />

wygenerowana zostanie nowa liczba losowa<br />

z zakresu 0 do 1. Zobaczysz ja w bloku<br />

dynamicznego tekstu.<br />

Rys. 11.28. Liczba losowa z zakresu 0 do 1<br />

jest przypisywana do zmiennej<br />

myRandomNumber (moja liczba losowa)<br />

356


Manipulowanie danymi<br />

Rys. 11.29. Zmienna myRandomX jest<br />

przypisywana do liczby z zakresu 1 do 300<br />

Rys. 11.30. Wspólrzedna x polozenia klipu<br />

filmowego otrzymuje zaokraglona wartosc<br />

zmiennej myRandomX<br />

Wykorzystaj losowo generowane liczby do<br />

nadania twojemu filmowi nieprzewidywalnych,<br />

animowanych elementów. Wrogie statki<br />

kosmiczne w grze zrecznosciowej moga<br />

atakowac z któregokolwiek miejsca na ekranie.<br />

Mozesz zmusic Flasha do losowego rozdawania<br />

kart z talii – tak, ze kazda sterta bedzie inna niz<br />

pozostale. Tymczasem na potrzeby testu dobrze<br />

byloby wymieszac czasem kolejnosc pojawiania<br />

sie pytan. Ponizsze cwiczenie demonstruje<br />

sposób, w jaki liczby losowe moga<br />

modyfikowac wartosci wlasciwosci, zmieniajac<br />

wlasciwosci x oraz y klipu filmowego:<br />

W celu uzycia liczb losowych<br />

jako wartosci wlasciwosci:<br />

1. Stwórz symbol klipu filmowego i umiesc<br />

jego klon na scenie. Nadaj mu nazwe przy<br />

pomocy pola Name palety Instance.<br />

2. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

3. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe zmiennej. W polu<br />

Value wpisz:<br />

Math.random () * 299 + 1;<br />

Zaznacz pole Expression.<br />

Flash wygeneruje liczbe losowa z zakresu 1<br />

do 300 (rys. 11.29).<br />

5. Ponownie wybierz Actions/set variable.<br />

Przypisz druga zmienna do liczby losowej<br />

z zakresu 1 do 300.<br />

6. Wybierz Actions/setProperty. W menu<br />

rozwijanym Property zaznacz X Position.<br />

W polu Target wpisz this. W polu Value,<br />

nadaj metode Math.round pierwszej<br />

z wygenerowanych liczb losowych. Zaznacz<br />

obydwa pola wyboru Expression<br />

(rys. 11.30).<br />

Wspólrzedna polozenia x klipu filmowego<br />

zostanie przypisana do pierwszej<br />

wygenerowanej losowo liczby.<br />

Generowanie liczb losowych<br />

357


Rozdzial 11.<br />

Generowanie liczb losowych<br />

7. Wybierz Actions/setProperty. W menu<br />

rozwijanym Property zaznacz Y Position.<br />

W polu Target wpisz this. W polu Value,<br />

nadaj metode Math.round drugiej<br />

z wygenerowanych liczb losowych. Zaznacz<br />

obydwa pola wyboru Expression.<br />

Wspólrzedna polozenia y klipu filmowego<br />

zostanie przypisana do pierwszej<br />

wygenerowanej losowo liczby (rys. 11.31).<br />

8. Ustaw rozmiar sceny na 300×300. Przetestuj<br />

film. Wspólrzedne polozenia klipu<br />

filmowego zmieniaja sie losowo i w efekcie<br />

klip pojawia sie w róznych punktach sceny.<br />

Wskazówka<br />

• Metoda Math.random zastepuje akcje<br />

random, uzywana we wczesniejszych<br />

wersjach Flasha. Chociaz akcja ta wciaz<br />

dziala, to jednak nalezy do grupy funkcji<br />

odrzuconych, wiec do generowania liczb<br />

losowych postaraj sie raczej uzywac obiektu<br />

matematycznego.<br />

Klip filmowy<br />

Rys. 11.31. Wspólrzedna y polozenia klipu<br />

filmowego otrzymuje zaokraglona wartosc<br />

zmiennej myRandomY. Klip filmowy zmienia<br />

teraz swoja pozycje na scenie w sposób<br />

losowy (u góry)<br />

358


Manipulowanie danymi<br />

Rys. 11.32. Tablica przypomina dwukolumnowa<br />

tabele, przy czym jedna z kolumn zawiera<br />

indeksy, a druga odpowiadajace im wartosci<br />

Porzadkowanie informacji<br />

za pomoca tablic<br />

Kiedy masz do czynienia z wieloma<br />

fragmentami powiazanych informacji<br />

przeznaczonych do przechowywania, moze<br />

zajsc potrzeba skorzystania z obiektu<br />

tablicowego (Array) do odpowiedniego<br />

ulozenia tych informacji. Tablice sa, podobnie<br />

jak zmienne, pojemnikami na dane, tyle ze –<br />

w odróznieniu od zmiennych – przechowuja te<br />

dane w okreslonej sekwencji, nazywanej<br />

indeksem (index). Pierwszy indeks ma zawsze<br />

wartosc 0, a kolejne indeksy oznaczane sa<br />

sekwencyjnie, tak wiec kazdy fragment danych<br />

odpowiada jednemu indeksowi, tak jak to<br />

zilustrowano w dwukolumnowej tabeli na<br />

rys. 11.32. Skoro kazdy fragment danych jest<br />

ulozony numerycznie, informacje moga byc<br />

odczytywane i modyfikowane w latwy, a co<br />

wazniejsze, automatyczny sposób, po prostu<br />

przez odwolanie do indeksu. Zalózmy np., ze<br />

tworzysz obcojezyczny samouczek i pragniesz<br />

miec mozliwosc sprawdzania zawartosci<br />

wprowadzonego przez uzytkownika tekstu<br />

w poszukiwaniu waznych slów. Móglbys<br />

w takiej sytuacji przechowywac te slowa<br />

w tablicach, gdzie indeks 0 wskazywalby<br />

pierwsze slowo, indeks 1 drugie, itd. Uzywajac<br />

wyrazenia do utworzenia petli, mozesz<br />

automatycznie sprawdzac wprowadzany tekst<br />

pod katem kazdej z danych przechowywanych<br />

w tablicy.<br />

Indeksy tablic podaje sie w nawiasach<br />

kwadratowych, jak w wyrazeniu:<br />

mojaTablica[4]<br />

Nawiasy kwadratowe nazywaja sie tutaj<br />

operatorami dostepu do tablic. Powyzsze<br />

wyrazenie daje dostep do danych w indeksie 4<br />

tablicy o nazwie mojaTablica. Liczba danych<br />

okresla dlugosc tablicy, wiec tablica na<br />

rys. 11.32 ma dlugosc 6. Tablica przypomina<br />

taka sekwencje uporzadkowanych zmiennych.<br />

Porzadkowanie informacji<br />

359


Rozdzial 11.<br />

Porzadkowanie informacji<br />

Na przyklad, zmienne mojeWyniki0,<br />

mojeWyniki1, mojeWyniki2 i mojeWyniki3<br />

moga tworzyc razem pojedyncza tablice<br />

o nazwie mojeWyniki i dlugosci 4, z indeksami<br />

pomiedzy 0 i 3. Jako ze ostatecznie masz do<br />

czynienia z jednym obiektem tablicowym<br />

zamiast czterech osobnych zmiennych,<br />

uzywanie tablic znacznie ulatwia zarzadzanie<br />

danymi.<br />

Dane przechowywane w tablicach moga byc<br />

mieszane. Tak wiec mozliwe jest przypisanie<br />

do indeksu 0 liczby, lancucha znakowego do<br />

indeksu 1 i wartosci logicznej do indeksu 2. I<br />

podobnie, jak w przypadku zmiennych, mozesz<br />

w dowolnej chwili zmieniac zawartosc kazdego<br />

z indeksów tablicy. Dlugosc tablicy tez nie jest<br />

scisle okreslona, dzieki czemu tablice moga<br />

odpowiednio zwiekszac lub zmniejszac<br />

pojemnosc stosownie do potrzeb.<br />

Na stworzenie tablicy skladaja sie dwie<br />

czynnosci. Pierwsza to przygotowanie klonu<br />

nowej tablicy z obiektu tablicowego za pomoca<br />

funkcji konstruktora. Oto przyklad:<br />

mojaZmienna = new Array ();<br />

Druga czynnosc to wypelnienie tablicy danymi.<br />

Jednym ze sposobów wypelnienia tablicy jest<br />

przypisanie danej do kazdego indeksu<br />

w osobnym wyrazeniu:<br />

mojaTablica [0] = "Russel";<br />

mojaTablica [1] = "Rebecca";<br />

mojaTablica [2] = "Elissa";<br />

mojaTablica [3] = "Marjorie";<br />

Drugi sposób polega na podstawieniu danych<br />

za pomoca funkcji konstruktora:<br />

MojaTablica = new Array ("Russel",<br />

"Rebecca", "Elissa", "Marjorie");<br />

Powyzsza metoda jest poreczniejsza<br />

w wypelnianiu tablic, ale musisz pamietac<br />

o wprowadzaniu danych w sekwencji.<br />

360


Manipulowanie danymi<br />

Rys. 11.33. Utworzono klon nowego obiektu<br />

o nazwie myArray (moja tablica)<br />

Rys. 11.34. Ta tablica zawiera trzy wpisy<br />

W celu utworzenia tablicy:<br />

1. Zaznacz pierwsze ujecie kluczowe na listwie<br />

czasowej i otwórz palete akcji.<br />

2. Wybierz Actions/set variable.<br />

3. W polu Variable wpisz nazwe twojej<br />

tablicy. Umiesc kursor w polu Value<br />

i wybierz Objects/Array/new Array.<br />

Zaznacz pole wyboru Expression obok pola<br />

Value.<br />

W polu Value pojawi sie funkcja<br />

konstruktora new Array. Flash utworzy<br />

klon nowej tablicy (rys. 11.33).<br />

4. Wybierz Actions/set variable.<br />

5. W polu Variable wpisz nazwe twojej nowej<br />

tablicy, a nastepnie indeks w nawiasach<br />

kwadratowych. W polu Value wprowadz<br />

dane, które maja byc przechowywane<br />

w tablicy pod tym indeksem (rys. 11.34).<br />

6. Kontynuuj korzystanie z polecenia<br />

Actions/set variable w celu przypisania<br />

kolejnych danych do tablicy.<br />

Wskazówka<br />

• Mozesz predefiniowac dlugosc nowej<br />

tablicy, umieszczajac liczbe w nawiasach<br />

funkcji konstruktora. Przykladowo,<br />

wyrazenie:<br />

mojaTablica = new Array (4)<br />

utworzy nowa tablice o dlugosci czterech<br />

wpisów. Nawet jesli nie wypelnisz<br />

wszystkich pozycji tablicy, mojaTablica<br />

i tak bedzie miala dlugosc 4.<br />

Porzadkowanie informacji<br />

361


Rozdzial 11.<br />

Porzadkowanie informacji<br />

Jako ze dane zawarte w tablicach sa<br />

indeksowane numerycznie, swietnie nadaja sie<br />

do wykorzystania w zapetlonych akcjach.<br />

Korzystajac z akcji tego typu, np. while,<br />

do while i for, mozesz sprawic, ze Flash<br />

przesledzi wartosc kazdego indeksu oraz<br />

odczyta lub przypisze nowe dane szybko<br />

i automatycznie. Przykladowo, zeby ustalic<br />

srednia punktów kilku graczy w tablicy bez<br />

zapetlajacej sie akcji, musialbys zsumowac<br />

wszystkie zdobyte przez nich punkty i podzielic<br />

otrzymana wartosc przez liczbe graczy, jak<br />

w wyrazeniu:<br />

mojaSuma = mojePunkty [0] +<br />

mojePunkty [1] + mojePunkty [2] +<br />

... ;<br />

mojaSrednia =<br />

mojaSuma/mojePunkty.length;<br />

Wlasciwosc length definiuje liczbe pozycji<br />

w tablicy.<br />

Jednak uzywajac zapetlonej akcji, móglbys<br />

obliczyc wartosc mojaSuma nastepujaco:<br />

For (i=0; i


Manipulowanie danymi<br />

Rys. 11.36. Ta akcja for bedzie wykonana tyle<br />

razy, ile jest wpisów w tablicy myScore<br />

Rys. 11.37. Zmienna mySum dodaje wartosc<br />

kazdego z wpisów w tablicy<br />

Rys. 11.38. Poza petla for, zmienna myAverage<br />

oblicza srednia wartosc wpisów w tablicy<br />

4. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz klon przycisku i otwórz<br />

palete akcji.<br />

5. Wybierz Actions/for. W polu Init wpisz<br />

i=0. W polu Condition wprowadz<br />

i


Rozdzial 11.<br />

Metody obiektu tablicowego pozwalaja<br />

sortowac, usuwac, dodawac dane zgromadzone<br />

w tablicy i manipulowac . Liste metod obiektu<br />

tablicowego przedstawia tabela 11.2. Bardzo<br />

pomocne jest rozwazanie metod w parach.<br />

Przykladowo, shift oraz unshift to metody<br />

modyfikujace poczatek tablicy; push i pop<br />

modyfikuja koniec tablicy; wreszcie slice<br />

i spice pozwalaja modyfikowac srodek tablicy.<br />

Porzadkowanie informacji<br />

Tabela 11.2. Metody obiektu tablicowego<br />

Metoda<br />

Opis<br />

concat(array1,...,arrayN) Wiaze wskazane wartosci (tablice) i zwraca nowa tablice.<br />

join(separator)<br />

Wiaze elementy tablicy, wstawia pomiedzy elementy separator<br />

(dowolny znak) i zwraca lancuch znakowy.<br />

pop()<br />

Usuwa ostatni element w tablicy i zwraca wartosc tego elementu.<br />

push(value)<br />

Dodaje elementy do konca tablicy i zwraca nowa dlugosc.<br />

shift()<br />

Usuwa pierwszy element w tablicy i zwraca wartosc tego elementu.<br />

unshift(value)<br />

Dodaje elementy do poczatku tablicy i zwraca nowa dlugosc.<br />

slice(indexA, indexB) Zwraca nowa tablice zaczynajaca sie od indexA i konczaca sie na<br />

(indexB-1).<br />

splice(index, count,<br />

elem1,..., elemN)<br />

reverse()<br />

sort()<br />

toString()<br />

Wstawia lub usuwa elementy. Ustaw count to 0 w celu<br />

wstawienia wskazanych wartosci zaczynajac o indeksu. Ustaw<br />

count>0 w celu usuniecia danej liczby elementów, zaczynajac od<br />

indeksu (i lacznie z tym indeksem).<br />

Odwraca kolejnosc elementów w tablicy.<br />

Sortuje tablice, uzywajac operatora


Manipulowanie danymi<br />

Tabela 11.2. Metody obiektu tablicowego (ciag dalszy)<br />

Ponizej przedstawiono przyklady dzialania niektórych metod:<br />

Wyrazenie<br />

Wartosc tablicy myArray<br />

myArray = new Array (2, 4, 6, 8) 2, 4, 6, 8<br />

myArray.pop() 2, 4, 6<br />

myArray.push(1, 3) 2, 4, 6, 1, 3<br />

myArray.shift() 4, 6, 1, 3<br />

myArray.unshift(5, 7) 5, 7, 4, 6, 1, 3<br />

myArray.splice(2, 0, 8, 9) 5, 7, 8, 9, 4, 6, 1, 3,<br />

myArray.splice(3, 2) 5, 7, 8, 6, 1, 3,<br />

myArray.reverse() 3, 1, 6, 8, 7, 5<br />

myArray.sort() 1, 3, 5, 6, 7, 8<br />

Wskazówki<br />

• Nalezy pamietac, które metody obiektu<br />

tablicowego modyfikuja biezaca tablice,<br />

a które zwracaja nowa tablice. Metody<br />

concat, join, slice i toString zwracaja<br />

nowe tablice lub lancuchy znakowe<br />

i wymagaja przypisania ich wartosci<br />

do zmiennych. Przykladowo,<br />

mojaNowaTablica = mojaTablica.<br />

concat(8) umieszcza 8 na koncu tablicy<br />

mojaTablica i przypisuje koncowa postac<br />

tej tablicy do mojaNowaTablica.<br />

• Zwróc takze uwage na to, ze niektóre<br />

metody modyfikuja tablice, jak równiez<br />

zwracaja specyficzna wartosc. To nie jest to<br />

samo. Przykladowo, wyrazenie<br />

mojaTablica.pop() modyfikuje tablice<br />

mojaTablica, usuwajac ostatni element,<br />

a ponadto zwraca wartosc tego ostatniego<br />

elementu. Rozwaz przyklad:<br />

mojaTablica = new Array (2, 4, 6,<br />

8);<br />

mojeUsuniecie =<br />

mojaTablica.pop();<br />

Wartosc mojeUsuniecie to 8, a wartoscia<br />

tablicy mojaTablica jest teraz 2, 4, 6.<br />

Porzadkowanie informacji<br />

365


Wskazania daty i pomiaru czasu<br />

Rozdzial 11.<br />

Wprowadzanie<br />

wskazan daty i pomiaru czasu<br />

Obiekt daty (Date) umozliwia odczytanie<br />

informacji o dacie i czasie lokalnym oraz<br />

uniwersalnym (GMT) na podstawie zegara<br />

systemowego w komputerze uzytkownika.<br />

Za pomoca obiektu daty uzyskasz takie<br />

informacje, jak rok, miesiac, dzien, dzien<br />

tygodnia, godzina, minuta sekunda<br />

i milisekunda. Uzyj obiektu i jego metod<br />

do wprowadzenia do filmu zegara lub tez do<br />

uzyskiwania informacji o okreslonych datach<br />

z przeszlosci. Mozesz, na przyklad,<br />

przygotowac obiekt daty dla dnia twoich<br />

urodzin, podajac miesiac, dzien i rok. Pózniej,<br />

za pomoca metod obiektu daty, bedziesz mógl<br />

okreslic dzien tygodnia, w którym przyszedles<br />

na swiat.<br />

Zeby móc uzyc obiektu daty, trzeba najpierw<br />

utworzyc jego klon, poslugujac sie przy tym<br />

funkcja konstruktora new Date. Potem mozna<br />

juz wywolywac metody obiektu i uzyskiwac<br />

pozadane informacje. Powszechnie uzywane<br />

metody, sluzace do uzyskiwania informacji<br />

o dacie i czasie, przedstawia tabela 11.3.<br />

W celu utworzenia zegara:<br />

1. Utwórz na scenie blok dynamicznego tekstu<br />

i nadaj mu nazwe zmiennej.<br />

2. Zaznacz blok dynamicznego tekstu<br />

i wybierz Insert/Convert to Symbol.<br />

Przydziel dla symbolu nazwe i wybierz<br />

opcje Movie Clip w typie Behavior.<br />

Kliknij OK.<br />

Twój blok dynamicznego tekstu zostanie<br />

umieszczony w symbolu klipu filmowego,<br />

którego klon pozostanie na scenie.<br />

3. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

4. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

Tabela 11.3. Metody obiektu daty<br />

Metoda<br />

getDate()<br />

getDay()<br />

getFullYear()<br />

getHours()<br />

Opis<br />

Zwraca dzien miesiaca,<br />

w postaci liczby<br />

z zakresu 1 do 31.<br />

Zwraca dzien tygodnia,<br />

w postaci liczby<br />

z zakresu 0 (niedziela)<br />

do 6 (sobota).<br />

Zwraca rok, w postaci<br />

czterocyfrowej liczby.<br />

Zwraca godzine<br />

w ciagu dnia,<br />

w postaci liczby<br />

z zakresu 0 do 23.<br />

getMiliseconds() Zawraca milisekundy.<br />

getMinutes() Zwraca minuty,<br />

w postaci liczby<br />

z zakresu 0 do 59.<br />

getMonth() Zwraca miesiac,<br />

w postaci liczby<br />

z zakresu 0 (styczen)<br />

do 11 (grudzien).<br />

getSeconds() Zwraca sekundy,<br />

w postaci liczby<br />

z zakresu 0 do 59.<br />

366


Manipulowanie danymi<br />

Rys. 11.39. Argumenty funkcji konstruktora<br />

new Date podaje sie opcjonalnie<br />

Rys. 11.40. Biezace wskazania godzinowe sa<br />

przypisywane do zmiennej currentHour<br />

Rys. 11.41. Wskazania godzinowe, minutowe<br />

i sekundowe sa przypisane do róznych zmiennych<br />

• Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe nowego obiektu daty.<br />

Umiesc kursor w polu Value i wybierz<br />

Objects/Date/new Date. Zaznacz pole<br />

wyboru Expression obok pola Value.<br />

W polu Value pojawi sie funkcja<br />

konstruktora new Date z podswietlonymi<br />

argumentami (rys. 11.39).<br />

5. Usun wszystkie podswietlone argumenty<br />

funkcji konstruktora new Date. Nie podajac<br />

argumentów dla obiektu daty, utworzysz<br />

w efekcie obiekt podstawowy, odczytujacy<br />

biezaca date i czas. Jesli okreslisz<br />

argumenty, bedziesz mógl przygotowac<br />

obiekt odnoszacy sie do specyficznej daty<br />

lub czasu.<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz currentHour. W polu<br />

Value podaj nazwe twojego obiektu daty.<br />

Majac kursor w polu Value, wybierz<br />

Objects/Date/getHours. Zaznacz pole<br />

Expression.<br />

Metoda getHours pojawi sie za nazwa<br />

obiektu daty. Flash odczyta biezace<br />

wskazania godziny i podstawi zwrócona<br />

wartosc do zmiennej o nazwie currentHour<br />

(aktualna godzina) (rys. 11.40).<br />

7. Powtórz czynnosci poprzedniego kroku<br />

w celu uzyskania biezacych wskazan<br />

minutowych (metoda getMinutes)<br />

i sekundowych (metoda getSeconds)<br />

oraz przypisania zwróconych wartosci<br />

do zmiennych (rys. 11.41).<br />

8. Wybierz Actions/if. W polu Condition<br />

wpisz:<br />

currentHour > 12<br />

Wskazania daty i pomiaru czasu<br />

367


Rozdzial 11.<br />

Wskazania daty i pomiaru czasu<br />

9. Wybierz Actions/set variable. W polu<br />

Variable wpisz currentHour. W polu<br />

Value wpisz:<br />

CurrentHour-12; (rys. 11.42).<br />

10. Wybierz Actions/else if. W polu Condition<br />

wpisz:<br />

CurrentHour == 0<br />

11. Wybierz Actions/set variable. W polu<br />

Variable wpisz currentHour. W polu<br />

Value wpisz 12. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 11.43).<br />

12. Zaznacz nawias zamykajacy wyrazenia<br />

else i wybierz Actions/set variable.<br />

W polu Variable wpisz nazwe bloku<br />

dynamicznego tekstu. W polu Value powiaz<br />

nazwy zmiennych odpowiadajacych<br />

wskazaniom godzin, minut i sekund, nie<br />

zapominajac o odstepach pomiedzy<br />

kole jnymi argumentami. Zaznacz pole<br />

wyboru Expression obok pola Value<br />

(rys. 11.44).<br />

13. Przetestuj film.<br />

Blok dynamicznego tekstu bedzie<br />

wyswietlal biezacy czas (godzine, minute<br />

i sekunde) w formacie 12-godzinnym.<br />

Wskazówka<br />

• Zauwaz, ze minuty i sekundy o wartosciach<br />

mniejszych niz 10 sa wyswietlane jako<br />

pojedyncze cyfry – 1,2, itd. w miejsce 01,<br />

02, itd. Mozesz to zmienic, dodajac<br />

wyrazenie warunkowe sprawdzajace biezace<br />

wskazania minutowe i sekundowe,<br />

a nastepnie dodajace na poczatek – jesli<br />

trzeba – cyfre 0.<br />

Rys. 11.42. Wartoscia zwracana przez<br />

metode getHours jest liczba z zakresu 0 do<br />

23. W celu dokonania konwersji na<br />

wskazania w formacie 12-godzinnym, odejmij<br />

12 od wartosci wiekszej niz 12<br />

Rys. 11.43. Poniewaz na naszych zegarach<br />

nie ma godziny „0”, Flash moze przypisac 12<br />

do kazdego wskazania godzinowego<br />

o wartosci 0<br />

Blok<br />

dynamicznego<br />

tekstu<br />

myDisplay<br />

Rys. 11.44. Blok dynamicznego tekstu<br />

(u góry) wyswietla powiazane wartosci<br />

368


Manipulowanie danymi<br />

Rys. 11.45. Tablica daysofWeek (dni tygodnia)<br />

zawiera lancuchy znakowe przedstawiajace<br />

nazwy dni tygodnia<br />

Wartosci zwracane przez metody getMonth<br />

i getDays obiektu daty sa liczbami, nie<br />

lancuchami znakowymi. Metoda getMonth<br />

zwraca wartosci od 0 do 11 (0 = styczen),<br />

a metoda getDays zwraca wartosci od 0 do 6<br />

(0 = niedziela). W celu przypisania do tych<br />

wartosci nazw miesiecy i dni tygodnia, mozna<br />

utworzyc tablice przechowujace tego typu<br />

informacje. Przykladowo, tablica<br />

przechowujaca nazwy dni tygodnia moze byc<br />

przygotowana za pomoca nastepujacych<br />

wyrazen:<br />

daysofWeek = new Array ();<br />

daysofWeek[0] = "Niedziela";<br />

daysofWeek[1] = "Poniedzialek";<br />

daysofWeek[2] = "Wtorek";<br />

daysofWeek[3] = "Sroda";<br />

daysofWeek[4] = "Czwartek";<br />

daysofWeek[5] = "Piatek";<br />

daysofWeek[6] = "Sobota";<br />

W celu utworzenia kalendarza:<br />

1. Zaznacz pierwsze ujecie kluczowe na listwie<br />

czasowej i otwórz palete akcji.<br />

2. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe nowej tablicy, która<br />

bedzie przechowywac nazwy dni tygodnia.<br />

W polu Value wprowadz funkcje<br />

konstruktora new Array. Zaznacz pole<br />

wyboru Expression obok pola Value.<br />

3. W sekwencji wyrazen, przypisz do kazdego<br />

indeksu nowej tablicy lancuch znakowy,<br />

reprezentujacy nazwe kolejnego dnia<br />

tygodnia (rys. 11.45).<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe drugiej tablicy, która<br />

bedzie przechowywac nazwy miesiecy.<br />

W polu Value wprowadz funkcje<br />

konstruktora new Array. Zaznacz pole<br />

wyboru Expression obok pola Value.<br />

Wskazania daty i pomiaru czasu<br />

369


Rozdzial 11.<br />

Wskazania daty i pomiaru czasu<br />

5. W sekwencji wyrazen, przypisz do kazdego<br />

indeksu nowej tablicy lancuch znakowy,<br />

reprezentujacy nazwe kolejnego miesiaca<br />

(rys. 11.46).<br />

6. Utwórz na scenie blok dynamicznego tekstu<br />

i nadaj mu nazwe zmiennej.<br />

7. Zaznacz blok dynamicznego tekstu<br />

i wybierz Insert/Convert to Symbol.<br />

Wybierz nazwe dla symbolu i zaznacz opcje<br />

Movie Clip w typie Behavior. Kliknij OK.<br />

Twój blok dynamicznego tekstu zostanie<br />

umieszczony w symbolu klipu filmo wego,<br />

którego klon pozostanie na scenie.<br />

8. Zaznacz klon klipu filmowego i otwórz<br />

palete akcji.<br />

9. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Load.<br />

10. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe twojego nowego<br />

obiektu daty. W polu Value wprowadz<br />

funkcje konstruktora new Date bez<br />

zadnych argumentów. Zaznacz pole<br />

Expression.<br />

11. W sekwencji wyrazen wywolaj metody<br />

getFullYear, getMonth, getDate<br />

i getDay oraz przypisz ich wartosci do<br />

nowych zmiennych (rys. 11.47).<br />

12. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe bloku dynamicznego<br />

tekstu. W polu Value wprowadz sciezke<br />

dostepu do tablicy przechowujacej nazwy<br />

dni tygodnia. Dolacz jako jej indeks<br />

zmienna zawierajaca wartosc zwrócona<br />

przez metode getDay (rys. 11.48).<br />

Rys. 11.46. Tablica daysofMonth (dni<br />

miesiaca) zawiera lancuchy znakowe<br />

przedstawiajace nazwy miesiecy<br />

Rys. 11.47. Biezace wskazania roku,<br />

miesiaca, daty i dnia tygodnia sa<br />

przypisywane do nowych zmiennych<br />

Rys. 11.48. Wartosc zmiennej currentDay<br />

(aktualny dzien) to liczba z zakresu 0 do 6.<br />

Wyrazenie w polu Value odczytuje wlasciwy<br />

lancuch znakowy z tablicy, odpowiadajacy<br />

nazwie aktualnego dnia<br />

370


Manipulowanie danymi<br />

Blok dynamicznego tekstu myDisplay<br />

Rys. 11.49. Informacje o dniu tygodnia, miesiacu,<br />

dacie i roku sa powiazane i wyswietlane w bloku<br />

tekstowym myDisplay (u góry)<br />

13. Dowiaz tablice zawierajaca nazwy dni<br />

miesiaca. Jako jej indeks, umiesc zmienna<br />

zawierajaca wartosc zwrócona przez metode<br />

getMonth. Dowiaz tez pozostale zmienne,<br />

przechowujace aktualna date i rok<br />

(rys. 11.49).<br />

14. Przetestuj film.<br />

Flash poda dzien, miesiac, date i rok,<br />

odczytane na podstawie zegara<br />

systemowego. Nazwy dni tygodnia<br />

i miesiecy sa odczytywane z tablic, które<br />

zainicjowales w pierwszym ujeciu<br />

kluczowym, a koncowa informacja pojawia<br />

sie w bloku dynamicznego tekstu.<br />

Jeszcze innym sposobem na wprowadzenie<br />

do filmu elementu pomiaru czasu jest uzycie<br />

funkcji Flasha o nazwie getTimer. Funkcja ta<br />

zwraca liczbe milisekund, które uplynely od<br />

momentu rozpoczecia odtwarzania filmu Flasha.<br />

Mozesz porównac wartosc zwrócona przez<br />

metode getTimer jednego punktu w czasie do<br />

wartosci zwróconej innego punktu, a otrzymana<br />

róznica bedzie czasem, który uplynal pomiedzy<br />

tymi dwoma punktami. Wykorzystaj te funkcje<br />

do tworzenia timerów w grach i innych<br />

zdarzeniach wystepujacych w filmie Flasha.<br />

Przykladowo, mozna mierzyc czas potrzebny<br />

uzytkownikowi na udzielenie poprawnych<br />

odpowiedzi w tescie czy tez wyznaczyc pewien<br />

limit czasowy na ukonczenie testu. Mozna tez<br />

nagradzac gracza wieksza iloscia punktów, jesli<br />

ukonczy misje w wyznaczonym czasie.<br />

Jako ze getTimer jest funkcja, a nie obiektem,<br />

nie potrzebujesz uzywac funkcji konstruktora<br />

w celu utworzenia jego klonu i dzieki temu<br />

latwo sie ta funkcja poslugiwac.<br />

W celu utworzenia timera:<br />

1. Utwórz na scenie blok dynamicznego tekstu<br />

i nadaj mu nazwe zmiennej.<br />

2. Zaznacz blok dynamicznego tekstu<br />

i wybierz Insert/Convert to Symbol. Podaj<br />

nazwe dla symbolu i zaznacz opcje Movie<br />

Clip w typie Behavior. Kliknij OK.<br />

Wskazania daty i pomiaru czasu<br />

371


Rozdzial 11.<br />

Wskazania daty i pomiaru czasu<br />

Twój blok dynamicznego tekstu zostanie<br />

umieszczony w symbolu klipu filmowego,<br />

którego klon pozostanie na scenie.<br />

3. Zaznacz klon klipu filmowego i nadaj mu<br />

nazwe za pomoca pola Name palety<br />

Instance. Otwórz palete akcji.<br />

4. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie Key down.<br />

5. Wybierz Actions/set variable. W polu<br />

Variable wpisz startTime. Umiesc kursor<br />

w polu Value i wybierz Functions/<br />

getTimer.<br />

W polu Value pojawi sie funkcja<br />

getTimer. Zaznacz pole Expression<br />

(rys. 11.50).<br />

6. Wybierz Actions/onClipEvent. Zaznacz<br />

zdarzenie enterFrame.<br />

7. Wybierz Actions/set variable. W polu<br />

Variable wpisz currentTime. Umiesc<br />

kursor w polu Value i wybierz Functions/<br />

getTimer.<br />

W polu Value pojawi sie funkcja<br />

getTimer. Zaznacz pole Expression<br />

(rys. 11.51).<br />

8. Wybierz Actions/set variable. W polu<br />

Variable wpisz elapsedTime. W polu<br />

Value wpisz:<br />

Math.round ((currentTimestartTime)/1000);<br />

Zaznacz pole wyboru Expression obok pola<br />

Value.<br />

Flash obliczy róznice pomiedzy aktualnym<br />

czasem (zmienna currentTime )<br />

a momentem, w którym nacisnieto klawisz<br />

na klawiaturze. Wynik dzielony jest przez<br />

1000 w celu uzyskania wartosci<br />

w sekundach, a nastepnie zaokraglany do<br />

najblizszej wartosci calkowitej (rys. 11.52).<br />

Rys. 11.50. Po wczytaniu tego filmu, funkcja<br />

getTimer odczytuje czas, który minal od jego<br />

rozpoczecia odtwarzania. Czas ten jest<br />

podstawiany do zmiennej startTime<br />

(czas rozpoczecia)<br />

Rys. 11.51. Funkcja getTimer nieustannie<br />

odczytuje czas mijajacy od uruchomienia<br />

filmu Flasha i podstawia go do zmiennej<br />

currentTime (aktualny czas)<br />

Rys. 11.52. Zmienna elapsedTime<br />

reprezentuje ilosc czasu, który uplynal<br />

pomiedzy dwoma punktami w czasie,<br />

zapisanymi w zmiennych startTime<br />

i currentTime<br />

372


Manipulowanie danymi<br />

Blok dynamicznego<br />

tekstu myDisplay<br />

Rys. 11.53. Wartosc przechowywana w zmiennej<br />

elapsedTime jest wyswietlana w bloku tekstowym<br />

myDisplay (u góry)<br />

9. Wybierz Actions/set variable. Przypisz<br />

wartosc zmiennej elapsedTime (czas, który<br />

uplynal) do wyswietlenia w bloku<br />

dynamicznego tekstu (rys. 11.53).<br />

10. Przetestuj film.<br />

Flash bedzie wyswietlal czas, który uplynal<br />

od ostatniego momentu wcisniecia klawisza.<br />

Poeksperymentuj z róznymi manipulatorami<br />

zdarzen w celu stworzenia stopera<br />

z przyciskami start, stop i zapetlania.<br />

Inna, czesto uzywana metoda tworzenia timera<br />

jest liczenie odtworzonych juz ujec na listwie<br />

czasowej. Jesli predkosc odtwarzania filmu<br />

wynosi 12 fps (klatek na sekunde), to znaczy,<br />

ze kazde 12 odtworzonych klatek jest równe<br />

jednej sekundzie czasu. Mozesz w tym miejscu<br />

posluzyc sie wlasciwoscia _currentframe do<br />

odczytania numeru biezacego ujecia,<br />

ewentualnie przypisac akcje do ujecia<br />

kluczowego odpowiadajacego okreslonej ilosci<br />

czasu, która chcesz mierzyc. Dla przykladu:<br />

umiesc wyrazenie i = i + 1 w ujeciu<br />

kluczowym 60 na listwie czasowej klipu<br />

filmowego o predkosci odtwarzania 12 fps. Co<br />

kazde 5 sekund (60 klatek / 12 fps = 5 sekund)<br />

wartosc zmiennej i bedzie wzrastac o 1.<br />

Uzywanie listwy czasowej jako timera<br />

Mimo iz proste w wykonaniu, tworzenie<br />

timera w powyzszy sposób nie jest tak<br />

uzyteczne, jak uzywanie w tym celu funkcji<br />

getTimer lub obiektu daty. Predkosci<br />

odtwarzania nie sa stale i czesto mamy<br />

do czynienia z „gubieniem” klatek, jesli<br />

wzrasta w filmie ilosc grafik lub animacji.<br />

Pamietajac, ze plynnosc odtwarzania filmu<br />

jest uzalezniona od wydajnosci procesora<br />

w komputerze uzytkownika, staraj sie<br />

uzywac raczej funkcji getTimer lub<br />

obiektu daty, jesli pomiar czasu jest<br />

krytycznym elementem filmu.<br />

Wskazania daty i pomiaru czasu<br />

373


Rozdzial 11.<br />

Tworzenie skryptów<br />

Tworzenie skryptów<br />

do wielokrotnego uzywania<br />

Jesli musisz wykonywac te sama operacje na<br />

danych wiele razy, mozesz zaoszczedzic czas,<br />

tworzac wlasne funkcje. Funkcje, które poznales<br />

do tej pory, jak getTimer,<br />

updateAfterEvent i getProperty, sa<br />

wbudowane we Flasha. Teraz jednak, za<br />

pomoca funkcji function, bedziesz mógl<br />

przygotowywac swoje wlasne funkcje,<br />

wykonujace specyficzne dzialania. Funkcje sa<br />

fragmentami wielokrotnie uzywanych wyrazen<br />

ActionScript, które umieszcza sie razem, miesza<br />

i laczy w razie potrzeby. Na przyklad w jednym<br />

z wczesniejszych cwiczen w tym rozdziale,<br />

obliczales kat tworzony przez przeciagany klip<br />

filmowy i punkt odniesienia innego klipu<br />

filmowego. Fragment skryptu, odpowiadajacy<br />

za obliczenie kata, rezyduje w obrebie<br />

przeciaganego klipu filmowego. Gdybys mial<br />

zamiar udostepnic uzytkownikowi kilka klipów<br />

filmowych do wyboru, musialbys w kazdym<br />

z nich dolaczyc ten sam kod ActionScript.<br />

Jednak dzieki funkcjom wystarczy napisac<br />

odpowiedni skrypt tylko raz i umiescic go<br />

w glównej listwie czasowej. Wówczas kazdy<br />

z przeciaganych klipów filmowych móglby<br />

wywolywac przygotowana funkcje zawsze,<br />

kiedy zajdzie taka potrzeba.<br />

Ponizsze cwiczenie ilustruje sposób budowania<br />

funkcji tworzacej obiekt dzwiekowy,<br />

dolaczajacej dzwiek, odtwarzajacej go<br />

i ustawiajacej poziom glosnosci. Dzieki<br />

konsolidacji wszystkich tych metod, bedziesz<br />

mógl odtworzyc dzwiek za jednym wywolaniem<br />

pojedynczej funkcji i powtarzac te czynnosc<br />

dowolna ilosc razy, z praktycznie dowolnego<br />

miejsca w twoim filmie.<br />

W celu utworzenia i wywolania funkcji<br />

dzwiekowej:<br />

1. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/function (Esc + fn).<br />

374


Manipulowanie danymi<br />

Rys. 11.54. Ta funkcja nosi nazwe playSound<br />

(odtwórz dzwiek) i nie posiada zadnych<br />

parametrów<br />

Rys. 11.55. Utworzono klon nowego obiektu,<br />

mySound (mój dzwiek)<br />

Rys. 11.56. Trzy metody obiektu dzwiekowego<br />

zostana wywolane wraz z wywolaniem funkcji<br />

playSound<br />

3. W polu Name wpisz nazwe swojej funkcji.<br />

Nie podawaj zadnych parametrów.<br />

Wyrazenie funkcji pojawi sie w oknie<br />

skryptu wraz z zestawem klamer. Wszystkie<br />

wyrazenia umieszczone pomiedzy tymi<br />

klamrami stana sie czescia funkcji i beda<br />

wykonywane po wywolaniu funkcji<br />

(rys. 11.54).<br />

4. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe nowego obiektu<br />

dzwiekowego. W polu Value wprowadz<br />

funkcje konstruktora new Sound. Zaznacz<br />

pole wyboru Expression obok pola Value<br />

(rys. 11.55).<br />

5. Wybierz Actions/with. W polu Object<br />

wpisz nazwe twojego nowego obiektu<br />

dzwiekowego.<br />

6. Korzystajac z akcji evaluate, wprowadz<br />

metody attachSound, start i setVolume<br />

wraz z odpowiednimi parametrami<br />

(rys. 11.56).<br />

Akcja with pozwala polaczyc wszystkie<br />

trzy metody z nowym obiektem<br />

dzwiekowym. Przykladowe wyrazenia moga<br />

wygladac tak:<br />

mySound.attachSound ("musicID");<br />

mySound.start (0,2);<br />

mySound.setVolume (50);<br />

7. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz przycisk i otwórz palete<br />

akcji.<br />

8. Wybierz Actions/evaluate . W polu<br />

Expression wpisz nazwe swojej funkcji<br />

wraz z nawiasami.<br />

Funkcja zostanie wywolana po zwolnieniu<br />

utworzonego przycisku (rys. 11.57).<br />

Tworzenie skryptów<br />

Rys. 11.57. Wywolana zostaje funkcja playSound<br />

375


Rozdzial 11.<br />

Tworzenie skryptów<br />

9. Zaimportuj klip dzwiekowy i wprowadz<br />

jego identyfikator w polu Identifier okna<br />

dialogowego Symbol Linkage Properties<br />

(rys. 11.58).<br />

10. Przetestuj film.<br />

Twoja funkcja zostala zdefiniowana<br />

w pierwszym ujeciu kluczowym na glównej<br />

listwie czasowej. Kiedy uzytkownik kliknie<br />

przycisk znajdujacy sie na scenie, Flash<br />

wywola funkcje tworzaca nowy obiekt<br />

dzwiekowy, przylaczy ten dzwiek<br />

i rozpocznie jego odtwarzanie z ustalonym<br />

poziomem glosnosci.<br />

Wskazówki<br />

• Funkcje, tak jak zmienne i obiekty, rezyduja<br />

w okreslonej listwie czasowej. Kiedy<br />

wywolujesz funkcje, musisz uwazac na jej<br />

sciezke dostepu. Przykladowo, wywolujac<br />

funkcje o nazwie mojaFunkcja,<br />

zdefiniowana na glównej listwie czasowej,<br />

uzyj takiej sciezki dostepu:<br />

_root.mojaFunkcja. lub<br />

_level0.mojaFunkcja.<br />

• Mozesz deklarowac zmienne nazywane<br />

zmiennymi lokalnymi, które sa osadzone<br />

w konkretnej funkcji. Zmienne lokalne<br />

przestaja funkcjonowac wraz z koncem<br />

funkcji, do której naleza, i nie beda<br />

wchodzic w konflikty ze zmiennymi<br />

zadeklarowanymi w innych warstwach<br />

filmu. Zmienne lokalne deklaruje sie na<br />

palecie akcji, wybierajac Actions/var.<br />

Zmienne lokalne pomoga zachowac twoim<br />

funkcjom niezaleznosc w dzialaniu<br />

i przechowywaniu informacji. W ten sposób<br />

mozesz latwo kopiowac i wklejac funkcje<br />

z jednego projektu do drugiego, nie<br />

martwiac sie przy tym o jakiekolwiek<br />

konflikty zmiennych o powtarzajacych sie<br />

nazwach.<br />

Rys. 11.58. Wprowadz nazwe importowanego<br />

dzwieku w polu Identifier<br />

376


Manipulowanie danymi<br />

Rys. 11.59. Funkcja playSound posiada<br />

parametry sndLoop i sndVolume<br />

Rys. 11.60. Parametry funkcji playSound<br />

modyfikuja metody start oraz setVolume<br />

Rys. 11.61. Wywolana zostaje funkcja playSound,<br />

otrzymujaca parametry 2 i 50. Dzwiek o nazwie<br />

musicID zostanie wiec odtworzony dwukrotnie<br />

i przy glosnosci 50<br />

Parametry i wartosci zwracane<br />

Kiedy definiujesz funkcje, mozesz nakazac jej<br />

wykonanie okreslonej czynnosci w oparciu<br />

o podane przez ciebie parametry lub tez przejsc<br />

do innej funkcji w momencie wywolania.<br />

Dzieki temu funkcje sa bardziej elastyczne – ich<br />

dzialanie zalezy wlasciwie od kontekstu. Na<br />

przyklad, w uzupelnieniu do poprzedniego<br />

cwiczenia, móglbys zdefiniowac funkcje<br />

akceptujaca jakis parametr odnosnie poziomu<br />

glosnosci. Po wywolaniu funkcji wprowadzasz<br />

ponadto wartosc dla tego parametru, a funkcja<br />

dolaczy te wartosc do metody setVolume.<br />

W celu przygotowania funkcji akceptujacej<br />

podawanie parametrów:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

pierwsze ujecie kluczowe i otwórz palete<br />

akcji.<br />

2. Zaznacz wyrazenie z funkcja. W polu<br />

Parameters wpisz sndLoop i sndVolume,<br />

oddzielajac te parametry przecinkami. Beda<br />

to nazwy parametrów twojej funkcji<br />

(rys. 11.59).<br />

3. Zaznacz metode start twojej funkcji.<br />

W miejscu parametru loop wpisz sndLoop.<br />

Zaznacz metode setVolume i w miejsce<br />

parametru volume wpisz sndVolume<br />

(rys. 11.60).<br />

4. Zaznacz klon przycisku znajdujacego sie na<br />

scenie.<br />

5. Na palecie akcji zaznacz wywolanie twojej<br />

funkcji. W nawiasach wprowadz wartosci<br />

dla parametrów sndLoop i sndVolume.<br />

Oddziel te wartosci przecinkami<br />

(rys. 11.61).<br />

6. Przetestuj film.<br />

Wlasciwe wartosci parametrów<br />

przekazanych do funkcji sa definiowane<br />

w momencie jej wywolania. Kolejny<br />

utworzony przycisk móglby wywolywac<br />

funkcje z odmiennymi wartosciami<br />

parametrów.<br />

Tworzenie skryptów<br />

377


Rozdzial 11.<br />

Tworzenie skryptów<br />

Gdy bedziesz przekazywal parametry do<br />

funkcji, z pewnoscia bedziesz tez chcial<br />

zobaczyc wyniki okreslonych obliczen. Jesli<br />

wiec funkcja ma pokazywac wynik swoich<br />

dziala, uzyj akcji return. Akcje te definiuje sie<br />

w wyrazeniu funkcji, a jej dzialanie polega na<br />

zwracaniu wartosci dowolnego wyrazenia.<br />

W celu przygotowania funkcji zwracajacej<br />

wartosci:<br />

1. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/function.<br />

3. W polu Name podaj nazwe swojej funkcji.<br />

W polu Parameters wpisz a, b, c, d<br />

(rys. 11.62).<br />

4. Wybierz Actions/return . W polu Value<br />

wprowadz wyrazenie obliczajace srednia<br />

wartosci czterech parametrów.<br />

Funkcja ta zwraca wartosc wyrazenia<br />

(rys. 11.63).<br />

5. Wybierz narzedzie tekstowe (Text Tool )<br />

i utwórz blok dynamicznego tekstu.<br />

Nazwij go.<br />

6. Utwórz symbol przycisku i umiesc jego klon<br />

na scenie. Zaznacz klon i na palecie akcji<br />

wybierz Actions/set variable.<br />

7. W polu Variable podaj nazwe twojego<br />

bloku dynamicznego tekstu. W polu Value<br />

wpisz nazwe funkcji i cztery wartosci<br />

odpowiadajace jej parametrom. Oddziel<br />

wartosci za pomoca przecinków. Zaznacz<br />

pole wyboru Expression obok pola Value<br />

(rys. 11.64).<br />

Te cztery wartosci sa przekazywane do<br />

funkcji i przetwarzane. Zwracana wartosc<br />

jest podstawiana i wyswietlana w bloku<br />

dynamicznego tekstu.<br />

8. Przetestuj film.<br />

Rys. 11.62. Funkcja myAverage (moja<br />

srednia) posiada parametry a, b, c i d<br />

Rys. 11.63. Akcja return szacuje wyrazenie<br />

i udostepnia rezultat dla wyrazenia, które<br />

te funkcje wywolalo<br />

Rys. 11.64. Wywolana zostala funkcja<br />

myAverage; zwracana wartosc pojawia<br />

sie w bloku dynamicznego tekstu<br />

Wskazówka<br />

• Akcja function zastepuje akcje call<br />

uzywana w poprzednich wersjach Flasha.<br />

Chociaz akcja call wciaz dziala, to<br />

jednak w jej przypadku przekazywanie<br />

parametrów i zwracanie wartosci nie<br />

odbywa sie tak wygodnie, jak za pomoca<br />

akcji function.<br />

378


Manipulowanie danymi<br />

Tworzenie wlasnych klas<br />

za pomoca funkcji<br />

Funkcji mozna uzywac nie tylko do<br />

wykonywania pewnych dzialan, jak to pokazano<br />

w poprzednich cwiczeniach, ale takze do<br />

definiowania wlasciwosci i metod nowych klas.<br />

Dzieki temu mozliwe staje sie organizowanie<br />

i przeksztalcanie informacji zawartych<br />

w skrypcie w sposób pozwalajacy na latwiejszy<br />

dostep i przechowywanie danych oraz<br />

zaoszczedzenie na pamieci przez<br />

konsolidowanie skryptów. Za pomoca funkcji<br />

konstruktora (operator new oraz nazwa twojej<br />

funkcji) mozesz utworzyc klon obiektu wlasnej<br />

klasy. Rozwaz na przyklad ponizsza funkcje:<br />

function Scores (player1, player2) {<br />

this.player1Score = player1;<br />

this.player2Score = player2;<br />

}<br />

Powyzsza funkcja definiuje klase o nazwie<br />

Scores (punkty), posiadajaca wlasciwosci<br />

player1Score (punkty gracza 1.)<br />

i player2Score (punkty gracza 2.). Klon obiektu<br />

z tej klasy tworzy sie za pomoca funkcji<br />

konstruktora, jak ponizej:<br />

MyScores = new Scores (4, 6);<br />

To wyrazenie tworzy nowy obiekt o nazwie<br />

myScores (moje punkty) na podstawie klasy<br />

Scores. Wspomniany nowy obiekt posiada<br />

wlasciwosci player1Score o wartosci 4 oraz<br />

player2Score o wartosci 6.<br />

Gdybys teraz chcial utworzyc metode dla klasy<br />

Scores, pozwalajaca zmieniac wlasciwosci<br />

player1Score lub player2Score, musisz<br />

zdefiniowac kolejna funkcje w nastepujacy<br />

sposób:<br />

function setScores (player,<br />

newScore) {<br />

set ("this.player" + player +<br />

"Score", newScore);<br />

}<br />

Tworzenie klas za pomoca funkcji<br />

379


Rozdzial 11.<br />

Tworzenie klas za pomoca funkcji<br />

Ta funkcja zmienia wartosci player1Score<br />

lub player2Score w zaleznosci od<br />

parametrów, jakie zostana jej przekazane.<br />

Tymczasem, funkcja ta nie jest jeszcze<br />

skojarzona z klasa Scores, zdefiniowana<br />

w pierwszej funkcji. Ty jednak chcialbys, zeby<br />

funkcja nalezala do klasy Scores, dzieki czemu<br />

dowolny nowy obiekt z tej klasy bedzie mial<br />

dostep do tej funkcji, nazwanej setScores.<br />

Mozesz skojarzyc funkcje setScores z klasa<br />

Scores, uzywajac w tym celu jej wlasciwosci<br />

prototype (prototyp). Wlasciwosc ta oddzialuje<br />

na wszystkie nowe obiekty utworzone na<br />

podstawie klasy Scores, co oznacza, ze obiekty<br />

te dziedzicza funkcje setScores. Wlasciwosc<br />

protoype klasy Scores przypisuje sie do funkcji<br />

setScores nastepujacym wyrazeniem:<br />

Scores.prototype.setScoresMethod =<br />

setScores;<br />

W celu wywolania tej metody z poziomu<br />

twojego obiektu, musialbys posluzyc sie<br />

nastepujacym wyrazeniem:<br />

mScores.setScoresMethod (2,3);<br />

Funkcje umozliwiajace tworzenie wlasnych<br />

klas, wlasciwosci i metod to potezne<br />

i elastyczne narzedzie, pozwalajace wykroczyc<br />

daleko poza standardowe klasy udostepniane<br />

przez Flasha.<br />

W celu utworzenia wlasnej klasy:<br />

1. Zaznacz pierwsze ujecie kluczowe na<br />

glównej listwie czasowej i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/function. W polu Name<br />

wpisz nazwe Scores. W polu Parameters<br />

podaj nazwy parametrów player1<br />

i player2, oddzielone przecinkami<br />

(rys. 11.65).<br />

3. Wybierz Actions/set variable. Przypisz<br />

nazwy wlasciwosci do parametrów.<br />

Funkcja ta definiuje klase o nazwie Scores,<br />

posiadajaca dwie wlasciwosci (rys. 11.66).<br />

Rys. 11.65. Funkcja o nazwie Scores posiada<br />

parametry this.player1 i this.player2<br />

Rys. 11.66. Klasa Scores zawiera dwie<br />

wlasciwosci, nazwane player1Score<br />

i player2Score<br />

380


Manipulowanie danymi<br />

Rys. 11.67. Funkcja o nazwie setScores posiada<br />

parametry player i newScore<br />

Rys. 11.68. Funkcja o nazwie setScores<br />

przypisuje wartosc newScore do wlasciwosci<br />

this.player1Score, jesli parametr player = 1,<br />

lub do this.player2Score, jesli player = 2<br />

Rys. 11.69. Wlasciwosc prototype klasy Scores<br />

jest przypisana do funkcji o nazwie setScores.<br />

Wszystkie klony klasy Scores dziedzicza metode<br />

setScores, która mozna wywolac za pomoca<br />

wyrazenia: instanceName.setScoresMethod<br />

(player, newScore)<br />

W celu zdefiniowania metody<br />

nowo utworzonej klasy:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

pierwsze ujecie kluczowe na glównej listwie<br />

czasowej i otwórz palete akcji.<br />

2. Zaznacz klamre zamykajaca funkcji.<br />

Nastepna akcja, która dodasz, pojawi sie<br />

poza ta funkcja.<br />

3. Wybierz Actions/function. W polu Name<br />

wpisz setScores. W polu Parameters<br />

wprowadz nazwy parametrów player<br />

i newScore, oddzielone przecinkami<br />

(rys. 11.67).<br />

4. Wybierz Actions/set variable. Uzywajac<br />

akcji set variable, przypisz odpowiednia<br />

nazwe wlasciwosci (czyli dowiaz parametr<br />

player) do parametru newScore.<br />

Ta funkcja przypisuje nowa wartosc do<br />

wlasciwosci this.player1Score lub<br />

this.player2Score (rys. 11.68).<br />

5. Zaznacz klamre zamykajaca drugiej funkcji.<br />

Nastepna akcja, która dodasz, pojawi sie<br />

poza ta funkcja.<br />

6. Wybierz Actions/set variable. W polu<br />

Variable wpisz:<br />

Scores.prototype.setScoresMethod<br />

W polu Value wpisz setScores.<br />

Zaznacz pole Expression.<br />

Druga funkcja, setScores, zostala<br />

przylaczona do funkcji pierwszej, o nazwie<br />

Scores. Wszystkie nowe klony klasy Scores<br />

dziedzicza funkcje setScores, która<br />

wywoluje sie za pomoca metody<br />

setScoresMethod (rys. 11.69).<br />

Tworzenie klas za pomoca funkcji<br />

381


Rozdzial 11.<br />

Tworzenie klas za pomoca funkcji<br />

W celu przygotowania klonu obiektu<br />

nowo utworzonej klasy:<br />

1. Kontynuujac poprzednie cwiczenie, zaznacz<br />

pierwsze ujecie kluczowe na glównej listwie<br />

czasowej i otwórz palete akcji.<br />

2. Zaznacz ostatnie wyrazenie widoczne<br />

w oknie skryptu.<br />

3. Wybierz Actions/set variable. W polu<br />

Variable wpisz nazwe twojego nowego<br />

obiektu. W polu Value wpisz new<br />

Scores(), a nastepnie dwie numeryczne<br />

wartosci (w nawiasach), oddzielone<br />

przecinkami. Zaznacz pole wyboru<br />

Expression obok pola Value (rys. 11.70).<br />

Na podstawie klasy Scores zostanie<br />

utworzony klon nowego obiektu,<br />

z wlasciwosciami zdefiniowanymi za<br />

pomoca wartosci przekazanych do funkcji.<br />

Ten nowy obiekt dziedziczy metode<br />

setScoresMethod.<br />

W celu wywolania metody<br />

nowo utworzonej klasy:<br />

1. Kontynuujac poprzednie cwiczenie,<br />

przeciagnij na scene kolejny klon symbolu<br />

przycisku. Zaznacz przycisk i otwórz palete<br />

akcji.<br />

2. Wybierz Actions/evaluate . W polu<br />

Expression wpisz nazwe twojego obiektu,<br />

kropke i wyrazenie setScoreMethod().<br />

W nawiasach umiesc wartosci parametrów<br />

metody, oddzielajac je przecinkami<br />

(rys. 11.71).<br />

Klikniecie utworzonego przycisku wywoluje<br />

metode setScoreMethod i zmieniaja sie<br />

wlasciwosci twojego obiektu.<br />

Kompletny skrypt tworzacy nowa klase<br />

i metode pokazano na rys. 11.72.<br />

Rys. 11.70. Klon obiektu firstGame (pierwsza<br />

gra) zostal utworzony na podstawie klasy<br />

Scores. Posiada on wlasciwosci<br />

player1Score=4 oraz player2Score=6<br />

Rys. 11.71. Po wcisnieciu tego przycisku<br />

obiekt firstGame wywoluje metode<br />

setScoresMethod. Jego wlasciwosc<br />

player2Score ma wartosc 8<br />

Rys. 11.72. Oto kompletny skrypt przypisany<br />

do pierwszego ujecia listwy czasowej (u góry)<br />

w celu utworzenia nowej klasy, przylaczenia<br />

metody i przygotowania klonu nowego<br />

obiektu. Skrypt przypisany do przycisku<br />

(u dolu) wywoluje dla nowego obiektu metode<br />

setScoresMethod<br />

382


Zarzadzanie zawartoscia<br />

12<br />

i rozwiazywanie problemów<br />

Czesci skladowe jezyka HTML<br />

W miare jak rosnie zlozonosc twojego filmu Flasha, zawierajacego coraz wiecej bitmap,<br />

dzwieków, animacji i wyrazen ActionScript, laczacych to wszystko w jedna calosc, zachodzi<br />

potrzeba scislego sledzenia funkcjonowania tych elementów w celu dokonywania przegladów<br />

i poprawek. W koncu nawet najbardziej wyszukany film okaze sie bezuzyteczny, jesli nie<br />

bedziesz w stanie wskazac tej jednej zmiennej, uniemozliwiajacej zadzialanie calosci. Na<br />

szczescie Flash udostepnia wiele narzedzi do rozwiazywania problemów i zarzadzania<br />

biblioteka symboli.<br />

Ten rozdzial nauczy cie tworzenia wspóldzielonych bibliotek i zewnetrznych skryptów,<br />

udostepniajacych czesto uzywane elementy – symbole i kod – grupie projektantów pracujacych<br />

nad filmem Flasha. W niniejszym rozdziale zapoznasz sie tez z paletami Movie Explorer,<br />

Debugger i oknem Output, które daja dostep do informacji na temat organizacji i statusu<br />

twojego filmu. Te trzy okna pozwalaja ogarnac skrypt z perspektywy róznych elementów<br />

filmu , wyswietlaja tez ostrzezenia o bledach i monitoruja zmiany w wartosciach zmiennych<br />

oraz wlasciwosci w czasie odtwarzania filmu.<br />

Na zakonczenie zapoznasz sie z kilkoma technikami pomagajacymi uczynic film bardziej<br />

zwartym i szybkim – dzieki optymalizacji g rafiki, wlasciwej organizacji srodowiska pracy<br />

i sposobom unikania powszechnych bledów. Wspomniane techniki, uczynia z ciebie lepszego<br />

animatora i bardziej doswiadczonego twórce filmów Flasha.<br />

Zarzadzanie zawartoscia<br />

383


Rozdzial 12.<br />

Tworzenie wspóldzielonych bibliotek<br />

Tworzenie<br />

wspóldzielonych bibliotek<br />

Flash umozliwia zespolom animatorów<br />

i programistów korzystanie ze<br />

wspóldzielonych bibliotek w czasie pracy<br />

nad zlozonymi projektami. Kazdy<br />

z animatorów moze pracowac nad<br />

oddzielnym filmem, uzywajacym jednak<br />

tego samego symbolu – np. glównego<br />

bohatera animowanego komiksu. Identyczny<br />

symbol tego bohatera powinien rezydowac<br />

w bibliotece kazdego z filmów, a jesli<br />

dyrektor artystyczny zdecyduje sie zmienic<br />

twarz postaci, to nowy symbol musi zostac<br />

skopiowany do wszystkich bibliotek – tzn.,<br />

dzieje sie tak, dopóki nie przygotuje sie<br />

wspóldzielonej biblioteki. Biblioteki tego<br />

typu sluza do przechowywania symboli<br />

najczesciej uzywanych w wielu filmach.<br />

Mozesz wiec przechowac symbol swojego<br />

bohatera w takiej bibliotece, udostepniajac<br />

go zarazem dla wszystkich filmów, które<br />

musza z niego skorzystac. To bardzo<br />

upraszcza proces edycyjny i zapewnia<br />

spójnosc calemu projektowi (rys. 12.1).<br />

Odbiorcy takze odnosza korzysci<br />

z uzywania wspóldzielonej biblioteki, jako<br />

ze musza wczytac ja tylko raz. Przykladowo,<br />

wspominany juz bohater móglby byc<br />

wczytany tylko jednokrotnie – dla<br />

pierwszego filmu, a zarazem wszystkich<br />

innych dodatkowych filmów, takze<br />

korzystajacych z tego symbolu.<br />

W celu utworzenia wspóldzielonej<br />

biblioteki, oznaczasz symbol, który chcesz<br />

udostepnic za pomoca takiego samego<br />

identyfikatora laczenia, jakiego uzywales<br />

w przypadku dzwieków i filmów na<br />

potrzeby metod attachSound<br />

i attachMovie. Po wyeksportowaniu pliku<br />

SWF, zidentyfikowane w ten sposób<br />

symbole beda dostepne jako symbole<br />

wspóldzielone.<br />

Oddzielne filmy SWF<br />

Wspólny<br />

symbol we<br />

wspóldzielonej<br />

bibliotece<br />

Rys. 12.1. Wspóldzielona biblioteka (u góry)<br />

umozliwia wielu plikom SWF korzystanie<br />

z tego samego symbolu<br />

384


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.2. Wybierz Options/Linkage<br />

z menu biblioteki<br />

Rys. 12.3. W celu oznaczenia symbolu jako<br />

wspóldzielonego, nadaje mu sie identyfikator<br />

w oknie dialogowym Symbol Linkage Properties<br />

i zaznacza jako element do wyeksportowania<br />

Rys. 12.4. W celu uzyskania dostepu do<br />

wspóldzielonych symboli z biblioteki innego<br />

filmu, wybierz File/Open as Shared Library<br />

W celu utworzenia<br />

wspóldzielonej biblioteki:<br />

1. W dokumencie Flasha utwórz symbol, który<br />

chcesz udostepnic. Moze to byc grafika,<br />

przycisk, klip filmowy, dzwiek lub bitmapa.<br />

2. W bibliotece zaznacz swój symbol. Z menu<br />

rozwijanego Options wybierz Linkage<br />

(rys. 12.2).<br />

Pojawi sie okno dialogowe Symbol Linkage<br />

Properties.<br />

3. Dla polecenia Linkage wybierz opcje<br />

Export this symbol . W polu Identifier<br />

wpisz unikalna nazwe dla twojego symbolu.<br />

Kliknij OK (rys. 12.3).<br />

Wybrany w ten sposób symbol jest<br />

zaznaczony do wyeksportowania i gotowy<br />

do wspóldzielenia przez inne filmy.<br />

4. Wyeksportuj swój film Flasha jako plik<br />

SWF. Wybrany przez ciebie symbol<br />

rezyduje teraz w pliku SWF,<br />

udostepniajacym wspóldzielone elementy<br />

innym filmom.<br />

Po utworzeniu wspóldzielonej biblioteki<br />

mozesz wykorzystywac jej zawartosc<br />

w róznych filmach. W tym celu trzeba tylko<br />

otworzyc wspóldzielona biblioteke<br />

w nowym dokumencie Flasha, a nastepnie<br />

przeciagnac wybrany symbol do okna<br />

dokumentu. Pomiedzy plikiem SWF<br />

uzywajacym takiego symbolu oraz plikiem<br />

SWF, który symbol wspóldzielony zawiera<br />

(czyli wspóldzielona biblioteka), tworzone<br />

jest polaczenie. Oryginalny plik zródlowy<br />

(FLA), zawierajacy biblioteke<br />

wspóldzielona, jest plikiem glównym,<br />

jedynym miejscem, w którym mozesz<br />

dokonywac edycji wspóldzielonych symboli.<br />

W celu uzycia<br />

wspóldzielonego symbolu:<br />

1. Otwórz nowy dokument Flasha. Wybierz<br />

File/Open as Shared Library (rys. 12.4).<br />

Tworzenie wspóldzielonych bibliotek<br />

385


Rozdzial 12.<br />

Tworzenie wspóldzielonych bibliotek<br />

2. W oknie dialogowym, które sie pojawi,<br />

zaznacz plik FLA zawierajacy symbole,<br />

oznaczone jako wspóldzielone<br />

i przeznaczone do eksportu. Kliknij OK.<br />

Pojawi sie nowe okno biblioteki, ukazujace<br />

wszystkie symbole z wybranego pliku FLA.<br />

Tlo biblioteki ma kolor szary, wskazujac<br />

w ten sposób, ze ta biblioteka nie nalezy do<br />

aktualnie otwartego pliku Flasha. Z poziomu<br />

tego pliku nie mozesz modyfikowac, dodawac<br />

czy usuwac symboli z tej biblioteki (rys. 12.5).<br />

3. Zaznacz symbol (we wspóldzielonej<br />

bibliotece), który w poprzednim cwiczeniu<br />

oznaczyles jako element do<br />

wyeksportowania i przeciagnij go do<br />

biezacej biblioteki lub wprost na scene.<br />

Wspóldzielony symbol zostanie dodany<br />

do biezacej biblioteki i bedzie dostepny<br />

do wykorzystania w filmie. Wybierz<br />

Options/Linkage w celu sprawdzenia, czy<br />

symbol jest polaczony ze wspóldzielona<br />

biblioteka (rys. 12.6).<br />

4. Uzyj wspóldzielonego symbolu w swoim<br />

filmie. Wyeksportuj plik SWF, a nastepnie<br />

umiesc go, wraz z plikiem SWF<br />

wspóldzie lonej biblioteki, w tej samej<br />

lokalizacji (rys. 12.7).<br />

Kiedy odtworzysz film uzywajacy<br />

wspólnego symbolu, symbol ten zostanie<br />

wczytany ze wspóldzielonej biblioteki<br />

zapisanej w pliku SWF.<br />

Wskazówka<br />

• Jesli dokonasz jakichs zmian wsród symboli<br />

ze wspóldzielonej biblioteki, wszystkie<br />

filmy SWF, uzywajace tych symboli,<br />

zostana automatycznie uaktualnione w celu<br />

odzwierciedlenia wprowadzonych przez<br />

ciebie zmian. Jednak otwierajac plik FLA<br />

uzywajacy wspóldzielonego symbolu,<br />

zauwazysz, ze ten symbol, znajdujacy sie<br />

w bibliotece, nie zostal uaktualniony.<br />

Musisz wiec zaimportowac symbol ze<br />

wspóldzielonej biblioteki ponownie, jesli<br />

jego obraz w biezacej bibliotece ma równiez<br />

zostac uaktualniony.<br />

Rys. 12.5. Biblioteka po lewej zawiera<br />

symbol przeznaczony do wspóldzielenia.<br />

Biblioteka po prawej to twoja biezaca<br />

biblioteka<br />

Rys. 12.6. Okno dialogowe Symbol Linkage<br />

Properties wskazuje, ze ten symbol jest<br />

importowany z pliku o nazwie<br />

sharedLibrary.swf<br />

Plik sharedLibrary.swf<br />

zawierajacy symbole<br />

przeznaczone do wspóldzielenia<br />

Plik SWF uzywajacy<br />

wspóldzielonych symboli z pliku<br />

sharedLibrary.swf<br />

Rys. 12.7. Dwa pliki SWF umieszczono<br />

w tej samej lokalizacji<br />

386


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.8. Okno dialogowe Symbol Linkage<br />

Properties wskazuje, ze ten symbol jest<br />

importowany z pliku o nazwie sharedLibrary.swf,<br />

znajdujacego sie w folderze sharedFolder<br />

Plik SWF uzywajacy<br />

wspóldzielonych symboli<br />

z lokalizacji sharedFolder/<br />

sharedLibrary.swf<br />

Plik sharedLibrary.swf zawierajacy<br />

wspóldzielone symbole<br />

Folder sharedFolder<br />

Rys. 12.9. Dwa pliki SWF umieszczone<br />

w róznych lokalizacjach<br />

Rys. 12.10. Z menu<br />

Options wspóldzielonej<br />

biblioteki wybierz Shared<br />

Library Properties<br />

Rys. 12.11. Sciezka dostepu podana w polu URL<br />

okresla lokalizacje wspóldzielonych symboli.<br />

Umiesc zatem swoja wspóldzielona biblioteke<br />

w miejscu, na które wskazuje pole URL<br />

Domyslna lokalizacja dla wspóldzielonej<br />

biblioteki jest katalog zawierajacy plik SWF,<br />

korzystajacy z tej biblioteki. Jesli chcialbys<br />

umiescic biblioteke w innej lokalizacji, musisz<br />

podac do jej pliku bezwzgledna lub wzgledna<br />

sciezke dostepu. Mozna to zrobic zarówno<br />

w pliku samej biblioteki, jak i w pliku, który<br />

tej wspóldzielonej biblioteki uzywa.<br />

W celu wprowadzenia innej lokalizacji dla<br />

wspóldzielonej biblioteki:<br />

1. W pliku, korzystajacym ze wspóldzielonej<br />

biblioteki, zaznacz wspólny symbol z tej<br />

biblioteki i wybierz polecenie Linkage<br />

z menu rozwijanego biblioteki Options.<br />

Pojawi sie okno dialogowe Symbol<br />

Linkage Properties. Zaznaczona bedzie<br />

pozycja Import this symbol w opcji URL,<br />

a w dolnym polu ukaze sie biezaca sciezka<br />

dostepu do wspóldzielonej biblioteki.<br />

2. Wprowadz nowa sciezke dostepu do<br />

wspóldzielonej biblioteki. Kliknij OK<br />

(rys. 12.8).<br />

3. Powtórz powyzszy proces dla wszystkich<br />

wspóldzielonych symboli.<br />

4. Wyeksportuj plik SWF. Umiesc ten plik,<br />

jak i biblioteke w odpowiednich katalogach,<br />

zeby Flash mógl odnalezc wspóldzielone<br />

symbole (rys. 12.9).<br />

lub<br />

1. W pliku, zawierajacym wspóldzielona<br />

biblioteke, wybierz Shared Library<br />

Properties z menu rozwijanego Options<br />

biblioteki (rys. 12.10). Pojawi sie okno<br />

dialogowe Shared Library Properties.<br />

2. W polu URL wpisz sciezke dostepu do<br />

wspóldzielonej biblioteki. Kliknij OK<br />

(rys. 12.11).<br />

3. W nowym dokumencie Flasha otwórz<br />

wspóldzielona biblioteke i przeciagnij<br />

wspólne symbole na scene lub do biezacej<br />

biblioteki dokumentu. Wspóldzielone<br />

symbole beda polaczone ze wspóldzielona<br />

biblioteka, okreslona w polu URL okna<br />

dialogowego Shared Library Properties.<br />

Tworzenie wspóldzielonych bibliotek<br />

387


Rozdzial 12.<br />

Wspóldzielenie fontów<br />

Wspóldzielenie fontów<br />

Tak jak mozesz identyfikowac<br />

wspóldzielone symbole, tak tez istnieje<br />

mozliwosc tworzenia symboli<br />

pozwalajacych na wspóldzielenie fontów. Po<br />

utworzeniu symbolu czcionki, identyfikujesz<br />

go jako przeznaczony do wyeksportowania<br />

(Linkage) w procesie identycznym, jak<br />

w przypadku tworzenia wspóldzielonych<br />

symboli. Jesli wiele filmów uzywa tego<br />

samego fontu ze wspóldzielonej biblioteki,<br />

jest on wczytywany tylko raz dla pierwszego<br />

filmu, redukujac w ten sposób rozmiar pliku<br />

i czas wczytywania kolejnych filmów.<br />

W celu utworzenia<br />

wspóldzielonego symbolu fontu:<br />

1. Otwórz okno biblioteki. Z menu<br />

rozwijanego Options wybierz New Font<br />

(rys. 12.12).<br />

Pojawi sie okno dialogowe Font Symbol<br />

Properties.<br />

2. W polu Name wpisz nazwe twojego nowego<br />

symbolu fontu. W polu Font wybierz<br />

czcionke, która zamienisz na symbol fontu.<br />

Opcjonalnie zaznacz pola wyboru grupy<br />

Style. Kliknij OK (rys. 12.13).<br />

W bibliotece pojawi sie symbol fontu.<br />

3. Zaznacz symbol fontu. Z menu rozwijanego<br />

biblioteki Options wybierz Linkage.<br />

Pojawi sie okno dialogowe Symbol Linkage<br />

Properties.<br />

4. Z grupy opcji Linkage wybierz Export this<br />

symbol. W polu Identifier wpisz unikalna<br />

nazwe dla twojego symbolu. Kliknij OK<br />

(rys. 12.14).<br />

Wybrany symbol fontu jest juz oznaczony<br />

jako element do wyeksportowania<br />

i wspóldzielenia przez inne filmy.<br />

5. Wyeksportuj film Flasha do pliku SWF.<br />

Wybrany symbol fontu bedzie rezydowal<br />

w pliku SWF, udostepniajacym ów<br />

wspóldzielony font innym filmom.<br />

Rys. 12.12. W oknie biblioteki wybierz<br />

Options/New Font<br />

Rys. 12.13. Utwórz symbol fontu, wybierajac<br />

czcionke i nadajac mu nazwe w oknie<br />

dialogowym Font Symbol Properties<br />

Rys. 12.14. Oznacz swój symbol fontu jako<br />

przeznaczony do wspóldzielenia za pomoca<br />

okna dialogowego Symbol Linkage Properties<br />

388


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.15. Wspóldzielone fonty sa dostepne na<br />

palecie Character jako oznaczone gwiazdka,<br />

widoczna obok ich nazwy<br />

W celu uzycia<br />

wspóldzielonego symbolu fontu:<br />

1. W celu otwarcia biblioteki zawierajacej<br />

wspóldzielony symbol fontu – powtórz<br />

czynnosci opisane w cwiczeniu „W celu<br />

utworzenia wspóldzielonej biblioteki”.<br />

2. Przeciagnij wspólny symbol fontu<br />

z wspóldzielonej biblioteki do biblioteki<br />

nowego pliku Flasha.<br />

Wspóldzielony symbol fontu pojawi sie na<br />

liscie dostepnych fontów palety Character.<br />

3. Wybierz narzedzie tekstowe (Text Tool ),<br />

a nastepnie wspóldzielony symbol fontu<br />

z palety Character (rys. 12.15).<br />

Wspóldzielenie fontów<br />

389


Rozdzial 12.<br />

Edytowanie skryptu<br />

Edytowanie skryptu<br />

Kiedy skrypt widoczny w oknie skryptu<br />

palety akcji staje sie dlugi i rozbudowany,<br />

mozesz zaczac go sprawdzac, edytowac<br />

i zarzadzac jego zawartoscia za pomoca<br />

polecen dostepnych w menu rozwijanym<br />

palety akcji. Oprócz mozliwosci wyboru<br />

pomiedzy trybami Normal i Expert, menu<br />

to udostepnia opcje szukania i zastepowania<br />

wyrazów, importowania i eksportowania<br />

skryptów, jak równiez drukowania skryptu<br />

oraz rózne sposoby jego wyswietlania<br />

(rys. 12.16). Wszystkie te funkcje sa<br />

dostepne w obydwu trybach pracy palety –<br />

Normal i Expert.<br />

W celu sprawdzenia skladni skryptu:<br />

1. Na palecie akcji wybierz Check Syntax<br />

z menu rozwijanego opcji (Ctrl+T).<br />

Flash sprawdzi zawartosc okna skryptu<br />

w poszukiwaniu bledów w skladni.<br />

W przypadku odnalezienia bledu, zobaczysz<br />

ostrzegawcze okno dialogowe i liste<br />

ewentualnych bledów wyswietlona w oknie<br />

Output (rys. 12.17). Wykorzystaj<br />

informacje zawarte w tym oknie do<br />

zlokalizowania i naprawienia zgloszonych<br />

bledów.<br />

Wskazówka<br />

• Polecenie Check Syntax informuje<br />

o bledach tylko odnosnie biezacej<br />

zawartosci okna skryptu. Jesli zadne<br />

bledy nie zostana znalezione, zobaczysz<br />

okno dialogowe informujace o braku<br />

bledów w skrypcie (rys. 12.18).<br />

Drukuje zawartosc<br />

okna skryptu<br />

Wyróznia<br />

kolorami rózne<br />

elementy skryptu<br />

Zaznacza wybrana linie wyrazenia<br />

W oknie skryptu wyszukuje<br />

okreslonego slowa lub frazy<br />

Zastepuje dane slowo<br />

lub fraze innymi<br />

Wyswietla akcje<br />

niepolecane do<br />

wykorzysta nia<br />

Zmienia<br />

rozmiary<br />

wyswietlania<br />

okna skryptu<br />

Rys. 12.16. Menu rozwijane opcji palety akcji zawiera funkcje<br />

edycyjne dla okna skryptu<br />

Sprawdza okno skryptu<br />

w poszukiwaniu bledów<br />

Importuje kod ActionScript<br />

z zewnetrznego pliku tekstowego<br />

Zapisuje zawartosc okna skryptu<br />

w formie pliku tekstowego<br />

390


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.17. Napisany skrypt (u góry) zawiera<br />

niepotrzebnie wstawiona klamre zamykajaca.<br />

Flash informuje cie o rodzaju i lokalizacji bledu<br />

w oknie Output (u dolu)<br />

Rys. 12.18. Flash informuje takze o tym, ze twój<br />

skrypt jest wolny od bledów skladni<br />

Rys. 12.19. Kazde wystapienie wyrazenia<br />

_root.myPaddle._x zostanie zamienione<br />

na _root.myPaddle._y<br />

Uzywaj funkcji Find oraz Replace,<br />

dostepnych na palecie akcji, do szybkiej<br />

zmiany nazw zmiennych, wlasciwosci,<br />

a nawet akcji. Przykladowo, jesli utworzyles<br />

dlugi skrypt, w którym pojawia sie zmienna<br />

redTeamStatus, mozesz skopiowac i wkleic<br />

skrypt, a nastepnie zmienic wszystkie<br />

elementy redTeamStatus na<br />

blueTeamStatus. Mozliwe jest wyszukanie<br />

wszystkich wystepujacych w skrypcie<br />

wlasciwosci _x i zamienienie ich na<br />

wlasciwosci _y, albo odnalezienie<br />

wszystkich wystapien akcji gotoAndStop<br />

i wstawienie na ich miejsce akcji<br />

gotoAndPlay.<br />

W celu odnalezienia elementu<br />

skryptu i zastapienia go innym:<br />

1. Wybierz Replace z menu rozwijanego opcji<br />

palety akcji (Ctrl+H).<br />

Pojawi sie okno dialogowe Replace.<br />

2. W polu Find what podaj slowo lub slowa,<br />

które Flash ma odnalezc. W polu Replace<br />

wpisz slowo lub slowa, które maja zastapic<br />

wyszukane elementy. Zaznacz pole wyboru<br />

Match case, jesli Flash powinien<br />

rozpoznawac wielkie i male litery<br />

(rys. 12.19).<br />

3. Kliknij Replace w celu zamiany pierwszego<br />

odnalezionego slowa, ewentualnie kliknij<br />

Replace all, jesli chcesz od razu zamienic<br />

wszystkie wystapienia odnalezionego slowa.<br />

Wskazówki<br />

• Okno dialogowe Replace zastepuje<br />

wszystkie wystapienia danego slowa lub<br />

frazy innymi, tylko odnosnie biezacej<br />

zawartosci okna skryptu. W celu zamiany<br />

wszystkich wystapien wybranego slowa<br />

w calym filmie, musisz otwierac palete akcji<br />

dla kazdego oddzielnego skryptu<br />

i powtarzac caly proces.<br />

• W celu odnajdywania i zastepowania slów<br />

musisz uruchomic palete akcji w trybie<br />

Expert.<br />

Edytowanie skryptu<br />

391


Rozdzial 12.<br />

Funkcje importowania, eksportowania<br />

i drukowania, dostepne na palecie akcji,<br />

pozwalaja ci korzystac z zewnetrznych<br />

edytorów tekstu i drukowac zawartosc okna<br />

skryptu.<br />

Edytowanie skryptu<br />

W celu zaimportowania skryptu:<br />

1. Wybierz Import From File z menu<br />

rozwijanego opcji (Ctrl+I). W oknie<br />

dialogowym, które sie pojawi, wybierz plik<br />

tekstowy zawierajacy skrypt wybrany do<br />

zaimportowania. Kliknij Open.<br />

Flash zastapi biezaca zawartosc okna<br />

skryptu zawartoscia importowanego pliku<br />

tekstowego.<br />

W celu wyeksportowania skryptu:<br />

1. Wybierz Export As File z menu<br />

rozwijanego opcji (Ctrl+O). Wpisz nazwe<br />

pliku tekstowego, w którym przechowywany<br />

bedzie eksportowany skrypt. Kliknij Save .<br />

Flash dokona zapisu pliku tekstowego,<br />

w którym znajdzie sie cala biezaca<br />

zawartosc okna skryptu. Polecane dla<br />

eksportowanych w ten sposób plików<br />

rozszerzenie to .as, jak w mójKod.as.<br />

392


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Plik FLA Plik FLA Plik sharedLibrary.fla<br />

Plik SWF<br />

Plik tekstowy<br />

ActionScript<br />

Plik SWF<br />

Plik sharedLibrary.swf<br />

Rys. 12.20. Flash dolacza zewnetrzny skrypt za<br />

pomoca akcji #include po wyeksportowaniu pliku<br />

SWF (z lewej). Natomiast wspóldzielona<br />

biblioteka jest dolaczana do pliku SWF<br />

w czasie odtwarzania (z prawej)<br />

Dolaczanie<br />

zewnetrznych skryptów<br />

Mozliwe jest tworzenie zewnetrznych<br />

plików ActionScript w celu wspóldzielenia<br />

pewnych fragmentów kodu przez wiele<br />

filmów. Utwórz taki kod, pojawiajacy sie<br />

wielokrotnie w róznych filmach, i trzymaj<br />

go w pliku tekstowym poza srodowiskiem<br />

Flasha. Gdybys chcial cos w nim zmienic,<br />

bedziesz musial to zrobic tylko raz,<br />

w jednym miejscu.<br />

Zewnetrzne fragmenty kodu mozna dolaczac<br />

do filmu Flasha za pomoca akcji #include,<br />

która wprowadza do Flasha taki zewnetrzny<br />

plik tekstowy ze skryptem i dolacza jego<br />

zawartosc do istniejacego juz w oknie<br />

skryptu kodu.<br />

Jednakze istnieje zasadnicza róznica<br />

pomiedzy uzywaniem akcji #include do<br />

wspóldzielenia kodu ActionScript<br />

i uzywaniem wspóldzielonych bibliotek do<br />

dzielenia symboli. Dolaczany z zewnatrz<br />

kod ActionScript nie jest kompilowany<br />

dynamicznie w czasie odtwarzania, tak wiec<br />

zachodzi potrzeba powtórnego<br />

wyeksportowania filmu Flasha, jesli taki<br />

kod ma zostac wprowadzony do biezacego<br />

skryptu. Oznacza to, ze akcja #include,<br />

chociaz uzyteczna, ma ograniczone dzialanie<br />

w srodowisku autorskim Flasha (rys. 12.20).<br />

Dolaczanie zewnetrznych skryptów<br />

393


Rozdzial 12.<br />

Dolaczanie zewnetrznych skryptów<br />

W ponizszym cwiczeniu przypiszemy akcje<br />

#include do klipu filmowego. Dokument<br />

tekstowy zawiera akcje ActionsScript typu<br />

startDrag. Po wyeksportowaniu pliku<br />

SWF, kod z zewnetrznego dokumentu<br />

tekstowego zostanie dolaczony do akcji<br />

przypisanych do klipu filmowego.<br />

W celu dolaczenia<br />

zewnetrznego fragmentu skryptu<br />

za pomoca akcji #include:<br />

1. Uruchom edytor tekstu, np. systemowy<br />

Notatnik.<br />

2. Napisz swój kod ActionScript i zapisz go<br />

w postaci dokumentu tekstowego. Nie<br />

uzywaj znaków cudzyslowu. Nadaj plikowi<br />

rozsze rzenie .as, dzieki czemu zostanie<br />

zidentyfikowany jako plik ActionScript<br />

(rys. 12.21).<br />

3. Otwórz nowy dokument Flasha. Utwórz<br />

symbol klipu filmowego i umiesc jego klon<br />

na scenie. Zaznacz klon i otwórz palete<br />

akcji.<br />

4. Wybierz Actions/onClipEvent. W bloku<br />

edycji parametrów zaznacz zdarzenie Load.<br />

5. Wybierz Actions/include (Esc + in).<br />

6. W polu Path wpisz nazwe pliku tekstowego<br />

zawierajacego kod ActionScript. Nie wpisuj<br />

znaków cudzyslowu, jako ze zostana one<br />

dodane automatycznie w oknie skryptu<br />

(rys. 12.22).<br />

7. Zapisz plik FLA w tej samej lokalizacji,<br />

co plik tekstowy z kodem ActionScript.<br />

8. Wyeksportuj plik SWF z pliku FLA. Flash<br />

dolaczy do klipu filmowego kod zawarty<br />

w dokumencie tekstowym. Jesli zmienisz<br />

zawartosc pliku tekstowego, bedziesz musial<br />

ponownie wyeksportowac plik SWF w celu<br />

uwzglednienia przez Flasha tych zmian.<br />

Rys. 12.21. Fragment skryptu zapisany<br />

w pliku tekstowym myCode.as<br />

Rys. 12.22. Podczas wprowadzania tego<br />

klipu filmowego do pamieci, zewnetrzny plik<br />

tekstowy o nazwie myCode.as jest dolaczany<br />

do tego fragmentu skryptu<br />

Wskazówka<br />

• Jesli korzystasz z palety akcji w trybie<br />

Expert przy recznym wpisywaniu<br />

skryptu, nie dolaczaj srednika na koncu<br />

wyrazenia #include. Chociaz sredniki<br />

zazwyczaj sluza do oddzielania<br />

poszczególnych wyrazen, #include jest<br />

tutaj wyjatkiem.<br />

394


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Kliknij, zeby<br />

zwinac lub<br />

rozwinac<br />

Pole Find<br />

(znajdz)<br />

Przyciski sposobu<br />

Obszar wyswietlania<br />

wyswietlania zawartosci<br />

Rys. 12.23. Paleta Movie Explorer wyswietla<br />

w hierarchicznej postaci rózne elementy filmu<br />

Poslugiwanie sie<br />

paleta Movie Explorer<br />

Jesli chcesz obejrzec caly swój film „z lotu<br />

ptaka”, wykorzystaj palete Movie Explorer<br />

(Ctrl+Alt+M). Jest to potezne narzedzie –<br />

do sledzenia wszystkich elementów filmu –<br />

które pomoze ci dotrzec bezposrednio do<br />

wybranego fragmentu skryptu, grafiki czy<br />

tez ujecia przeznaczonego do modyfikacji.<br />

Paleta Movie Explorer pozwoli<br />

przedstawiac wybiórczo graficzna<br />

reprezentacje komponentów filmu i uzyska<br />

informacje o poszczególnych ujeciach,<br />

warstwach, jak równiez fragmentach skryptu<br />

przypisanych do przycisków, klipów<br />

filmowych i ujec kluczowych. Wyswietlana<br />

zawartosc jest ulozona hierarchicznie, dzieki<br />

czemu latwo dostrzec powiazania pomiedzy<br />

róznymi elementami filmu (rys. 12.23).<br />

Paleta Movie Explorer jest uaktualniana<br />

w czasie rzeczywistym, tak wiec kiedy<br />

pracujesz w srodowisku autorskim Flasha,<br />

paleta zawsze wyswietla wyniki ostatnich<br />

modyfikacji. Korzystaj z niej w celu<br />

odnajdywania okreslonych elementów filmu.<br />

Na przyklad, jesli chcesz znalezc wszystkie<br />

klony klipu filmowego, mozesz nakazac<br />

Flashowi wyszukanie ich, a nastepnie<br />

wyswietlenie dokladnej sceny, warstwy<br />

i klatki, w której rezyduje kazdy z klonów.<br />

Pózniej mozesz szybko udac sie do<br />

wskazanego punktu na listwie czasowej<br />

i dokonac edycji takiego klonu. Ponadto<br />

w samej palecie Movie Explorer mozesz<br />

edytowac rózne elementy, np. nazwy<br />

symboli lub zawartosc selekcji tekstu. Paleta<br />

Movie Explorer znacznie ulatwia orientacje<br />

w rozbudowanym filmie z racji<br />

wyswietlania zawartosci na rózne sposoby<br />

i szybkiego nawigowania do wskazanego<br />

elementu.<br />

Paleta Movie Explorer<br />

395


Rozdzial 12.<br />

Paleta Movie Explorer<br />

W celu wyswietlania<br />

róznych kategorii elementów:<br />

Z rozwijanego menu opcji w prawym<br />

górnym rogu palety Movie Explorer<br />

wybierz jedna (lub wiecej) z opcji<br />

(rys. 12.24):<br />

1. Show Movie Elements wyswietla wszystkie<br />

elementy filmu, organizujac je wedlug scen.<br />

Pokazywana jest tylko biezaca scena.<br />

lub<br />

Show Symbol Definitions wyswietla<br />

wszystkie elementy powiazane z klonami<br />

symboli obecnymi na scenie.<br />

lub<br />

Show All Scenes wyswietla wszystkie<br />

elementy filmu we wszystkich scenach.<br />

W celu wyswietlenia<br />

wybranych kategorii elementów:<br />

Z rzedu przycisków okreslajacych sposób<br />

wyswietlania zawartosci, umieszczonych<br />

w górnej czesci palety, kliknij jeden lub<br />

wiecej, zeby dodac kolejne kategorie<br />

elementów do wyswietlenia (rys. 12.25).<br />

1. Show Text wyswietla biezacy lancuch<br />

znakowy w selekcji tekstu, nazwe i rozmiar<br />

czcionki, a takze nazwy zmiennych tekstu<br />

pobieranego i dynamicznego.<br />

lub<br />

Show Buttons, Movie Clips , and Graphics<br />

wyswietla nazwy symboli przycisków,<br />

klipów filmowych i grafik na scenie, jak<br />

równiez nazwy klonów klipów filmowych.<br />

lub<br />

Show ActionScripts wyswietla akcje<br />

przypisane przyciskom, klipom filmowym<br />

i ujeciom.<br />

lub<br />

Show Vide o, Sound, and Bitmaps<br />

wyswietla nazwy symboli zaimportowanych<br />

klipów wideo, dzwieków i bitmap obecnych<br />

na scenie.<br />

Rys. 12.24. Menu rozwijane opcji palety<br />

Movie Explorer<br />

Rys. 12.25. Przyciski sposobu wyswietlania<br />

zawartosci pozwalaja selektywnie wybierac<br />

wyswietlane elementy<br />

396


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.26. Wpisanie dowolnej frazy w polu Find<br />

spowoduje wyswietlenie wszystkich miejsc jej<br />

wystapienia. Tutaj zostala znaleziona nazwa<br />

klonu myReferecnePoint odnoszaca sie do<br />

symbolu klipu filmowego ball<br />

lub<br />

Show Frames and Layers wyswietla nazwy<br />

warstw, ujec kluczowych i etykiet<br />

poszczególnych klatek filmu.<br />

lub<br />

Customize which Items to Show wyswietla<br />

okno dialogowe, w którym mozesz dokonac<br />

wyboru elementów przeznaczonych do<br />

wyswietlenia.<br />

W celu odnalezienia i edycji wyswietlanych<br />

elementów:<br />

1. W polu Find u góry palety wpisz nazwe<br />

elementu, który chcesz odnalezc (rys. 12.26).<br />

Wszystkie elementy filmu o podanej nazwie<br />

zostana wyswietlone automatycznie w czasie<br />

wpisywania.<br />

2. Kliknij wybrany element, zeby go zaznaczyc.<br />

Spowoduje to jednoczesnie zaznaczenie<br />

tego elementu na listwie czasowej i na<br />

scenie. Jesli zaznaczono scene lub ujecie<br />

kluczowe, Flash przeniesie cie do tej sceny<br />

lub ujecia kluczowego.<br />

3. Z menu rozwijanego opcji palety Movie<br />

Explorer wybierz Edit in Place lub Edit in<br />

New Window – w celu uruchomienia trybu<br />

edycji wybranego symbolu.<br />

lub<br />

4. Z menu rozwijanego opcji wybierz Rename.<br />

Umozliwi to zaznaczenie i edycje nazwy<br />

elementu.<br />

lub<br />

Kliknij dwukrotnie wybrany element w celu<br />

zmodyfikowania go. W zaleznosci od typu<br />

elementu, Flash moze otworzyc dodatkowe<br />

okno:<br />

υ Dwukrotne klikniecie symbolu<br />

(z wyjatkiem dzwieku, wideo i bitmap)<br />

uruchamia tryb edycji symbolu.<br />

υ Dwukrotne klikniecie skryptu otwiera<br />

palete akcji.<br />

Paleta Movie Explorer<br />

397


Rozdzial 12.<br />

Paleta Movie Explorer<br />

υ Dwukrotne klikniecie sceny lub warstwy<br />

pozwala ci na zmiane nazwy tych<br />

elementów.<br />

υ Dwukrotne klikniecie ujecia otwiera<br />

palety majace zwiazek z edycja ujec<br />

(paleta akcji, Frame i Sound).<br />

υ Dwukrotne klikniecie selekcji tekstu<br />

pozwala na edycje jej zawartosci.<br />

W celu wymiany wszystkich wystapien<br />

okreslonego fontu:<br />

1. W polu find palety Movie Explorer wpisz<br />

nazwe fontu, który chcesz zastapic innym.<br />

Wyswietlone zostana wszystkie miejsca<br />

wystepowania tego fontu (rys. 12.27).<br />

2. Zaznacz wszystkie elementy tekstowe –<br />

klikniecie z przytrzymaniem Shift pozwala<br />

dokonac kilku selekcji jednoczesnie.<br />

3. Poslugujac sie paleta Character, wybierz<br />

nowa czcionke i styl dla wszystkich<br />

elementów tekstowych.<br />

Wszystkie zaznaczone elementy zmienia sie<br />

stosownie do modyfikacji, jakie<br />

wprowadziles na palecie Character<br />

(rys. 12.28).<br />

W celu wyszukania wszystkich<br />

klonów symbolu klipu filmowego:<br />

1. W polu find palety Movie Explorer wpisz<br />

nazwe symbolu klipu filmowego, którego<br />

klony chcesz odnalezc. Wyswietlone zostana<br />

wszystkie klony wybranego klipu filmowego<br />

(rys. 12.29).<br />

Rys. 12.27. Wyswietlone zostana wszystkie<br />

miejsca wystepowania fontu Times<br />

Rys. 12.29.<br />

Wpisanie w polu<br />

Find nazwy ball<br />

spowoduje<br />

wyswietlenie<br />

wszystkich klonów<br />

symbolu o tej<br />

nazwie<br />

Rys. 12.28. Majac zaznaczone elementy<br />

tekstowe pisane czcionka Times, wybierz inny<br />

font, np. Verdana (u góry) z listy na palecie<br />

Character. Flash wymieni czcionke<br />

zaznaczonych elementów tekstowych<br />

z Times na Verdana (u dolu)<br />

398


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.30. Obiekt myArray jest tworzony za<br />

pomoca funkcji konstruktora new Array<br />

Wyswietlanie zmiennych<br />

i obiektów w oknie Output<br />

Chociaz paleta Movie Explorer daje dostep do<br />

wiekszosci elementów graficznych filmu oraz<br />

fragmentów skryptu, to jednak nie umozliwia<br />

wyswietlania zmiennych lub sciezek dostepu<br />

do obiektów. W tym celu uzywa sie okna<br />

Output. Czesto w czasie odtwarzania filmu<br />

bedziesz chcial znac wartosci przyjmowane<br />

przez zmienne i sciezki dostepu do klipów<br />

filmowych, zeby móc o cenic, czy Flash<br />

wlasciwie manipuluje danymi. Jest to<br />

szczególnie wazne w przypadku najbardziej<br />

skomplikowanych filmów, byc moze<br />

zawierajacych wiele parametrów<br />

przekazywanych miedzy funkcjami lub duza<br />

ilosc dynamicznie przydzielanych zmiennych.<br />

Zalózmy na przyklad, ze chcesz zadeklarowac<br />

i wypelnic obiekt tablicowy w pierwszym<br />

ujeciu na listwie czasowej. Po przypisaniu<br />

skryptu do odpowiedniego ujecia, mozesz<br />

przetestowac film, ale tak naprawde nie<br />

bedziesz wiedzial, czy Flash wlasciwie<br />

wypelnil tablice, jako ze na scenie nie bedzie<br />

widac nic konkretnego. W celu sprawdzenia,<br />

czy tablica jest rzeczywiscie wypelniona<br />

poprawnymi wartosciami, mozesz wyswietlic<br />

zmienne w oknie Output w trybie testowym.<br />

Polecenie List Variables wyswietla wszystkie<br />

zmienne istniejace w filmie wraz<br />

z przypisanymi im wartosciami.<br />

W kolejnym cwiczeniu utworzysz najpierw<br />

obiekt tablicowy, a nastepnie przypiszesz mu<br />

wartosci za pomoca wyrazenia wykonywanego<br />

w petli. Bedac w trybie testowym, wyswietlisz<br />

zmienne filmu w oknie Output, zeby<br />

zobaczyc ostateczne wartosci podstawione do<br />

tablicy.<br />

W celu wyswietlenia zmiennych<br />

w oknie Output:<br />

1. Zaznacz pierwsze ujecie na glównej listwie<br />

czasowej i otwórz palete akcji.<br />

2. Przygotuj klon nowego obiektu tablicowego<br />

o nazwie myArray (moja tablica), jak to<br />

opisano w rozdziale 11 (rys. 12.30).<br />

Wyswietlanie zmiennych i obiektów<br />

399


Rozdzial 12.<br />

Wyswietlanie zmiennych i obiektów<br />

3. Wybierz Actions/for. W polu Init wpisz<br />

i=0. W polu Condition wpisz i


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.34. Ten sam film wyswietlany na palecie<br />

Movie Explorer (u góry) oraz w oknie Output<br />

(u dolu). Na palecie Movie Explorer widoczny<br />

jest klip filmowy spaceship, jego przycisk i akcje<br />

przypisane do przycisku. Okno Output wyswietla<br />

sciezke dostepu do klipu filmowego spaceship<br />

i wskazuje, ze wewnatrz klipu sa jeszcze ksztalt<br />

oraz przycisk. Ponadto okno Output informuje,<br />

ze w ujeciu 64. umieszczony jest klip filmowy<br />

asteroid (w momencie, kiedy wybrano polecenie<br />

List Objects)<br />

Okno Output mozna tez wykorzystac do<br />

wyswietlania obiektów w filmie. Poniewaz<br />

okno to nie wyswietla informacji<br />

w charakterze graficznym, mozesz uzyskac<br />

w nim informacje niedostepne z poziomu<br />

palety Movie Explorer (poslugujacej sie<br />

wlasnie taka graficzna reprezentacja<br />

elementów). Informacje o obiektach,<br />

wyswietlane w oknie Output, zawieraja<br />

poziom obiektu, numer ujecia, typ symbolu<br />

(klip filmowy, przycisk), typ grafiki (tekst,<br />

ksztalt) i bezwzgledna sciezke dostepu do<br />

klipów filmowych. Sciezka dostepu jest<br />

najwazniejsza informacja, która mozesz<br />

uzyskac w oknie Output wprost (Movie<br />

Explorer wyswietla informacje osciezkach<br />

posrednio). rys. 12.34 przedstawia<br />

porównanie typowych informacji<br />

wyswietlanych dla jednego filmu, zarówno<br />

w oknie Output, jak i za pomoca palety<br />

Movie Explorer.<br />

W celu wyswietlenia obiektów<br />

w oknie Output:<br />

1. W trybie testowym, wybierz z górnego<br />

paska menu Debug/List Objects (Ctrl+L)<br />

(rys. 12.35).<br />

W oknie Output zostana wyswietlone<br />

wszystkie obiekty filmu w aktualnym stanie.<br />

Wskazówka<br />

• Podobnie jak w przypadku polecenia List<br />

Variables, polecenie List Objects<br />

wyswietla jedynie aktualny w momencie<br />

wybrania status filmu. Jesli klip filmowy<br />

znika z listwy czasowej w czasie<br />

odtwarzania filmu, musisz ponownie wybrac<br />

polecenie List Objects w celu odswiezenia<br />

informacji o obiektach, wyswietlanych<br />

w oknie Output.<br />

Wyswietlanie zmiennych i obiektów<br />

Rys. 12.35. W trybie testowym wybierz<br />

Debug/List Objects<br />

401


Rozdzial 12.<br />

Sledzenie zmiennych w oknie Output<br />

Sledzenie zmiennych<br />

w oknie Output<br />

Czasem bedziesz chcial znac status zmiennej<br />

lub wyra zenia w okreslonym momencie<br />

w czasie odtwarzania filmu. Przykladowo,<br />

wyobraz sobie, ze przygotowales gre Pong,<br />

w której klip filmowy w formie pileczki<br />

odbija sie od dwóch innych klipów<br />

filmowych, przedstawiajacych rakietki.<br />

Chcesz poznac, na potrzeby testów, pozycje<br />

rakietki w momencie jej kolizji z pileczka.<br />

Uzycie w tym miejscu polecenia List<br />

Variables niewiele pomoze, jako ze zmienne<br />

obrazujace polozenie rakietki zmieniaja sie<br />

bardzo szybko. Rozwiazaniem jest<br />

skorzystanie z akcji trace. Mozesz umiescic<br />

te akcje w dowolnym punkcie filmu i tym<br />

samym nakazac Flashowi wysylanie<br />

wybranego komunikatu do okna Output w<br />

trybie testowym. Tym komunikatem bedzie<br />

wyrazenie, utworzone w celu przekazywania<br />

ci potrzebnej informacji we wlasciwym<br />

momencie. W przypadku wspomnianej gry<br />

Pong, wyrazenie sledzace mogloby wygladac<br />

tak:<br />

trace ("pozycja X rakietki wynosi " +<br />

mojaRakietka._x);<br />

trace ("pozycja Y rakietki wynosi " +<br />

mojaRakietka._y);<br />

Umiesc powyzsze wyrazenia w wyrazeniu<br />

warunkowym, odpowiadajacym za detekcje<br />

kolizji. W przypadku spelnieniu warunku,<br />

Flash wysle komunikat (w momencie<br />

wystapienia kolizji) do okna Output.<br />

Komunikat moze wygladac nastepujaco:<br />

pozycja X rakietki wynosi 25<br />

pozycja y rakietki wynosi 89<br />

402


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.36. Akcja startDrag sprawi, ze ten klip<br />

filmowy bedzie podazal za wskaznikiem myszy<br />

Rys. 12.37. Akcja trace szacuje wyrazenie w polu<br />

Message i wyswietla wartosc w oknie Output<br />

Klip filmowy myMovieClip<br />

(przeciagany)<br />

Klip filmowy rock<br />

Rys. 12.38. Okno Output wyswietla wartosc false<br />

(falsz), jesli nie zachodzi kolizja miedzy klipami<br />

filmowymi myMovieClip i rock (u góry).<br />

W przypadku nastapienia kolizji, w oknie Output<br />

pojawi sie wartosc true (prawda) (u dolu)<br />

Akcji trace mozna tez uzyc do<br />

monitorowania warunku wyrazenia, dzieki<br />

czemu bedziesz mógl zrozumiec<br />

okolicznosci zmieniajace jego wartosc. Na<br />

przyklad w ponizszym cwiczeniu, utworzysz<br />

prosty przeciagany klip filmowy oraz drugi<br />

klip, tym razem stacjonarny. Przypiszesz<br />

akcje trace do metody hitTest<br />

przeciaganego klipu filmowego,<br />

pozwalajacej zobaczyc, kiedy i gdzie<br />

wartosci sa prawdziwe lub falszywe.<br />

W celu<br />

wyswietlenia wyrazenia<br />

w oknie Output:<br />

1. Utwórz symbol klipu filmowego, umiesc<br />

jego klon na scenie i nazwij go<br />

myMovieClip (mój klip filmowy).<br />

2. Utwórz kolejny symbol klipu filmowego,<br />

umiesc jego klon na scenie i nazwij go rock<br />

(skala).<br />

3. Zaznacz klon o nazwie myMovieClip<br />

i otwórz palete akcji.<br />

4. Wybierz Actions/on. W bloku edycji<br />

parametrów wybierz zdarzenie enterFrame.<br />

5. Wybierz Actions/startDrag. Wpisz this<br />

w polu Target i zaznacz pole Expression.<br />

Zaznacz tez pole Lock mouse to center<br />

(rys. 12.36).<br />

6. Wybierz Actions/trace (Esc + tr ).<br />

7. W polu Message wprowadz wyrazenie:<br />

this.hitTest(_root.rock)<br />

Zaznacz pole Expression (rys. 12.37).<br />

Flash oszacuje metode hiTest w celu<br />

ustalenia, czy przeciagany klip filmowy<br />

wchodzi w kolizje z klipem filmowym rock.<br />

Zwracana wartosc jest wyswietlana w oknie<br />

Output w trybie testowym.<br />

8. Przetestuj film.<br />

Otworzy sie okno Output, wyswietlajac<br />

rezultat dzialania akcji trace (rys. 12.38).<br />

Sledzenie zmiennych w oknie Output<br />

403


Rozdzial 12.<br />

Sledzenie zmiennych w oknie Output<br />

W polaczeniu z akcja trace mozna jeszcze<br />

uzyc operatora typeof i w efekcie uzyskac<br />

informacje o typie danych przechowywanych<br />

w zmiennej. Informacja tego rodzaju staje sie<br />

bardzo uzyteczna w momencie, kiedy<br />

zaczynasz doswiadczac problemów<br />

z niespodziewanymi wartosciami zmiennych.<br />

Jesli podejrzewasz, ze problem ten jest<br />

wynikiem uzywania zmiennych, które nie sa<br />

zgodne z typem przechowywanych w nich<br />

danych, skorzystanie z akcji trace pomoze<br />

potwierdzic lub rozwiac twoje przypuszczenia.<br />

W celu okreslenia typu danych<br />

przechowywanych w zmiennej:<br />

1. Kontynuuj prace nad plikiem utworzonym<br />

wczesniej, w cwiczeniu „W celu<br />

wyswietlenia zmiennych w oknie Output”.<br />

Jest to plik, w którym utworzyles tablice<br />

i wypelniles ja wyrazeniem wykonywanym<br />

w petli. Zaznacz wiec pierwsze ujecie<br />

i otwórz palete akcji.<br />

2. Zaznacz klamre zamykajaca ostatniego<br />

wyrazenia w oknie skryptu.<br />

3. Wybierz Actions/trace.<br />

4. W polu Message wybierz Operators/typeof.<br />

W polu Message pojawi sie operator typeof,<br />

z podswietlonym argumentem wyrazenia.<br />

5. W miejsce podswietlonego slowa wpisz<br />

myArray (rys. 12.39).<br />

Flash oszacuje zmienna myArray<br />

i wyswietli jej typ danych w oknie Output<br />

w trybie testowym.<br />

6. Dodaj jeszcze dwie akcje trace<br />

z operatorami typeof (rys. 12.40).<br />

7. Przetestuj film. Flash wyswietli rezultaty<br />

dzialania trzech wyrazen w oknie Output<br />

w trybie testowym. Pierwsze wyrazenie<br />

wyswietli object (obiekt) jako typ danych<br />

zmiennej myArray. Drugie wyswietli<br />

number (liczba) jako typ danych zmiennej<br />

myArray[3], a trzecie wyrazenie wskaze na<br />

string (lancuch znakowy) zmiennej<br />

myArray.toString() (rys. 12.41).<br />

Rys. 12.39. Typ danych zawartych w tablicy<br />

myArray zostanie oszacowany<br />

Rys. 12.40. Dodaj akcje trace w celu<br />

oszacowania i wyswietlenia typów danych 3.<br />

indeksu tablicy myArray oraz metody toString<br />

tej tablicy<br />

Rys. 12.41. Rezultaty wykonania akcji trace<br />

widoczne w oknie Output<br />

404


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Hierarchia<br />

klipów<br />

filmowych<br />

Okno<br />

wyswietlania<br />

Zakladki<br />

Properties,<br />

Variables<br />

i Watch<br />

Miejsce<br />

osadzenia<br />

w hierarchii<br />

Rys. 12.42. Paleta Debugger wyswietla<br />

hierarchie klipów filmowych wraz z wszystkimi<br />

ich wlasciwosciami i zmiennymi. Tutaj, zmienne<br />

myDegrees, myRadians i pressing sa osadzone<br />

w klipie filmowym _level0.myReferencePoint<br />

Rys. 12.43. Uzyj menu Control do kontrolowania<br />

sposobu odtwarzania filmu w trybie testowym<br />

Poslugiwanie sie<br />

paleta Debugger<br />

Paleta Debugger daje ci mozliwosc<br />

monitorowania i modyfikowania wartosci<br />

wszystkich zmiennych i wlasciwosci<br />

wystepujacych w filmie, i to w czasie jego<br />

odtwarzania. Mozna nawet sprawdzac<br />

wartosci obiektów przechowujacych dane,<br />

takich jak klony obiektu daty lub dzwieku.<br />

Korzystaj z palety Debugger w celu<br />

sprawdzenia, czy Flash manipuluje<br />

informacjami zawartymi w zmiennych<br />

w okreslony przez ciebie sposób, a takze<br />

w celu szybkiego sprawdzania warunków<br />

i innych efektów przetwarzania zmiennych.<br />

Wyobraz sobie np., ze utworzyles animacje<br />

ze zmienna o nazwie mojaSzybkosc,<br />

kontrolujaca predkosc poruszania sie statku<br />

kosmicznego. Dzieki palecie Debugger<br />

zmienna te mozesz modyfikowac podczas<br />

odtwarzania filmu i na biezaco oceniac jej<br />

wplyw na ruch statku. Zwiekszaj wiec lub<br />

zmniejszaj wartosc zmiennej tak dlugo, az<br />

uzyskasz zadowalajace rezultaty.<br />

Palete Debugger otwiera sie i uzywa<br />

w specjalnej wersji odtwarzacza Flasha,<br />

dostepnej z poziomu srodowiska autorskiego<br />

programu. Po otwarciu i uaktywnieniu,<br />

paleta Debugger wyswietla informacje<br />

w dwóch oknach: w oknie wyswietlania<br />

u góry palety oraz w zakladkach Properties,<br />

Variables i Watch w dolnej czesci palety.<br />

Okno wyswietlania pokazuje g lówna listwe<br />

czasowa wraz z hierarchia klipów<br />

filmowych obecnych na tej listwie. Mozesz<br />

zaznaczyc listwe glówna albo inna, obecna<br />

w filmie, i zobaczyc wlasciwosci przypisane<br />

do tej okreslonej listwy czasowej lub<br />

wszystkie osadzone w niej zmienne<br />

(rys. 12.42).<br />

Uzyj polecen menu Control do przewijania,<br />

odtwarzania i przemieszczania sie w przód<br />

i w tyl w obrebie filmu, takze klatka po klatce,<br />

w celu skrupulatnego sprawdzania wlasciwosci<br />

i zmiennych filmu (rys. 12.43).<br />

Poslugiwanie sie paleta Debugger<br />

405


Rozdzial 12.<br />

Poslugiwanie sie paleta Debugger<br />

W celu uzyskania dostepu<br />

do palety Debugger:<br />

1. Z poziomu srodowiska autorskiego Flasha,<br />

wybierz Control/Debug Movie<br />

(Ctrl+Shift+Enter) (rys. 12.44).<br />

Flash wyeksportuje plik SWF i uruchomi<br />

tryb testowy. Zostanie otwarta<br />

i uruchomiona paleta Debugger.<br />

lub<br />

1. W trybie testowym srodowiska autorskiego,<br />

w odtwarzaczu Flasha lub w przegladarce<br />

internetowej, kliknij prawym klawiszem<br />

myszy film SWF.<br />

Pojawi sie menu podreczne Flasha<br />

(rys. 12.45).<br />

2. Z menu podrecznego wybierz Debugger.<br />

Zostanie otwarta i uruchomiona paleta<br />

Debugger.<br />

W celu zmodyfikowania<br />

wlasciwosci lub zmiennej<br />

z poziomu palety Debugger:<br />

1. W oknie wyswietlania palety Debugger<br />

zaznacz klip filmowy, którego wlasciwosci<br />

lub zmienne chcesz modyfikowac.<br />

2. Wybierz zakladke Properties (wlasciwosci)<br />

lub Variables (zmienne).<br />

3. Kliknij dwukrotnie pole w kolumnie Value,<br />

znajdujace sie na prawo od wlasciwosci lub<br />

zmiennej, która chcesz zmodyfikowac<br />

(rys. 12.46).<br />

4. Wprowadz nowa wartosc.<br />

Nowa wartosc musi byc raczej stala (lancuch<br />

znakowy, liczba, wartosc boole’owska), niz<br />

wyrazeniem odnoszacym sie do innej<br />

zmiennej lub wlasciwosci. Przykladowo,<br />

mozesz wpisac 35, ale nie 35 + myAlpha.<br />

Po poprawnym podstawieniu nowej<br />

wartosci, film natychmiast reaguje na<br />

zmiany.<br />

Rys. 12.44. Wybierz Control/Debug Movie<br />

Rys. 12.45. Dostep do palety Debugger<br />

mozna uzyskac równiez za posrednictwem<br />

menu podrecznego<br />

Rys. 12.46. Wartosci wlasciwosci moga byc<br />

zaznaczane (u góry) i modyfikowane (u dolu),<br />

a wszelkie zmiany zostana wprowadzone do<br />

filmu natychmiast, nawet w czasie jego<br />

odtwarzania<br />

406


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.47. Zaznaczona zmienna (myRadians)<br />

jest dodawana do zakladki Watch przy pomocy<br />

menu rozwijanego opcji<br />

Rys. 12.48. Zaznaczona zmienna (myRadians)<br />

jest dodawana do zakladki Watch przy pomocy<br />

menu podrecznego<br />

Wskazówka<br />

• Niektóre wlasciwosci maja charakter tylko<br />

do odczytu i nie mo ga byc modyfikowane.<br />

Przykladowo, wlasciwosc _totalframes<br />

jest taka wartoscia „odgórna”, okreslona<br />

przez liczbe ujec w twoim filmie.<br />

Zakladka Variables palety Debugger<br />

pozwala sledzic tylko zmienne<br />

zogniskowane na tym samym poziomie.<br />

Gdybys chcial obserwowac zmienne<br />

nalezace do róznych poziomów struktury<br />

filmu, mozesz posluzyc sie zakladka Watch<br />

do wybrania odpowiednich zmiennych.<br />

Dzieki temu mozesz utworzyc sobie liste<br />

krytycznych dla twojego filmu zmiennych<br />

i zgrupowac je w jednym miejscu,<br />

pozwalajacym na ich obserwacje<br />

i modyfikacje. Zmienne w zakladce Watch<br />

sa wyswietlane wraz z ich bezwzglednymi<br />

sciezkami dostepu, napisanymi w skladni<br />

z ukosnikiem.<br />

W celu dodania zmiennych<br />

do zakladki Watch:<br />

1. Na palecie Debugger zaznacz w oknie<br />

wyswietlania glówna listwe czasowa lub<br />

klip filmowy.<br />

2. Zaznacz zmienna sposród wymienionych<br />

w zakladce Variables. Z menu rozwijanego<br />

opcji palety w jej prawym górnym rogu<br />

wybierz Add Watch (rys. 12.47).<br />

Obok wybranej zmiennej pojawi sie<br />

niebieska kropka, wskazujac, ze zostala ona<br />

wybrana do wyswietlania jej w zakladce<br />

Watch.<br />

lub<br />

1. Zaznacz zmienna w zakladce Variables.<br />

Kliknij ja prawym klawiszem myszy.<br />

Z menu podrecznego wybierz Watch<br />

(rys. 12.48).<br />

Obok wybranej zmiennej pojawi sie<br />

niebieska kropka, wskazujac, ze zostala ona<br />

wybrana do wyswietlania jej w zakladce<br />

Watch.<br />

Poslugiwanie sie paleta Debugger<br />

407


Rozdzial 12.<br />

Poslugiwanie sie paleta Debugger<br />

lub<br />

1. Kliknij prawym klawiszem myszy puste<br />

miejsce w zakladce Watch. Z menu<br />

podrecznego wybierz Add (rys. 12.49).<br />

Wprowadz bezwzgledna sciezke dostepu<br />

do zmiennej, poslugujac sie skladnia<br />

z ukosnikiem.<br />

W celu usuniecia zmiennych<br />

z zakladki Watch:<br />

1. W zakladce Watch – kliknij prawym<br />

klawiszem myszy zmienna i wybierz<br />

Remove z pojawiajacego sie menu<br />

podrecznego.<br />

lub<br />

W zakladce Variables – kliknij prawym<br />

klawiszem myszy zmienna i wybierz<br />

polecenie Watch (oznaczone „ptaszkie m”).<br />

lub<br />

W zakladce Variables lub Watch – zaznacz<br />

zmienna, a potem wybierz Remove Watch z<br />

menu rozwijanego opcji w prawym górnym<br />

rogu palety Debugger.<br />

Rys. 12.49. Wybierz Add z menu podrecznego<br />

zakladki Watch w celu wprowadzenia<br />

zmiennej recznie<br />

408


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.50. Dobrze zorganizowane warstwy –<br />

jak te powyzej – sa latwe do ogarniecia<br />

i wprowadzania zmian<br />

Optymalizowanie filmu<br />

Zrozumienie dzialania narzedzi, których<br />

uzywasz do tworzenia, grafiki, animacji,<br />

dzwieku i skryptu jest wazne, jednak nie<br />

mniej istotne jest uswiadomienie sobie, jak<br />

zrobic z nich najlepszy uzytek do<br />

przygotowywania efektywnie dzialajacych<br />

filmów Flasha. Takie filmy wymagaja<br />

optymalizacji, która pozwala na zachowanie<br />

minimalnych rozmiarów pliku, plynnej<br />

animacji i prostych przegladów. Wplyw<br />

na koncowy rozmiar i prace pliku SWF ma<br />

wiele czynników. Bitmapy, dzwieki,<br />

skomplikowane ksztalty, przejscia tonalne,<br />

przezroczystosci i osadzone fonty –<br />

wszystkie te elementy zwiekszaja rozmiar<br />

pliku i pogarszaja jego wydajnosc. Tylko ty<br />

mozesz wywazyc jakosc z iloscia i rozmiar<br />

z wydajnoscia. Pamietaj o odbiorcach<br />

twoich filmów – czy maja polaczenie<br />

z Internetem za posrednictwem linii T1,<br />

czy tez moze korzystaja z modemów 28,8 k?<br />

Znajomosc odpowiedzi na to pytanie<br />

pomoze ci wybrac najwlasciwsza zawartosc<br />

dla twojego filmu i efektywnie<br />

skonstruowac calosc.<br />

Nizej przedstawione strategie z pewnoscia<br />

pomoga ci w opracowywaniu mniejszych,<br />

latwiejszych w zarzadzaniu i wydajniejszych<br />

filmów Flasha.<br />

W celu optymalizacji<br />

twojego srodowiska autorskiego:<br />

1. Uzywaj warstw do oddzielania<br />

i organizowania zawartosci filmu. Umiesc,<br />

na przyklad, wszystkie akcje na jednej<br />

warstwie, wszystkie etykiety ujec na drugiej,<br />

dzwieki na trzeciej. Dzieki temu latwiej ci<br />

bedzie szybko oceniac i zmieniac rózne<br />

elementy twojego filmu (rys. 12.50).<br />

lub<br />

Uzywaj jednolitego nazewnictwa<br />

w przypadku zmiennych, klipów filmowych,<br />

obiektów i innych elementów, które musza<br />

byc zidentyfikowane.<br />

Optymalizowanie filmu<br />

409


Rozdzial 12.<br />

Optymalizowanie filmu<br />

Unikaj zbednej interpunkcji w nazwach.<br />

Jednolite i proste nazwy sprawiaja, ze<br />

funkcje poszczególnych zmiennych staja<br />

sie bardziej oczywiste.<br />

lub<br />

Dolaczaj do swoich skryptów komentarze,<br />

wyjasniajace znaczenie poszczególnych<br />

fragmentów kodu, zarówno tobie, jak<br />

i innym programistom, którzy moga<br />

w przyszlosci wprowadzac jakies poprawki.<br />

Komentarz mozesz równiez dolaczac do ujec<br />

kluczowych, w celu objasnienia róznych<br />

partii listwy czasowej.<br />

lub<br />

Korzystaj z bloków dynamicznego tekstu<br />

jako dodatku do okna Output i palety<br />

Debugger w czasie obserwacji zmiennych<br />

obecnych w twoim filmie. Bloki<br />

dynamicznego tekstu umozliwiaja<br />

wyswietlanie zmiennych i wyrazen<br />

w kontekscie twojego filmu.<br />

lub<br />

Unikaj stosowania wielu scen w swoich<br />

filmach. Chociaz stanowia one dobry<br />

element organizacyjny w przypadku<br />

prostych filmów, listwy czasowe<br />

zawierajace sceny sa trudniejsze w nawigacji<br />

od klipów filmowych. Ponadto klony klipów<br />

filmowych nie zachowuja ciaglosci<br />

pomiedzy scenami. Korzystaj raczej<br />

z etykiet do oznaczania róznych obszarów<br />

listwy czasowej.<br />

W celu optymalizacji bitmap<br />

i dzwieków dla poprawienia wydajnosci<br />

odtwarzania :<br />

1. Unikaj animowania duzych bitmap. Uzywaj<br />

takich obrazów raczej jako statycznego tla,<br />

ewentualnie zmniejszaj ich rozmiary, jesli<br />

musza byc animowane.<br />

lub<br />

Dzwieki strumieniowe umieszczaj raczej<br />

na listwie czasowej, niz wewnatrz klipu<br />

filmowego.<br />

410


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Rys. 12.51. Jakosc JPEG (JPEG Quality) oraz<br />

opcje kompresji audio (Audio Stream, Audio<br />

Event) dostepne w oknie dialogowym Publish<br />

Settings<br />

Przed odtworzeniem klip filmowy musi<br />

zostac wczytany w calosci. Natomiast<br />

dzwiek strumieniowy na listwie czasowej<br />

bedzie odtwarzany juz w momencie<br />

wczytywania filmu.<br />

lub<br />

Uzywaj maksymalnego dopuszczalnego<br />

stopnia kompresji dla bitmap i dzwieków.<br />

Poziom jakosci zapisu JPEG dla<br />

eksportowanych plików SWF mozesz<br />

ustawic w oknie Publish Settings. Mozliwe<br />

jest takze ustawienie stopnia kompresji<br />

oddzielnie dla dzwieków strumieniowych<br />

i zdarzen dzwiekowych, dzieki czemu<br />

mozesz zachowac wyzsza jakosc dzwieku<br />

dla narracji i muzyki – kosztem nizszej<br />

jakosci w przypadku zdarzen dzwiekowych<br />

towarzyszacych klikaniu przycisków<br />

(rys. 12.51).<br />

lub<br />

Unikaj uzywania polecenia Trace Bitmap<br />

do tworzenia obrazów wektorowych<br />

stanowiacych dokladne odwzorowanie<br />

importowanych bitmap. Zlozonosc<br />

zwektoryzowanej bitmapy moze bardziej<br />

zwiekszyc rozmiar pliku i zmniejszyc<br />

wydajnosc, niz dzieje sie to w przypadku<br />

uzywania samej zaimportowanej bitmapy.<br />

lub<br />

Importuj bitmapy i dzwieki w rozmiarach<br />

dokladnie odpowiadajacych tym, jakich<br />

planujesz uzyc we Flashu. Chociaz edycja<br />

we Flashu jest mozliwa, lepiej jest<br />

importowac tylko te informacje, których<br />

potrzebujesz i dzieki temu zaoszczedzic na<br />

wielkosci pliku. Przykladowo, nie importuj<br />

bitmapy, która we Flashu bedziesz musial<br />

zmniejszyc o 50 procent. Lepiej najpierw ja<br />

zmniejsz, a dopiero potem zaimportuj do<br />

Flasha.<br />

Optymalizowanie filmu<br />

411


Rozdzial 12.<br />

Optymalizowanie filmu<br />

W celu optymalizacji grafiki, tekstu<br />

i sekwencji animowanych<br />

dla poprawienia<br />

wydajnosci odtwarzania:<br />

1. Gdzie tylko mozesz, uzywaj automatycznie<br />

tworzonej animacji w miejsce animacji<br />

klatka po klatce. W przypadku<br />

automatycznych sekwencji animacji Flash<br />

musi pamietac jedynie ujecia kluczowe, co<br />

pozwala rzadziej odwolywac sie do pamieci.<br />

lub<br />

Animuj pojedyncze symbole zamiast grup.<br />

W przypadku animacji grup, musza byc one<br />

wczytywane w calosci, podczas gdy<br />

symbole moga byc ladowane pojedynczo.<br />

Ponadto grupy nie pozwalaja na uzywanie<br />

efektów klonów, np. tinty, jasnosci czy<br />

przezroczystosci. Uzywanie w animacjach<br />

grup utrudnia edycje, jako ze musisz<br />

dokonywac tej samej edycji z osobna na<br />

kazdej grupie, która wchodzi w sklad ujec<br />

kluczowych animacji.<br />

lub<br />

Unikaj tworzenia animacji, w których<br />

pojawia sie wiele obiektów poruszajacych<br />

sie w tym samym czasie, ewentualnie tych,<br />

które maja duze obszary zmian. Obydwie<br />

sytuacje spowalniaja proces odtwarzania<br />

filmu.<br />

lub<br />

Rozdzielaj grupy w obrebie symboli w celu<br />

ich uproszczenia. Kiedy juz bedziesz<br />

usatysfakcjonowany ilustracja w symbolu,<br />

rozdziel grupy na ksztalty w celu jej<br />

„splaszczenia”. Flash bedzie mial do<br />

zapamietania mniej krzywych i tym samym<br />

szybciej dokona animacji klonu symbolu.<br />

Takze efekty przezroczystosci klonu beda<br />

wtedy oddzialywac na caly symbol, a nie<br />

na indywidualne grupy w jego obrebie<br />

(rys. 12.52).<br />

Rys. 12.52. Symbol zdefiniowany z uzyciem<br />

oddzielnych grup (u góry z lewej) zawiera<br />

wiecej informacji (u góry w srodku) i moze<br />

prowadzic do powstawania niepozadanych<br />

efektów przezroczystosci (u góry z prawej).<br />

Symbol zdefiniowany jako ksztalt (u dolu<br />

z lewej) zawiera mniej informacji (u dolu<br />

w srodku) i stanie sie przezroczysty jako<br />

pojedyncza jednostka (u dolu z prawej)<br />

lub<br />

Z przejsc tonalnych kolorów<br />

i przezroczystosci staraj sie korzystac<br />

mozliwie najrzadziej.<br />

lub<br />

Korzystaj z palety Effect do zmiany<br />

koloru tinty i jasnosci klonów – w miejsce<br />

tworzenia oddzielnych symboli róznych<br />

kolorów.<br />

lub<br />

Optymalizuj krzywe, unikajac stosowania<br />

specjalnych stylów linii (np. linii<br />

kropkowanej) i uzywajac raczej narzedzia<br />

Pencil, niz Brush. Staraj sie tez<br />

redukowac zlozonosc krzywych za<br />

pomoca polecenia Modify/Optimize<br />

(Ctrl+Alt+Shift+C).<br />

lub<br />

Korzystaj z niewielu fontów i dolaczaj<br />

do plików tylko niezbedne czcionki.<br />

412


Zarzadzanie zawartoscia i rozwiazywanie problemów<br />

Unikanie<br />

najczestszych bledów<br />

Kiedy bedziesz staral sie rozwiazac problemy<br />

zwiazane z funkcjonowaniem twojego filmu<br />

Flasha, wiedz, ze istnieja pewne oczywiste<br />

miejsca, od których powinienes rozpoczac<br />

poszukiwania zródla zamieszania. Bledy takie<br />

polegaja zazwyczaj na pomijaniu cudzyslowów,<br />

wzglednych sciezek dostepu czy nazw klonów.<br />

Zwróc szczególna uwage na ponizsza liste<br />

bledów, zeby uniknac podobnych sytuacji we<br />

wlasnych projektach Flasha.<br />

W celu<br />

unikniecia najczestszych bledów:<br />

1. Sprawdzaj nawet dwukrotnie typ danych<br />

przedstawianych przez rózne wartosci.<br />

Przegladaj okno skryptu, aby upewnic sie,<br />

ze wpisales znaki cudzyslowu tylko wokól<br />

lancuchów znakowych. Slowo kluczowe<br />

this nie powinno byc otaczane<br />

cudzyslowem. Sciezki dostepu do klipów<br />

filmowych moga byc brane w cudzyslów<br />

jednak lepiej uzywac ich jako wyrazen.<br />

lub<br />

Sprawdzaj dwukrotnie sciezki dostepu do<br />

klipów filmowych, zmiennych i obiektów.<br />

lub<br />

Pamietaj o nadawaniu nazw klonom klipów<br />

filmowych.<br />

lub<br />

Sprawdzaj, czy wyrazenia ActionScript<br />

zawieraja wlasciwie rozmieszczone nawiasy<br />

i klamry. Przykladowo, wyrazenia nalezace<br />

do instrukcji if lub onClipEvent powinny<br />

znajdowac sie miedzy klamrami.<br />

lub<br />

Sprawdzaj, czy dla klonów przycisków lub<br />

klipów filmowych zostaly wybrane<br />

wlasciwe zdarzenia (zdarzenie myszy czy<br />

zdarzenia klipu filmowego).<br />

Unikanie najczestszych bledów<br />

413


Rozdzial 12.<br />

Unikanie najczestszych bledów<br />

lub<br />

Umieszczaj akcje stop w pierwszym<br />

ujeciu kluczowym klipu filmowego, zeby<br />

zabezpieczyc go przed automatycznym<br />

odtwarzaniem i zapetleniem.<br />

lub<br />

Upewniaj sie, ze symbol przycisku zawiera<br />

zdefiniowany obszar aktywny.<br />

lub<br />

W celu sprawdzania prostych akcji<br />

i przyciskó w – pamietaj o wybraniu polecen<br />

Enable Simple Frame Actions oraz Enable<br />

Simple Buttons z menu Control.<br />

lub<br />

Pamietaj, ze domyslnym ustawieniem dla<br />

twojego filmu Flasha w trybie testowym jest<br />

odtwarzanie w petli.<br />

Wskazówka<br />

• Dodatkowa pomoc i rady dotyczace<br />

usuwania bledów z filmu znajdziesz<br />

w rozleglych zasobach Internetu,<br />

poswieconych Flashowi. Poszukiwania<br />

rozpocznij od okna Macromedia<br />

Dashboard, które stanowi polaczenie<br />

z witryna sieciowa firmy Macromedia –<br />

znajdziesz tam archiwum porad<br />

technicznych i ekranowe wersje instrukcji<br />

uzytkowania programu oraz slownik<br />

ActionScript (rys. 12.53). Sa tam równiez<br />

odnosniki do witryn z samouczkami Flasha,<br />

artykulami, plikami zródlowymi FLA,<br />

biuletynami i listami dyskusyjnymi.<br />

Sprawdz równiez dolaczony do ksiazki<br />

CD-ROM, na którym znajdziesz informacje<br />

o kolejnych laczach i zródlach.<br />

Rys. 12.53. Dostep do palety Macromedia<br />

Dashboard uzyskasz w menu Help. Zajrzyj<br />

tam w poszukiwaniu najswiezszych wiesci,<br />

porad i samouczków<br />

414


Dodatki<br />

415


Dodatek A<br />

416


Podsumowanie metod obiektów i<br />

wlasciwosci<br />

A<br />

Czesci skladowe jezyka HTML<br />

Ponizsze tabele zawieraja posumowanie predefiniowanych obiektów Flasha, omówionych<br />

w ksiazce, wraz z ich metodami i wlasciwosciami. Nazwy parametrów zapisano czcionka pochyla.<br />

Obiekt tablicowy (Array)<br />

Metoda Opis Argumenty<br />

new Array(length) Tworzy nowy obiekt tablicowy.<br />

concat(array1,...,<br />

arrayN)<br />

join(separator)<br />

pop()<br />

push(value)<br />

reverse()<br />

shift()<br />

slice(indexA,<br />

indexB)<br />

Wiaze wskazane wartosci i zwraca nowa<br />

tablice.<br />

Wiaze elementy w tablicy, wstawia<br />

pomiedzy elementy separator i zwraca<br />

lancuch znakowy.<br />

Usuwa ostatni element w tablicy i zwraca<br />

wartosc tego elementu.<br />

Dodaje elementy do konca tablicy i zwraca<br />

nowa dlugosc.<br />

Odwraca kolejnosc elementów w tablicy.<br />

Usuwa pierwszy element w tablicy<br />

i zwraca wartosc tego elementu.<br />

Zwraca nowa tablice zaczynajaca sie od<br />

indexA i konczaca sie na (indexB-1).<br />

sort() Sortuje tablice, uzywajac operatora 0 w celu<br />

usuniecia danej liczby elementów,<br />

zaczynajac od indeksu (i lacznie z tym<br />

indeksem).<br />

length, opcjonalny argument<br />

dlugosci tablicy<br />

array1,...,arrayN, elementy<br />

wiazane w nowej tablicy<br />

separator, znak lub lancuch<br />

znakowy<br />

value, elementy dodawane<br />

do tablicy<br />

indexA, element poczatkowy<br />

(dolaczony)<br />

indexB, element koncowy<br />

(niedolaczony)<br />

index, poczatek wstawiania<br />

lub usuwania<br />

count, liczba elementów<br />

do usuniecia<br />

elem1,...,elemN, elementy<br />

do wstawienia<br />

Metody obiektów i wlasciwosci<br />

417


Dodatek A<br />

Obiekt tablicowy (Array)<br />

Metoda Opis Argumenty<br />

toString()<br />

unshift(value)<br />

Wlasciwosc<br />

length<br />

Zwraca lancuch znakowy z kazdym<br />

elementem powiazanym i oddzielonym<br />

przecinkiem.<br />

Dodaje elementy do poczatku tablicy<br />

i zwraca nowa dlugosc.<br />

Opis<br />

Liczba wpisów w tablicy.<br />

value, elementy dodawane<br />

do tablicy<br />

Obiekt koloru (Color)<br />

Metoda Opis Argumenty<br />

Metody obiektów i wlasciwosci<br />

new Color(target) Tworzy nowy obiekt koloru.<br />

getRGB()<br />

getTransform()<br />

Zwraca numeryczna wartosc koloru klipu<br />

filmowego, przypisana przez getRGB.<br />

Zwraca informacje o transformacji<br />

kolorów klipu filmowego, przypisanej<br />

przez setTransform.<br />

setRGB(0xRRGGBB) Ustawia kolor obiektu koloru.<br />

setTransform(cxfor<br />

m)<br />

Obiekt daty<br />

Przeksztalca kolor i przezroczystosc<br />

obiektu koloru.<br />

(Uwaga: czas UTC jest tozsamy z czasem GMT)<br />

target, sciezka dostepu do klipu<br />

filmowego<br />

0xRRGGBB, wartosci skladowych:<br />

czerwonej, zielonej, niebieskiej<br />

cxform, obiekt przechowujacy<br />

parametry transformacji koloru ra,<br />

rb, ga, gb, ba, bb, aa i ab<br />

Metoda Opis Argumenty<br />

new Date(year,<br />

month, date, hour,<br />

min, sec, ms)<br />

getDate()<br />

getDay()<br />

Tworzy nowy obiekt daty.<br />

Zwraca dzien miesiaca, w postaci liczby<br />

z zakresu 1 do 31.<br />

Zwraca dzien tygodnia, w postaci liczby<br />

z zakresu 0 (niedziela) do 6 (sobota).<br />

year, month, date,<br />

hour, min, sec, ms,<br />

opcjonalne argumenty okreslajace<br />

specyficzna date (kolejno: rok,<br />

miesiac, dzien, godzina, minuta,<br />

sekunda, milisekunda)<br />

418


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt daty<br />

(Uwaga: czas UTC jest tozsamy z czasem GMT)<br />

Metoda Opis Argumenty<br />

getFullYear() Zwraca rok, w postaci czterocyfrowej<br />

liczby.<br />

getHours()<br />

Zwraca godzine w ciagu dnia, w postaci<br />

liczby z zakresu 0 do 23.<br />

getMiliseconds() Zawraca milisekundy, w postaci liczby<br />

z zakresu 0 do 999.<br />

getMinutes()<br />

Zwraca minuty, w postaci liczby<br />

z zakresu 0 do 59.<br />

getMonth()<br />

Zwraca miesiac, w postaci liczby<br />

z zakresu 0 (styczen) do 11 (grudzien).<br />

getSeconds()<br />

Zwraca sekundy, w postaci liczby<br />

z zakresu 0 do 59.<br />

getTime()<br />

Zwraca liczbe milisekund, które uplynely<br />

od pólnocy 1 stycznia 1970, czasu UTC.<br />

getTimezoneOffset() Zwraca róznice pomiedzy czasem<br />

lokalnym i czasem UTC w minutach.<br />

getUTCdate()<br />

Zwraca dzien miesiaca, w postaci liczby<br />

z zakresu 1 do 31, UTC.<br />

getUTCday()<br />

Zwraca dzien tygodnia, w postaci liczby<br />

z zakresu 0 (niedziela) do 6 (sobota),<br />

UTC.<br />

getUTCFullYear() Zwraca rok, w postaci czterocyfrowej<br />

liczby, UTC.<br />

getUTCHours() Zwraca godzine w ciagu dnia, w postaci<br />

liczby z zakresu 0 do 23, UTC.<br />

getUTCMiliseconds() Zawraca milisekundy, w postaci liczby<br />

z zakresu 0 do 999, UTC.<br />

getUTCMinutes() Zwraca minuty, w postaci liczby<br />

z zakresu 0 do 59, UTC.<br />

getUTCMonth() Zwraca miesiac, w postaci liczby<br />

z zakresu 0 (styczen) do 11 (grudzien),<br />

UTC.<br />

getUTCSeconds() Zwraca sekundy, w postaci liczby<br />

z zakresu 0 do 59, UTC.<br />

getYear()<br />

Zwraca rok, obliczony na podstawie<br />

wzoru: biezacy rok minus 1900.<br />

setDate(date) Ustawia dzien miesiaca. date, liczba calkowita z zakresu 1<br />

do 31<br />

Metody obiektów i wlasciwosci<br />

419


Dodatek A<br />

Obiekt daty<br />

(Uwaga: czas UTC jest tozsamy z czasem GMT)<br />

Metoda Opis Argumenty<br />

setFullYear(year,<br />

month, date)<br />

setHours(hours,<br />

minutes, seconds,<br />

ms)<br />

Ustawia rok, miesiac i dzien.<br />

Ustawia godzine, minute, sekunde<br />

i milisekunde.<br />

year, liczba calkowita<br />

czterocyfrowa<br />

month, opcjonalna liczba<br />

calkowita z zakresu 0 do 11<br />

date, opcjonalna liczba calkowita<br />

z zakresu 1 do 31<br />

hours, liczba calkowita z zakresu<br />

0 do 59<br />

minutes, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

seconds, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

Metody obiektów i wlasciwosci<br />

setMiliseconds(ms) Ustawia milisekunde.<br />

setMinutes(minutes,<br />

seconds, ms)<br />

setMonth(month,<br />

date)<br />

setSeconds(seconds,<br />

ms)<br />

Ustawia minute, sekunde i milisekunde.<br />

Ustawia miesiac i dzien.<br />

Ustawia sekundy i milisekundy.<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

ms, liczba calkowita z zakresu<br />

0 do 999<br />

minutes, liczba calkowita<br />

z zakresu 0 do 59<br />

seconds, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

month, liczba calkowita z zakresu<br />

0 do 11<br />

date, opcjonalna liczba calkowita<br />

z zakresu 1 do 31<br />

seconds, liczba calkowita<br />

z zakresu 0 do 59<br />

setTime(value)<br />

Ustawia liczbe milisekund, które<br />

uplynely od pólnocy 1 stycznia 1970,<br />

czasu UTC.<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

value, liczba calkowita<br />

reprezentujaca czas, który uplynal<br />

setUTCDate(date) Ustawia dzien miesiaca, UTC. date, liczba calkowita z zakresu<br />

1 do 31<br />

420


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt daty<br />

(Uwaga: czas UTC jest tozsamy z czasem GMT)<br />

Metoda Opis Argumenty<br />

setUTCFullYear(year<br />

, month, date)<br />

setUTCHours(hours,<br />

minutes, seconds,<br />

ms)<br />

setUTCMiliseconds<br />

(ms)<br />

setUTCMinutes(minut<br />

es, seconds, ms)<br />

setUTCMonth(month,<br />

date)<br />

setUTCSeconds(secon<br />

ds, ms)<br />

setYear(year,<br />

month, date)<br />

toString()<br />

Ustawia rok, miesiac i dzien, UTC.<br />

Ustawia godzine, minute, sekunde<br />

i milisekunde, UTC.<br />

Ustawia milisekunde, UTC.<br />

Ustawia minute, sekunde i milisekunde,<br />

UTC.<br />

Ustawia miesiac i dzien, UTC.<br />

Ustawia sekundy i milisekundy, UTC.<br />

Ustawia rok, liczba czterocyfrowa.<br />

Zwraca lancuch znakowy wartosci<br />

obiektu daty.<br />

year, liczba calkowita<br />

czterocyfrowa<br />

month, opcjonalna liczba<br />

calkowita z zakresu 0 do11<br />

date, opcjonalna liczba calkowita<br />

z zakresu 1 do31<br />

hours, liczba calkowita z zakresu<br />

0 do59<br />

minutes, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

seconds, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

ms, liczba calkowita z zakresu<br />

0 do 999<br />

minutes, liczba calkowita<br />

z zakresu 0 do 59<br />

seconds, opcjonalna liczba<br />

calkowita z zakresu 0 do 59<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

month, liczba calkowita z zakresu<br />

0 do 11<br />

date, opcjonalna liczba calkowita<br />

z zakresu 1 do 31<br />

seconds, liczba calkowita<br />

z zakresu 0 do 59<br />

ms, opcjonalna liczba calkowita<br />

z zakresu 0 do 999<br />

year, liczba calkowita<br />

czterocyfrowa<br />

month, opcjonalna liczba<br />

calkowita z zakresu 0 do11<br />

date, opcjonalna liczba calkowita<br />

z zakresu 1 do31<br />

Metody obiektów i wlasciwosci<br />

421


Dodatek A<br />

Obiekt Key<br />

Metoda Opis Argumenty<br />

getAscii()<br />

getCode()<br />

isDown(keycode)<br />

Zwraca wartosc ASCII ostatnio<br />

nacisnietego klawisza.<br />

Zwraca kod ostatnio nacisnietego<br />

klawisza.<br />

Zwraca prawde, jesli nacisnieto<br />

odpowiedni klawisz.<br />

keycode, kod numeryczny<br />

przypisany do kazdego klawisza<br />

isToggled(keycode) Zwraca prawde, jesli wcisnieto klawisze<br />

Caps Lock lub Num Lock.<br />

keycode, kod numeryczny<br />

przypisany do kazdego klawisza<br />

Metody obiektów i wlasciwosci<br />

Wlasciwosc<br />

BACKSPACE<br />

CAPSLOCK<br />

CONTROL<br />

DELETEKEY<br />

DOWN<br />

END<br />

ENTER<br />

ESCAPE<br />

HOME<br />

INSERT<br />

LEFT<br />

PGDN<br />

PGUP<br />

RIGHT<br />

SHIFT<br />

SPACE<br />

TAB<br />

UP<br />

Opis<br />

Kod klawisza Backspace.<br />

Kod klawisza Caps Lock.<br />

Kod klawisza Ctrl.<br />

Kod klawisza Delete.<br />

Kod klawisza „strzalka w dól”.<br />

Kod klawisza End.<br />

Kod klawisza Enter.<br />

Kod klawisza Esc.<br />

Kod klawisza Home.<br />

Kod klawisza Insert.<br />

Kod klawisza „strzalka w lewo”.<br />

Kod klawisza Page Down.<br />

Kod klawisza Page Up.<br />

Kod klawisza „strzalka w prawo”.<br />

Kod klawisza Shift.<br />

Kod klawisza spacji.<br />

Kod klawisza Tab.<br />

Kod klawisza „strzalka w góre”.<br />

Obiekt matematyczny (Math)<br />

Metoda Opis Argumenty<br />

abs(number) Oblicza wartosc bezwzgledna. number, dowolna liczba lub<br />

wyrazenie<br />

acos(number) Oblicza wartosc cosinusa luku. number, liczba od –1 do 1<br />

asin(number) Oblicza wartosc sinusa luku. number, liczba od –1 do 1<br />

422


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt matematyczny (Math)<br />

Metoda Opis Argumenty<br />

atan(number) Oblicza wartosc tangensa luku. number, liczba<br />

atan2(y, x) Oblicza wartosc tangensa luku. y, wspólrzedna y punktu<br />

ceil(number)<br />

cos(number)<br />

exp(number)<br />

floor(number)<br />

Zaokragla liczbe w góre do najblizszej<br />

liczby calkowitej.<br />

Oblicza wartosc cosinusa kata<br />

w radianach.<br />

Oblicza wartosc wykladnika potegi stalej<br />

Eulera (e).<br />

Zaokragla liczbe w dól do najblizszej<br />

liczby calkowitej.<br />

x, wspólrzedna x punktu<br />

number, dowolna liczba lub<br />

wyrazenie<br />

number, kat w radianach<br />

number, wykladnik potegi<br />

number, dowolna liczba lub<br />

wyrazenie<br />

log(number) Oblicza wartosc logarytmu naturalnego. number, dowolna liczba lub<br />

wyrazenie<br />

max(x, y)<br />

Zwraca wieksza z dwóch<br />

porównywanych wart osci.<br />

x, dowolna liczba lub wyrazenie<br />

y, dowolna liczba lub wyrazenie<br />

min(x, y)<br />

Zwraca mniejsza z dwóch<br />

porównywanych wartosci.<br />

x, dowolna liczba lub wyrazenie<br />

y, dowolna liczba lub wyrazenie<br />

pow(base, exponent) Oblicza wartosc potegi danej liczby.<br />

random() Zwraca liczbe losowa z zakresu 0 do 1,0.<br />

base, dowolna liczba lub<br />

wyrazenie (podstawa potegi)<br />

exponent, dowolna liczba lub<br />

wyrazenie (wykladnik potegi)<br />

round(number) Zaokragla liczbe do najblizszej wartosci. number, dowolna liczba<br />

lub wyrazenie<br />

sin(number) Oblicza wartosc sinusa kata w radianach. number, kat w radianach<br />

Metody obiektów i wlasciwosci<br />

sqrt(number) Oblicza wartosc kwadratu potegi. number, dowolna liczba<br />

lub wyrazenie<br />

tan(number)<br />

Oblicza wartosc tangensa kata<br />

w radianach.<br />

number, kat w radianach<br />

Wlasciwosc<br />

Opis<br />

E<br />

Stala Eulera; podstawa logarytmów<br />

naturalnych.<br />

LN2 Logarytm naturalny liczby 2.<br />

LOG2E Logarytm Eulera podstawy równej 2.<br />

LN10 Logarytm naturalny liczby 10.<br />

LOG10E Logarytm Eulera podstawy równej 10.<br />

423


Dodatek A<br />

Obiekt matematyczny (Math)<br />

Wlasciwosc<br />

PI<br />

Opis<br />

Obwód kola podzielony przez jego<br />

srednice.<br />

SQRT1_2 Kwadrat potegi liczby ½.<br />

SQRT2 Kwadrat potegi liczby 2.<br />

Metody obiektów i wlasciwosci<br />

Obiekt myszy (Mouse)<br />

Metoda<br />

hide()<br />

show()<br />

Wlasciwosc<br />

_xmouse<br />

_ymouse<br />

Obiekt klipu filmowego (Movie Clip)<br />

Opis<br />

Ukrywa wskaznik.<br />

Odslania wskaznik.<br />

Opis<br />

Wspólrzedna x polozenia wskaznika.<br />

Wspólrzedna y polozenia wskaznika.<br />

Metoda Opis Argumenty<br />

attachMovie(idName,<br />

newName, depth)<br />

duplicateMovieClip(<br />

newName, depth)<br />

getBounds(targetCoo<br />

dinateSpace)<br />

getBytesLoaded()<br />

Przylacza klip filmowy z biblioteki<br />

do klonu klipu filmowego na scenie.<br />

Tworzy kolejny klon klipu filmowego<br />

obecnego na scenie.<br />

Zwraca minimalne i maksymalne<br />

wartosci wspólrzednych x, y polozenia<br />

klipu filmowego w obrebie przestrzeni<br />

wskazanego obiektu. Obiekt zwracany<br />

posiada wlasciwosci xMin, xMax, yMin<br />

i yMax.<br />

Zwraca ilosc wczytanych danych klipu<br />

filmowego, w bajtach.<br />

idName, identyfikator symbolu<br />

klipu filmowego w bibliotece<br />

newName, nazwa klonu<br />

przylaczonego klipu filmowego<br />

depth, poziom glebokosci<br />

(kolejnosc ulozenia w stosie)<br />

newName, nazwa klonu<br />

przylaczonego klipu filmowego<br />

depth, poziom glebokosci<br />

(kolejnosc ulozenia w stosie)<br />

targetCoordinateSpace,<br />

listwa czasowa, której<br />

wspólrzedne przestrzeni sluza<br />

jako odnosnik<br />

424


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt klipu filmowego (Movie Clip)<br />

Metoda Opis Argumenty<br />

getBytesTotal()<br />

globaltoLocal(point<br />

)<br />

Zwraca calkowita wielkosc klipu<br />

filmowego, w bajtach.<br />

Konwertuje wspólrzedne globalne<br />

polozenia punktu na wspólrzedne<br />

wzgledne wobec klipu filmowego.<br />

point, obiekt<br />

o wspólrzednych x, y<br />

gotoAndPlay(frame) Przeskakuje do podanej klatki<br />

i rozpoczyna odtwarzanie.<br />

gotoAndStop(frame) Przeskakuje do podanej klatki<br />

i zatrzymuje odtwarzanie.<br />

hitTest(x, y,<br />

shapeFlag)<br />

Zwraca prawde, jesli wspólrzedne x, y<br />

przecinaja klip filmowy.<br />

frame, numer klatki lub etykieta<br />

frame, numer klatki lub etykieta<br />

x, wspólrzedna x<br />

y, wspólrzedna y<br />

hitTest(target)<br />

loadMovie(URL,<br />

method)<br />

loadVariables(URL,<br />

method)<br />

Zwraca prawde, jesli wskazany klip<br />

filmowy przecina inny klip filmowy.<br />

Wczytuje zewnetrzny plik SWF do klipu<br />

filmowego.<br />

Wczytuje do klipu filmowego<br />

zewnetrzne zmienne, przechowywane<br />

w pliku tekstowym.<br />

shapeflag, parametr o wartosci<br />

prawda lub falsz, okreslajacy, czy<br />

wspólrzedne przecinaja ksztalt<br />

klipu filmowego (prawda), czy<br />

jego obramowanie (falsz)<br />

target, klon przecinanego klipu<br />

filmowego<br />

URL, sciezka dostepu do<br />

zewnetrznego pliku SWF<br />

method, opcjonalny argument,<br />

okreslajacy metode CGI GET<br />

lub POST<br />

URL, sciezka dostepu do<br />

zewnetrznego pliku SWF<br />

method, opcjonalny argument,<br />

okreslajacy metode CGI GET<br />

lub POST<br />

Metody obiektów i wlasciwosci<br />

localtoGlobal<br />

(point)<br />

Konwertuje wspólrzedne polozenia<br />

punktu z wartosci wzglednych wobec<br />

klipu filmowego na wartosci wzgledne<br />

wobec sceny.<br />

point, obiekt<br />

o wspólrzednych x, y<br />

nextFrame()<br />

Przeskakuje do nastepnej klatki<br />

i zatrzymuje odtwarzanie.<br />

play()<br />

Rozpoczyna odtwarzanie ujec z listwy<br />

czasowej klipu filmowego od biezacej<br />

pozycji.<br />

prevFrame()<br />

Przeskakuje do poprzedniej klatki<br />

i zatrzymuje odtwarzanie.<br />

425


Dodatek A<br />

Metody obiektów i wlasciwosci<br />

Obiekt klipu filmowego (Movie Clip)<br />

Metoda Opis Argumenty<br />

removeMovieClip() Usuwa klon klipu filmowego utworzony<br />

z uzyciem metody<br />

duplicateMovieClip<br />

lub attachMovie.<br />

startDrag(lockCente<br />

r, left, top,<br />

right, bottom)<br />

stop()<br />

stopDrag()<br />

Sprawia, ze klip filmowy podaza<br />

za wskaznikiem myszy.<br />

Zatrzymuje odtwarzanie.<br />

Sprawia, ze klip filmowy przestaje<br />

podazac za wskaznikiem myszy.<br />

swapDepths(depth) Zamienia pozycje w stosie klipów<br />

filmowych.<br />

swapDepths(target) Zamienia pozycje w stosie klipów<br />

filmowych.<br />

unloadMovie() Usuwa wczytany do klonu klipu<br />

filmowego plik SWF lub klip filmowy<br />

przylaczony do innego klipu za pomoca<br />

metody attachMovie.<br />

Wlasciwosc<br />

_alpha<br />

_currentframe<br />

_droptarget<br />

_framesloaded<br />

_height<br />

_name<br />

_rotation<br />

Opis<br />

Okresla przezroczystosc, gdzie 0 oznacza<br />

—calkowicie przezroczysty, a 100 –<br />

kryjacy.<br />

Biezaca klatka (tylko do odczytu).<br />

Sciezka dostepu do pliku, na który<br />

upuszczany jest przeciagany klip<br />

filmowy (skladnia z ukosnikiem, tylko<br />

do odczytu).<br />

Liczba klatek wczytanych do komputera<br />

odbiorcy (tylko do odczytu).<br />

Okresla rozmiar w pionie (w pikselach).<br />

Okresla nazwe nowego klonu klipu<br />

filmowego.<br />

Okresla stopien obrotu zgodnie z ruchem<br />

wskazówek zegara.<br />

lockCenter, parametr prawda<br />

lub falsz, okreslajacy, czy punkt<br />

srodkowy klipu filmowego jest<br />

przyciagany do wskaznika myszy<br />

left, top, right, bottom,<br />

wartosci ograniczajace polozenie<br />

klipu filmowego<br />

depth, poziom glebokosci, na<br />

którym znajduje sie klip filmowy<br />

przeznaczony do zmiany<br />

kolejnosci ulozenia<br />

target, klip filmowy, którego<br />

pozycja w stosie jest zmieniana<br />

426


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt klipu filmowego (Movie Clip)<br />

Wlasciwosc<br />

_target<br />

_totalframes<br />

_url<br />

_visible<br />

_width<br />

_x<br />

_xscale<br />

_y<br />

_yscale<br />

Obiekt selekcji (Selection)<br />

Opis<br />

Sciezka dostepu do klonu klipu<br />

filmowego (tylko do odczytu).<br />

Calkowita liczba klatek symbolu klipu<br />

filmowego (tylko do odczytu).<br />

Sciezka do pliku SWF wczytanego<br />

do symbolu klipu filmowego (tylko<br />

do odczytu).<br />

Okresla widzialnosc klipu filmowego<br />

(prawda lub falsz).<br />

Okresla rozmiar w poziomie<br />

(w pikselach).<br />

Okresla pozycje w poziomie punktu<br />

poczatkowego klipu filmowego.<br />

Okresla procent rozmiaru w poziomie<br />

oryginalnego symbolu klipu filmowego.<br />

Okresla pozycje w pionie punktu<br />

poczatkowego klipu filmowego.<br />

Okresla procent rozmiaru w pionie<br />

oryginalnego symbolu klipu filmowego.<br />

Metoda Opis Argumenty<br />

getBeginIndex() Odczytuje indeks poczatku selekcji.<br />

getCaretIndex() Odczytuje indeks pozycji kursora.<br />

getEndIndex() Odczytuje indeks konca selekcji.<br />

getFocus<br />

Odczytuje nazwe zmiennej aktywnego<br />

w danym momencie bloku tekstowego.<br />

setFocus(variableNa<br />

me)<br />

setSelection(beginI<br />

ndex, endIndex)<br />

Ustawia ogniskowanie bloku tekstowego<br />

o podanej nazwie zmiennej, dzieki czemu<br />

mozna odczytywac informacje o tekscie<br />

zawartym w danym bloku tekstowym,<br />

jesli istnieje kilka bloków tekstowych.<br />

Ustawia selekcje wedlug okreslonych<br />

indeksów poczatku oraz konca.<br />

variableName, nazwa bloku<br />

tekstowego<br />

beginIndex, indeks poczatku<br />

zaznaczenia<br />

endIndex, indeks konca<br />

zaznaczenia<br />

Metody obiektów i wlasciwosci<br />

427


Dodatek A<br />

Obiekt dzwiekowy (Sound)<br />

Metoda Opis Argumenty<br />

Metody obiektów i wlasciwosci<br />

new Sound (target) Tworzy nowy obiekt dzwiekowy. target, sciezka dostepu do klipu<br />

filmowego<br />

attachSound(idName) Dolacza plik dzwiekowy z biblioteki<br />

do obiektu dzwiekowego.<br />

getPan()<br />

Zwraca poziom panoramy, ustawiony<br />

przez setPan.<br />

getTransform() Zwraca informacje o przeksztalceniu<br />

dzwieku, wykonanym przez<br />

setTransform.<br />

idName, identyfikator dzwieku<br />

w bibliotece<br />

getVolume()<br />

Zwraca poziom glosnosci przypisany<br />

przez setVolume.<br />

setPan(pan) Ustawia balans kanalów lewy-prawy. pan, liczba od –100 (lewy) do 100<br />

(prawy)<br />

setTransform(sxform) Ustawia sposób rozdzielenia dzwieku<br />

z kanalów lewego i prawego na<br />

poszczególne glosniki.<br />

sxform, obiekt przechowujacy<br />

parametry transformacji dzwieku:<br />

ll, lr, rr i rl<br />

setVolume(volume)<br />

start(secondOffset,<br />

loops)<br />

stop()<br />

Ustawia procentowa wartosc poziomu<br />

glosnosci.<br />

Odtwarza przylaczony dzwiek.<br />

Zatrzymuje odtwarzanie przylaczonego<br />

dzwieku.<br />

volume, liczba od 0 (cisza)<br />

do 100 (glosno)<br />

secondOffset, punkt startowy<br />

dzwieku (w sekundach)<br />

loops, liczba okreslajaca, ile razy<br />

dzwiek bedzie odtwarzany<br />

Obiekt lancucha znakowego (String)<br />

Metoda Opis Argumenty<br />

new String (value)<br />

charAt (index)<br />

charCodeAt (index)<br />

concat<br />

(string1,...,stringN)<br />

Tworzy nowy obiekt lancucha<br />

znakowego.<br />

Zwraca znak znajdujacy sie na pozycji<br />

wskazanej indeksem.<br />

Zwraca kod znaku z pozycji<br />

o wskazanym indeksie.<br />

Wiaze wskazane lancuchy.<br />

value, wartosc obiektu lancucha<br />

znakowego<br />

index, pozycja, na której<br />

znajduje sie znak<br />

index, pozycja, na której<br />

znajduje sie znak<br />

string1,...,stringN, lancuchy<br />

przeznaczone do powiazania<br />

428


Podsumowanie metod obiektów i wlasciwosci<br />

Obiekt lancucha znakowego (String)<br />

Metoda Opis Argumenty<br />

fromCharCode<br />

(num1,...,numN)<br />

indexOf(searchString<br />

, fromIndex)<br />

lastIndexOf(searchSt<br />

ring, fromIndex)<br />

slice (indexA,<br />

indexB)<br />

split (separator,<br />

limit)<br />

substr(start,<br />

length)<br />

substring(indexA,<br />

indexB)<br />

toLowerCase()<br />

toUpperCase()<br />

Zwraca lancuch znakowy utworzony<br />

ze wskazanych elementów.<br />

Przeszukuje lancuch znakowy i zwraca<br />

miejsce wystapienia po raz pierwszy<br />

podlancucha wskazanego parametrem<br />

searchString.<br />

Przeszukuje lancuch znakowy i zwraca<br />

miejsce wystapienia po raz ostatni<br />

podlancucha wskazanego parametrem<br />

searchString.<br />

Zwraca podlancuch umieszczony<br />

pomiedzy wskazanymi indeksami,<br />

lacznie z indexA, lecz bez indexB.<br />

Zwraca tablice dwóch lub wiecej<br />

podlancuchów na podstawie argumentu<br />

separator.<br />

Zwraca lancuch znakowy o podanej<br />

dlugosci, zaczynajacy sie od indeksu<br />

start.<br />

Zwraca lancuch znakowy, którego<br />

pozycje wyznaczaja parametry<br />

indexA i indexB.<br />

Zamienia znaki w lancuchu na pisane<br />

mala litera.<br />

Zamienia znaki w lancuchu na pisane<br />

wielka litera.<br />

num1,...,numN, znaki tworzace<br />

lancuch<br />

searchString, znak lub znaki<br />

fromIndex, indeks startowy<br />

searchString, znak lub znaki<br />

fromIndex, indeks startowy<br />

indexA, punkt poczatkowy<br />

lancucha<br />

indexB, punkt koncowy lancucha<br />

separator, znak oddzielajacy<br />

podlancuchy<br />

limit, maksymalna ilosc<br />

podlancuchów mozliwych<br />

do umieszczenia w tablicy<br />

start, indeks startowy<br />

length, dlugosc podlancucha<br />

indexA, punkt poczatkowy<br />

lancucha<br />

indexB, punkt koncowy lancucha<br />

Metody obiektów i wlasciwosci<br />

429


Dodatek A<br />

430


Kody klawiszy<br />

B<br />

Czesci skladowe jezyka HTML<br />

Litery<br />

Klawisz litery Kod<br />

A 65<br />

B 66<br />

C 67<br />

D 68<br />

E 69<br />

F 70<br />

G 71<br />

H 72<br />

I 73<br />

J 74<br />

K 75<br />

L 76<br />

M 77<br />

N 78<br />

O 79<br />

P 80<br />

Q 81<br />

R 82<br />

S 83<br />

T 84<br />

U 85<br />

V 86<br />

W 87<br />

X 88<br />

Y 89<br />

Z 90<br />

Kody klawiszy<br />

431


Dodatek B<br />

Kody klawiszy<br />

Cyfry i symbole<br />

Cyfry i symbole<br />

Klawisz Kod Wlasciwosc obiektu Key Klawisz Kod Wlasciwosc obiektu Key<br />

0 48 . (w bloku<br />

numerycznym)<br />

1 49 / (w bloku<br />

numerycznym)<br />

2 50 Backspace 8 BACKSPACE<br />

3 51 Tab 9 TAB<br />

4 52 clear 12 ENTER<br />

5 53 Enter 13 SHIFT<br />

6 54 Shift 16 CONTROL<br />

7 55 Ctrl 17<br />

8 56 Alt 18<br />

9 57 Caps Lock 20 CAPSLOCK<br />

0 (w bloku<br />

numerycznym)<br />

1 (w bloku<br />

numerycznym)<br />

2 (w bloku<br />

numerycznym)<br />

3 (w bloku<br />

numerycznym)<br />

4 (w bloku<br />

numerycznym)<br />

5 (w bloku<br />

numerycznym)<br />

6 (w bloku<br />

numerycznym)<br />

7 (w bloku<br />

numerycznym)<br />

8 (w bloku<br />

numerycznym)<br />

9 (w bloku<br />

numerycznym)<br />

* (w bloku<br />

numerycznym)<br />

+ (w bloku<br />

numerycznym)<br />

Enter (w bloku<br />

numerycznym)<br />

- (w bloku<br />

numerycznym)<br />

96 Esc 27 ESCAPE<br />

97 Spacja 32 SPACE<br />

110<br />

111<br />

98 Page Up 33 PGUP<br />

99 Page Down 34 PGDN<br />

100 End 35 END<br />

101 Home 36 HOME<br />

102 Strzalka w<br />

lewo<br />

37 LEFT<br />

103 Strzalka w góre 38 UP<br />

104 Strzalka w<br />

prawo<br />

39 RIGHT<br />

105 Strzalka w dól 40 DOWN<br />

106 Insert 45 INSERT<br />

107 Delete 46 DELETEKEY<br />

108 Help 47<br />

109 Num Lock 144<br />

432


Kody klawiszy<br />

Cyfry i symbole<br />

Klawisz Kod Wlasciwosc obiektu Key<br />

;: 186<br />

=+ 187<br />

-_ 189<br />

/? 191<br />

`~ 192<br />

[{ 219<br />

\| 220<br />

]} 221<br />

‘” 222<br />

Kody klawiszy<br />

Klawisze funkcyjne<br />

Klawisz funkcyjny Kod<br />

F1 112<br />

F2 113<br />

F3 114<br />

F4 115<br />

F5 116<br />

F6 117<br />

F7 118<br />

F8 119<br />

F9 120<br />

F10 121<br />

F11 122<br />

F12 123<br />

433


Dodatek B<br />

434


Kody klawiszy<br />

435


Podsumowanie<br />

kategorii akcji<br />

C<br />

Czesci skladowe jezyka HTML<br />

Opis akcji<br />

Akcja Skladnia Sekwencja klawiszy Opis<br />

break break; Esc + br Przerywa wykonywanie petli (for,<br />

for in, do while, while).<br />

call call (ujecie); Esc + ca Przetwarza skrypt przypisany do<br />

ujecia o wskazanej etykiecie. Jest to<br />

akcja odrzucona; zamiast niej nalezy<br />

uzywac akcji function.<br />

comment // komentarz Esc + // Sprawia, ze wpisany tekst jest<br />

traktowany tylko jako komentarz.<br />

continue continue; Esc + co Sprawia, ze Flash opuszcza pozostale<br />

akcje w obrebie petli i przeskakuje<br />

do miejsca, w którym nastepuje<br />

sprawdzanie warunku.<br />

delete<br />

do while do {<br />

duplicate<br />

MovieClip<br />

delete<br />

zmienna;<br />

instrukcje;<br />

} while<br />

(warunek);<br />

else else {<br />

else if<br />

duplicateMovie<br />

Clip (sciezka,<br />

nowanazwa,<br />

glebokosc);<br />

instrukcje;<br />

}<br />

else if<br />

(warunek) {<br />

instrukcje;<br />

}<br />

Esc + da<br />

Esc + do<br />

Esc + dm<br />

Esc + el<br />

Esc + ei<br />

Usuwa zmienna.<br />

Tworzy petle wykonujaca instrukcje,<br />

dopóki spelniony jest warunek.<br />

Tworzy kopie klonu klipu filmowego.<br />

Okresla instrukcje, które maja byc<br />

wykonywane w przypadku<br />

niespelnienia warunku<br />

w wyrazeniu if.<br />

Okresla instrukcje, które maja byc<br />

wykonywane jako warunek<br />

alternatywny.<br />

Podsumowanie kategorii akcji<br />

435


Dodatek C<br />

Opis akcji<br />

Akcja Skladnia Sekwencja klawiszy Opis<br />

Podsumowanie kategorii akcji<br />

evaluate wyrazenie; Esc + ev Dodaje nowa linie wyrazen w oknie<br />

skryptu, umozliwiajaca oszacowanie<br />

wyrazenia.<br />

for<br />

for..in<br />

fsCommand<br />

function<br />

getURL<br />

goto<br />

for<br />

(poczatkowe;<br />

warunek;<br />

nastepne) {<br />

instrukcje;<br />

}<br />

for (iterator<br />

in obiekt) {<br />

instrukcje;<br />

}<br />

fscommand<br />

(komenda,<br />

argumenty);<br />

function nazwa<br />

(parametry) {<br />

instrukcje;<br />

}<br />

getURL (URL,<br />

okno,<br />

znienne);<br />

gotoAndPlay<br />

(scena,<br />

ujecie);<br />

gotoAndStop<br />

(scena,<br />

ujecie);<br />

nextFrame();<br />

previousFrame(<br />

);<br />

nextScene();<br />

previousScene(<br />

);<br />

Esc + fr<br />

Esc + fi<br />

Esc + fs<br />

Esc + fn<br />

Esc + gu<br />

Esc + go<br />

Tworzy petle wykonujaca instrukcje,<br />

dopóki spelniony jest warunek.<br />

Warunek ten jest zazwyczaj<br />

licznikiem, zwiekszajacym lub<br />

zmniejszajacym wartosc z kazdym<br />

wykonaniem petli.<br />

Tworzy petle wykonujaca instrukcje<br />

na wlasciwosciach obiektu lub<br />

elementach tablicy.<br />

Wysyla komendy dla JavaScript<br />

w srodowisku przegladarki lub tez do<br />

odtwarzacza Flasha, albo projektora,<br />

w celu kontrolowania przebiegu<br />

odtwarzania.<br />

Definiuje wyrazenia wykonujace<br />

okreslone dzialanie w oparciu<br />

o podane parametry. Uzyj tej akcji<br />

do tworzenia wlasnych klas i metod.<br />

Wczytuje do okna przegladarki plik<br />

o wskazanym adresie URL (pelny<br />

adres internetowy lub wzgledna<br />

sciezka dostepu). Udostepnia<br />

opcjonalne argumenty specyfikujace<br />

metody CGI GET lub POST.<br />

Przeskakuje do wskazanej sceny,<br />

ujecia, numeru lub etykiety ujecia,<br />

a nastepnie odtwarza od tego<br />

momentu lub przerywa odtwarzanie.<br />

436


Podsumowanie kategorii akcji<br />

Opis akcji<br />

Akcja Skladnia Sekwencja klawiszy Opis<br />

if if (warunek) {<br />

instrukcje;<br />

ifFrameLoaded ifFrameLoaded<br />

(scena,<br />

ujecie) {<br />

include<br />

loadMovie<br />

}<br />

instrukcje;<br />

}<br />

#include<br />

(sciezka)<br />

loadMovieNum<br />

lub loadMovie<br />

(URL,<br />

poziomlubsciez<br />

ka, zmienne);<br />

loadVariables loadVariablesN<br />

um lub<br />

loadVariables<br />

(URL,<br />

poziomlubsciez<br />

ka, zmienne);<br />

on<br />

onClipEvent<br />

on<br />

(mouseEvent) {<br />

instrukcje;<br />

}<br />

onClipEvent<br />

(clipEvent) {<br />

instrukcje;<br />

}<br />

Esc + if<br />

Esc + il<br />

Esc + in<br />

Esc + lm<br />

Esc + lv<br />

Esc + on<br />

Esc + on<br />

Okresla instrukcje przeznaczone do<br />

wykonania w przypadku spelnienia<br />

warunku.<br />

Okresla instrukcje przeznaczone do<br />

wykonania po wczytaniu wskazanej<br />

klatki lub sceny. Ta akcja jest<br />

odrzucona; zamiast niej powinno<br />

sie uzywac wlasciwosci<br />

_framesloaded.<br />

Dolacza skrypt z zewnetrznego<br />

dokumentu tekstowego.<br />

Wczytuje zewnetrzny plik SWF<br />

do wskazanego poziomu lub klipu<br />

filmowego. Udostepnia opcjonalne<br />

argumenty specyfikujace metody CGI<br />

GET lub POST.<br />

Wczytuje zmienne z zewnetrznego<br />

dokumentu tekstowego do<br />

wskazanego poziomu lub klipu<br />

filmowego. Udostepnia opcjonalne<br />

argumenty specyfikujace metody CGI<br />

GET lub POST.<br />

Okresla instrukcje do wykonania po<br />

wystapieniu danego zdarzenia myszy<br />

lub zdarzenia klawiaturowego.<br />

Manipulator on jest zawsze<br />

przypisany do klonu przycisku.<br />

Okresla instrukcje do wykonania po<br />

wystapieniu danego zdarzenia klipu<br />

filmowego. Manipulator<br />

onClipEvent jest zawsze<br />

przypisany do klonu klipu filmowego.<br />

play play(); Esc + pl Rozpoczyna odtwarzanie filmu<br />

od biezacej pozycji.<br />

print<br />

removeMovieCl<br />

ip<br />

print<br />

(lokalizacja,<br />

obramowanie);<br />

removeMovieCli<br />

p (sciezka);<br />

Esc + pr<br />

Esc + rm<br />

Drukuje zawartosc ujec.<br />

Usuwa duplikat klonu klipu<br />

filmowego.<br />

Podsumowanie kategorii akcji<br />

set variable zmienna =<br />

wartosc<br />

return<br />

return<br />

wartosc;<br />

Esc + sv<br />

Esc + rt<br />

Przypisuje wartosc do zmiennej.<br />

Zwraca wartosc obliczona przez<br />

funkcje.<br />

437


Dodatek C<br />

Opis akcji<br />

Akcja Skladnia Sekwencja klawiszy Opis<br />

Podsumowanie kategorii akcji<br />

setProperty<br />

startDrag<br />

setProperty<br />

(sciezka,<br />

wlasciwosc,<br />

wartosc);<br />

startDrag<br />

(sciezka,<br />

wysrodkowany,<br />

L, T, R, B);<br />

Esc + sp<br />

Esc + dr<br />

Przypisuje wartosc do wlasciwosci<br />

klonu klipu filmowego lub calego<br />

filmu.<br />

Sprawia, ze wskazany klip filmowy<br />

podaza za wskaznikiem myszy.<br />

stop stop(); Esc + st Wstrzymuje odtwarzanie.<br />

stopAllSounds stopAllSounds(<br />

);<br />

Esc + ss<br />

Przerywa odtwarzanie wszystkich<br />

dzwieków.<br />

stopDrag stopDrag(); Esc + sd Sprawia, ze klip filmowy przestaje<br />

podazac za wskaznikiem myszy, co<br />

bylo spowodowane uzyciem akcji<br />

startDrag.<br />

tellTarget<br />

toggleHigh<br />

Quality<br />

trace<br />

unloadMovie<br />

tellTarget<br />

(sciezka) {<br />

instrukcje;<br />

}<br />

toggleHighQual<br />

ity();<br />

trace<br />

(komunikat);<br />

unoadMovieNum<br />

lub<br />

unloadMovie<br />

(poziomlubscie<br />

zka);<br />

var var zmienna =<br />

wartosc<br />

while<br />

with<br />

while<br />

(warunek) {<br />

instrukcje;<br />

}<br />

with (obiekt)<br />

{<br />

instrukcje;<br />

}<br />

Esc + tt<br />

Esc + tq<br />

Esc + tr<br />

Esc + um<br />

Esc + vr<br />

Esc + wh<br />

Esc + wt<br />

Okresla instrukcje do wykonania<br />

w odniesieniu do klipu filmowego<br />

wskazanego sciezka dostepu. Ta akcja<br />

jest odrzucona; zamiast niej powinno<br />

sie uzywac akcji with lub skladni<br />

z kropka.<br />

Wlacza lub wylacza wygladzanie,<br />

oddzialujac na caly film. Ta akcja jest<br />

odrzucona; zamiast niej powinno sie<br />

uzywac wlasciwosci _quality.<br />

Wyswietla wyrazenie w oknie<br />

Output w trybie testowym.<br />

Usuwa wczytany film z danego<br />

poziomu lub klipu filmowego.<br />

Definiuje zmienne lokalne zawarte<br />

w funkcji.<br />

Tworzy petle wykonywana, dopóki<br />

spelniony jest okreslony warunek.<br />

Okresla instrukcje do wykonania<br />

w odniesieniu do obiektu lub klipu<br />

filmowego wskazanego sciezka<br />

dostepu.<br />

438

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!