Flash MX Programowanie w jezyku ActionScript flmxas


IDZ DO
IDZ DO
PRZYKŁADOWY ROZDZIAŁ
PRZYKŁADOWY ROZDZIAŁ
Flash MX.
SPIS TRERCI
SPIS TRERCI
Programowanie w języku
KATALOG KSIĄŻEK
KATALOG KSIĄŻEK
ActionScript
Autor: Brian Underdahl
KATALOG ONLINE
KATALOG ONLINE
Tłumaczenie: Wojciech Pazdur
ISBN: 83-7197-950-9
Tytuł oryginału: Macromedia Flash MX:
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
The Complete Reference
Format: stron: 252
Przykłady na ftp: 2275 kB
TWÓJ KOSZYK
TWÓJ KOSZYK
Pomimo prostoty język ActionScript posiada ogromne możliwoSci i omówienie ich
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
wszystkich na łamach jednej książki musiałoby polegać na napisaniu opasłego tomiska,
wypełnionego encyklopedyczną (a zatem mało inspirującą) wiedzą. Niniejszy podręcznik
ma inny cel -- przedstawienie najważniejszych i najbardziej praktycznych aspektów pracy
CENNIK I INFORMACJE
CENNIK I INFORMACJE
ze skryptami oraz zachęcenie Czytelnika do samodzielnych eksperymentów.
Aby w pełni zrozumieć i bez problemu wykorzystać informacje zawarte w książce, musisz
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
posiadać podstawowe umiejętnoSci w posługiwaniu się Flashem. Nie oznacza to,
O NOWORCIACH
O NOWORCIACH
że książka jest adresowana do ekspertów. Wystarczy, że orientujesz się w podstawowych
narzędziach graficznych i edycyjnych Flasha, a także znasz najważniejsze zasady
ZAMÓW CENNIK
ZAMÓW CENNIK
tworzenia i publikowania filmów w formacie SWF. Dzięki tej książce każdy użytkownik
wczeSniejszych wersji programu może bez problemu kontynuować naukę pracy
z Flashem. JeSli jednak jesteS początkującym twórcą stron internetowych, najlepiej zacząć
CZYTELNIA
CZYTELNIA
naukę od książek  Flash MX. Od podstaw oraz  Flash MX. Głębsze spojrzenie , wydanych
nakładem Wydawnictwa Helion.
FRAGMENTY KSIĄŻEK ONLINE
FRAGMENTY KSIĄŻEK ONLINE
Książka skupia się na najważniejszych narzędziach i technikach pracy z językiem
ActionScript. Pierwszych pięć rozdziałów powinien przeczytać każdy, niezależnie od stanu
swojej wiedzy na temat skryptów Flasha. Rozdziały te nie tylko omawiają podstawowe
narzędzia do tworzenia skryptów, lecz także przedstawiają szereg cennych wskazówek
na temat rozwiązywania różnego rodzaju problemów dotyczących działania własnoręcznie
pisanych programów. Dalsze rozdziały stanowią ilustrowane licznymi przykładami
kompendium wiedzy na temat poszczególnych elementów języka ActionScript.
Początkujący użytkownik Flasha powinien przeczytać wszystkie te rozdziały po kolei,
natomiast osoby dobrze znające wczeSniejsze wersje ActionScriptu mogą traktować
ostatnie 6 rozdziałów książki jako pomoc podręczną, do której można zajrzeć w razie
potrzeby i wyszukać informacje na temat odpowiedniej funkcji czy metody.
Książka  Flash MX. Programowanie w języku ActionScript opisuje różne aspekty pracy
Wydawnictwo Helion
z językiem ActionScript. Dowiesz się:
ul. Chopina 6
44-100 Gliwice
jakich zasad należy trzymać się podczas tworzenia skryptów;
tel. (32)230-98-63
jak korzystać z narzędzi do edycji i testowania skryptów, w szczególnoSci z paneli
e-mail: helion@helion.pl
Actions i Debugger;
w jakich sytuacjach skrypty są najbardziej potrzebne;
jak zapewnić zgodnoSć skryptu z różnymi wersjami odtwarzaczy Flasha;
czym są akcje, operatory, funkcje, właSciwoSci, obiekty oraz komponenty i jakie
występują między nimi powiązania.
O Autorze.................................................................................................................... 11
Wstęp........................................................................................................................... 13
Do kogo adresowana jest ta książka? ....................................................................................13
Jak czytać tą książką?............................................................................................................13
Co można znalezć w tej książce? ..........................................................................................14
Przykładowe pliki..................................................................................................................14
Rozdział 1. ActionScript  podstawy...................................................................... 15
Podstawowe pojącia związane z ActionScriptem .................................................................15
Porównanie jązyków ActionScript i JavaScript.............................................................................. 16
Co to jest programowanie zorientowane obiektowo?..................................................................... 17
Uwaga na wielkość liter! ................................................................................................................17
Sposób działania programu w jązyku ActionScript ..............................................................18
Składnia jązyka ActionScript..........................................................................................................18
Funkcje (functions) .........................................................................................................................19
Akcje (actions)................................................................................................................................21
Metody (methods)...........................................................................................................................24
Właściwości (properties) ................................................................................................................24
Zmienne (variables) ........................................................................................................................27
Stałe (constants)..............................................................................................................................29
Wyrażenia (expressions).................................................................................................................32
Operatory (operators)......................................................................................................................33
Pątle (loops) ....................................................................................................................................35
Komentarze (comments).................................................................................................................36
Znaczenie obiektów w jązyku ActionScript..........................................................................37
Wykorzystanie notacji kropkowej (dot notation) ........................................................................... 38
Adresowanie obiektów....................................................................................................................39
Typy danych ..........................................................................................................................41
Aańcuchy znaków (strings).............................................................................................................41
Liczby .............................................................................................................................................42
Wartości logiczne (boolowskie) .....................................................................................................43
Obiekty............................................................................................................................................43
Korzystanie z panelu Actions................................................................................................44
Rozdział 2. Tworzenie skryptów............................................................................... 47
Planowanie programu............................................................................................................47
Przeznaczenie programu .................................................................................................................48
Planowanie kolejnych etapów działania ......................................................................................... 50
Dodawanie skryptów do obiektów i klatek ...........................................................................51
4 Flash MX. Programowanie w języku ActionScript
Gdzie umieścić skrypt?...................................................................................................................51
Praca z panelem Actions.................................................................................................................53
Różnice pomiądzy trybami Normal i Expert .................................................................................. 54
Wykorzystanie ActionScriptu do sterowania właściwościami obiektów .............................57
Czym są właściwości obiektu? .......................................................................................................57
Dostąpne właściwości obiektów.....................................................................................................58
Modyfikowanie właściwości obiektu ............................................................................................. 63
Stosowanie akcji w jązyku ActionScript...............................................................................64
Czym są akcje? ...............................................................................................................................64
Dostąpne akcje................................................................................................................................64
Rozdział 3. Przykładowe zastosowania skryptów...................................................... 77
Wykorzystanie akcji tellTarget i with ...................................................................................77
Różnice miądzy akcjami tellTarget i with ......................................................................................78
Sterowanie klipem filmowym przy użyciu akcji with ....................................................................79
Interakcja programu z użytkownikiem..................................................................................87
Typy pól tekstowych.......................................................................................................................88
Wysyłanie danych do serwera ........................................................................................................92
Tworzenie własnego kursora.................................................................................................92
Przygotowanie klipu filmowego .....................................................................................................93
Dodawanie skryptu .........................................................................................................................94
Dalsze możliwości ..........................................................................................................................95
Rozdział 4. Debugger................................................................................................. 97
Na czym polega proces debuggingu?....................................................................................97
Wykorzystanie debuggera .....................................................................................................99
Praca z oknem Debugger ................................................................................................................99
Uruchamianie debuggera ..............................................................................................................100
Praca z oknem Output .........................................................................................................101
Komunikaty o błądach ..................................................................................................................101
Lista obiektów...............................................................................................................................103
Lista zmiennych ............................................................................................................................103
Śledzenie wyrażeń ........................................................................................................................104
Zdalny debugging filmu ......................................................................................................105
Rozdział 5. Problem z wersjami Flasha ................................................................. 107
Kto jest adresatem filmu?....................................................................................................107
Udostąpnianie filmu w Internecie.................................................................................................108
Udostąpnianie filmu w intranecie .................................................................................................108
Tworzenie filmów przeznaczonych do wyświetlania na platformie Pocket PC...........................109
Niezalecane instrukcje ActionScript ...................................................................................109
Kiedy można używać niezalecanych instrukcji? ..........................................................................110
Które instrukcje nie są zalecane?..................................................................................................110
Wykrywanie wersji odtwarzacza przy użyciu skryptu........................................................111
Różnice pomiądzy przeglądarkami Internet Explorer i Netscape Navigator................................111
Spis treści 5
Sprawdzanie numeru wersji..........................................................................................................112
Wykorzystanie numeru wersji ......................................................................................................113
Unikanie problemów z różnymi wersjami odtwarzaczy...............................................................114
Wykrywanie obecności odtwarzacza w systemie .........................................................................114
Tworzenie alternatywnych wersji filmu..............................................................................115
Rozdział 6. Akcje  opis metodyczny ................................................................... 117
Akcje służące do sterowania filmem (Movie Control) .......................................................117
goto ...............................................................................................................................................117
on ..................................................................................................................................................122
play................................................................................................................................................124
stop................................................................................................................................................124
stopAllSounds...............................................................................................................................125
Akcje związane z przeglądarką i siecią (Browser/Network) ...................................................126
fscommand....................................................................................................................................126
getURL..........................................................................................................................................128
loadMovie .....................................................................................................................................130
loadVariables ................................................................................................................................132
unloadMovie .................................................................................................................................133
Akcje służące do sterowania klipami filmowymi (Movie Clip Control)............................134
duplicateMovieClip.......................................................................................................................134
onClipEvent ..................................................................................................................................136
removeMovieClip .........................................................................................................................137
setProperty ....................................................................................................................................137
startDrag........................................................................................................................................138
stopDrag........................................................................................................................................139
updateAfterEvent ..........................................................................................................................139
Akcje związane ze zmiennymi (Variables) .........................................................................140
delete.............................................................................................................................................140
set variable ....................................................................................................................................140
var .................................................................................................................................................141
with ...............................................................................................................................................141
Pątle i instrukcje warunkowe (Condition/Loops)................................................................142
break..............................................................................................................................................142
case................................................................................................................................................143
continue.........................................................................................................................................143
default ...........................................................................................................................................143
do..while........................................................................................................................................143
else ................................................................................................................................................144
else if.............................................................................................................................................145
for..................................................................................................................................................145
for..in.............................................................................................................................................147
if ....................................................................................................................................................148
switch ............................................................................................................................................149
while..............................................................................................................................................149
Akcje związane z drukowaniem (Printing) .........................................................................149
print...............................................................................................................................................150
Funkcje definiowane przez użytkownika (User-Defined Functions)..................................152
6 Flash MX. Programowanie w języku ActionScript
call.................................................................................................................................................152
call function ..................................................................................................................................153
function .........................................................................................................................................153
method...........................................................................................................................................155
return.............................................................................................................................................156
Akcje różne (Miscellaneous)...............................................................................................156
#endinitclip ...................................................................................................................................156
#include.........................................................................................................................................157
#initclip .........................................................................................................................................158
clearInterval ..................................................................................................................................158
comment........................................................................................................................................158
evaluate .........................................................................................................................................159
setInterval......................................................................................................................................159
trace...............................................................................................................................................160
Akcje niezalecane................................................................................................................160
ifFrameLoaded..............................................................................................................................160
tellTarget.......................................................................................................................................161
toggleHighQuality.........................................................................................................................162
Rozdział 7. Operatory  opis metodyczny ........................................................... 163
Operatory podstawowe........................................................................................................163
" " (cudzysłowy) ...........................................................................................................................163
() (nawiasy) ...................................................................................................................................164
Operatory arytmetyczne (Arithmetic Operators) ................................................................164
% (reszta z dzielenia) ....................................................................................................................164
* (mnożenie) .................................................................................................................................165
+ (dodawanie) ...............................................................................................................................165
- (odejmowanie)............................................................................................................................165
/ (dzielenie) ...................................................................................................................................165
Operatory przypisania (Assignment)...................................................................................166
%= (przypisanie reszty z dzielenia) ..............................................................................................166
&= (przypisanie bitowego iloczynu logicznego  AND) ........................................................... 166
|= (przypisanie bitowej sumy logicznej  OR) ........................................................................... 166
*= (przypisanie iloczynu) .............................................................................................................167
+= (przypisanie sumy) ..................................................................................................................167
-= (przypisanie różnicy)................................................................................................................167
/= (przypisanie ilorazu).................................................................................................................167
<<= (przypisanie bitowego przesuniącia w lewo) ........................................................................167
= (przypisanie) ..............................................................................................................................167
>>= (przypisanie bitowego przesuniącia w prawo)......................................................................167
>>>= (przypisanie bitowego przesuniącia w prawo bez zachowania znaku) .................................168
^= (przypisanie bitowej różnicy symetrycznej  XOR).............................................................. 168
Operatory poziomu bitowego (Bitwise Operators) .............................................................168
& (bitowy iloczyn logiczny  AND) .......................................................................................... 169
~ (bitowa negacja logiczna  NOT)............................................................................................ 169
| (bitowa suma logiczna  OR)....................................................................................................169
<< (przesuniącie bitów w lewo)....................................................................................................170
>> (przesuniącie bitów w prawo) .................................................................................................170
>>> (przesuniącie bitów w prawo bez zachowania znaku) .......................................................... 170
Spis treści 7
^ (bitowa różnica symetryczna  XOR)...................................................................................... 170
Operatory porównania (Comparison Operators).................................................................171
!= (nierówność).............................................................................................................................171
< (mniejsze) ..................................................................................................................................171
<= (mniejsze lub równe) ...............................................................................................................172
= = (równość)................................................................................................................................172
= = = (równość i zgodność typów) ............................................................................................... 172
> (wiąksze)....................................................................................................................................172
>= (wiąksze lub równe) ................................................................................................................173
Operatory logiczne (Logical Operators)..............................................................................173
! (negacja logiczna  NOT).........................................................................................................173
&& (iloczyn logiczny  AND) ................................................................................................... 174
|| (suma logiczna  OR)...............................................................................................................174
Operatory różne (Miscellaneous Operators) .......................................................................174
++ (inkrementacja)........................................................................................................................175
-- (dekrementacja).........................................................................................................................175
?: (warunek) ..................................................................................................................................175
instanceof ......................................................................................................................................176
typeof ............................................................................................................................................176
void ...............................................................................................................................................176
Operatory niezalecane .........................................................................................................177
<> (nierówność)............................................................................................................................177
add.................................................................................................................................................177
and.................................................................................................................................................177
eq...................................................................................................................................................178
ge...................................................................................................................................................178
gt ...................................................................................................................................................178
le....................................................................................................................................................178
lt ....................................................................................................................................................178
ne...................................................................................................................................................178
not .................................................................................................................................................178
or ...................................................................................................................................................178
Operatory dodatkowe ..........................................................................................................179
, (przecinek) ..................................................................................................................................179
. (kropka).......................................................................................................................................179
// (linia komentarza)......................................................................................................................179
/* (blok komentarza).....................................................................................................................179
[ ] (operator dostąpu do tablicy)....................................................................................................180
{ } (operator inicjalizacji obiektu) ................................................................................................180
Rozdział 8. Funkcje  opis metodyczny ............................................................... 183
Funkcje podstawowe ...........................................................................................................183
escape............................................................................................................................................183
eval................................................................................................................................................184
getProperty....................................................................................................................................184
getTimer........................................................................................................................................185
getVersion.....................................................................................................................................186
targetPath ......................................................................................................................................186
unescape........................................................................................................................................186
8 Flash MX. Programowanie w języku ActionScript
Funkcje konwertujące (Conversion Functions)...................................................................187
Array .............................................................................................................................................187
Boolean .........................................................................................................................................187
Number .........................................................................................................................................188
Object............................................................................................................................................188
String.............................................................................................................................................189
Funkcje matematyczne (Mathematical Functions) .............................................................189
isFinite...........................................................................................................................................189
isNaN ............................................................................................................................................189
parseFloat......................................................................................................................................190
parseInt..........................................................................................................................................191
Funkcje niezalecane.............................................................................................................191
chr .................................................................................................................................................192
int ..................................................................................................................................................192
length.............................................................................................................................................192
mbchr ............................................................................................................................................193
mblength .......................................................................................................................................193
mbord ............................................................................................................................................193
mbsubstring...................................................................................................................................193
ord .................................................................................................................................................194
random ..........................................................................................................................................194
substring........................................................................................................................................194
Rozdział 9. Właściwości  opis metodyczny ........................................................ 197
_alpha...................................................................................................................................197
_currentframe.......................................................................................................................198
_droptarget...........................................................................................................................199
_focusrect.............................................................................................................................199
_framesloaded......................................................................................................................200
_height .................................................................................................................................200
_highquality.........................................................................................................................201
_name...................................................................................................................................202
_parent .................................................................................................................................203
_quality ................................................................................................................................203
_root.....................................................................................................................................204
_rotation...............................................................................................................................204
_soundbuftime .....................................................................................................................205
_target ..................................................................................................................................205
_totalframes .........................................................................................................................206
_url.......................................................................................................................................206
_visible.................................................................................................................................206
_width ..................................................................................................................................206
_x .........................................................................................................................................207
_xmouse...............................................................................................................................208
_xscale .................................................................................................................................208
_y .........................................................................................................................................209
_ymouse...............................................................................................................................209
Spis treści 9
_yscale .................................................................................................................................209
Rozdział 10. Obiekty  opis metodyczny.............................................................. 211
Obiekty ActionScript...........................................................................................................211
Obiekty podstawowe (Core) .........................................................................................................212
Obiekty związane z filmem (Movie) ............................................................................................ 212
Obiekty związane z komunikacją klient-serwer (Client/Server) ..................................................212
Obiekty dodatkowe (Authoring)...................................................................................................213
Array....................................................................................................................................213
Array.concat..................................................................................................................................214
Array.join......................................................................................................................................214
Array.length ..................................................................................................................................214
Array.pop ......................................................................................................................................215
Array.push.....................................................................................................................................215
Array.reverse.................................................................................................................................215
Array.shift .....................................................................................................................................215
Array.slice.....................................................................................................................................216
Array.sort ......................................................................................................................................216
Array.splice...................................................................................................................................216
Array.toString ...............................................................................................................................217
Array.unshift .................................................................................................................................217
Color ....................................................................................................................................217
Color.setRGB................................................................................................................................217
Color.getRGB ...............................................................................................................................218
Color.setTransform .......................................................................................................................218
Color.getTransform.......................................................................................................................219
Date......................................................................................................................................219
Key.......................................................................................................................................219
Metody i stałe obiektu Key ...........................................................................................................219
Wykorzystanie obiektu Key..........................................................................................................221
Math.....................................................................................................................................222
Metody i stałe obiektu Math .........................................................................................................222
Wykorzystanie obiektu Math........................................................................................................222
Mouse ..................................................................................................................................224
MovieClip............................................................................................................................224
Number ................................................................................................................................224
Selection ..............................................................................................................................226
Sound ...................................................................................................................................227
Sound.attachSound........................................................................................................................227
Sound.getBytesLoaded .................................................................................................................227
Sound.getBytesTotal.....................................................................................................................227
Sound.getPan ................................................................................................................................227
Sound.getTransform......................................................................................................................228
Sound.getVolume..........................................................................................................................228
Sound.loadSound ..........................................................................................................................228
Sound.setPan.................................................................................................................................228
Sound.setTransform......................................................................................................................228
Sound.setVolume..........................................................................................................................229
10 Flash MX. Programowanie w języku ActionScript
Sound.start ....................................................................................................................................229
Sound.stop.....................................................................................................................................229
String ...................................................................................................................................229
String.charAt.................................................................................................................................230
String.charCodeAt ........................................................................................................................230
String.concat .................................................................................................................................230
String.fromCharCode....................................................................................................................230
String.indexOf...............................................................................................................................230
String.lastIndexOf.........................................................................................................................230
String.length..................................................................................................................................231
String.slice ....................................................................................................................................231
String.split.....................................................................................................................................231
String.substr ..................................................................................................................................231
String.substring .............................................................................................................................231
String.toLowerCase ......................................................................................................................231
String.toUpperCase.......................................................................................................................232
XML ....................................................................................................................................232
XMLSocket .........................................................................................................................232
Rozdział 11. Wykorzystanie gotowych komponentów ........................................ 235
Czym są komponenty? ........................................................................................................235
Zastosowania komponentów.........................................................................................................235
Typy komponentów ......................................................................................................................236
Wstawianie komponentów do filmu....................................................................................238
Planowanie użycia komponentów................................................................................................. 238
Wstawianie komponentów do sceny............................................................................................. 239
Komponenty a ActionScript .........................................................................................................240
Przykład wykorzystania komponentów...............................................................................240
Skorowidz ................................................................................................................. 245
Animacje możesz tworzyć bez wykorzystania ActionScriptu  na przykład za pomocą
narządzi Motion Tween czy Shape Tween. Jednak możliwości tych narządzi są czasami
niewystarczające i ani jedno, ani drugie nie pozwala uzyskać zamierzonego efektu. W ta-
kich sytuacjach warto zaprzągnąć do pracy ActionScript, za pomocą którego można osią-
gnąć niemal każdy zamierzony cel.
Trzeci rozdział niniejszej książki poświącą kilku przykładom różnych ciekawych efektów,
których uzyskanie nie byłoby możliwe bez użycia jązyka ActionScript. Czytając niniejszy
rozdział, nauczysz sią korzystać z akcji i w celu sterowania klipami filmo-
wymi, a także dowiesz sią, jak umożliwić interakcje filmu z użytkownikiem.
Tytuł rozdziału mógłby sugerować, że od razu rzucamy sią na głąboką wodą i z marszu
zajmujemy sią programowaniem. W rzeczywistości mam zamiar raczej uświadomić Ci
kilka możliwości skryptów Flash i przekonać Cią, jak prosty i wygodny w użyciu jest
jązyk ActionScript. Chociaż zadania omawiane w tym rozdziale mogą początkującemu
Czytelnikowi wydać sią nieco trudne, wykonanie ich z pewnością pomoże zrozumieć wiele
aspektów pracy ze skryptami Flasha. Być może po przeczytaniu rozdziału dojdziesz do
wniosku, że tworzenie różnych efektów przy użyciu skryptów jest znacznie prostsze, niż
Ci sią wydawało!
Wykorzystanie akcji tellTarget i with
W niemal wszystkich filmach Flasha wystąpują różnego rodzaju animacje. Czasami do
ich utworzenia wystarczą standardowe narządzia Motion Tween i Shape Tween, jednak
cząsto pojawia sią potrzeba wykorzystania bardziej zaawansowanych technik.
Klipy filmowe (Movie Clips) Flasha stanowią jeden z najciekawszych typów obiektów
Flasha. W istocie klipy same w sobie są minifilmami, które program wyświetla w obrąbie
filmu głównego. Pozwala to na tworzenie wielu rozmaitych efektów, których nie można
byłoby uzyskać w wyniku animacji innych typów obiektów.
Po umieszczeniu w scenie klonu (instance) klipu filmowego cząsto chcemy mieć możli-
wość sterowania tym klipem z poziomu innych obiektów w filmie. Jako przykład rozważ
zestaw przycisków sterujących odtwarzaniem zawartości klipu filmowego. Jeden z przycis-
ków ma włączać odtwarzanie, drugi zatrzymywać, trzeci przewijać klip do początku itd.
Aby zrealizować takie rozwiązanie, musisz określić sposób komunikowania sią przycisków
78 Flash MX. Programowanie w języku ActionScript
z klipem. Choć sama idea nie wydaje sią zbyt skomplikowana, mechanizmy kryjące sią
za tym procesem są bardziej złożone, niż mogłoby sią wydawać. Wez pod uwagą kilka
problemów, które bądziesz musiał rozwiązać podczas pisania programu:
f& Ponieważ przyciski nie komunikują sią bezpośrednio z klipem filmowym, musisz
zdefiniować mechanizm przekazywania danych do klipu, aby ten zareagował
odpowiednio na użycie każdego z tych przycisków.
f& Może być konieczne pobieranie pewnych dodatkowych informacji z klipu filmowego,
na przykład na temat tego, czy odtwarzanie klipu nie zostało zakończone.
f& W filmie mogą znajdować sią równocześnie różne klipy filmowe, dlatego należy
zapewnić, aby dane z przycisków były adresowane tylko do właściwego obiektu
(a nie do np. każdego klipu w filmie).
Jak zapewne sią domyśliłeś, Flash udostąpnia efektywne narządzia umożliwiające rozwią-
zanie każdego z przedstawionych wyżej problemów. W wiąkszości przypadków narządzia
te mają postać odpowiednio zaimplementowanych właściwości (properties) obiektów.
Zanim jednak przejdziemy do szczegółów, zwróćmy uwagą na kilka ważnych spraw zwią-
zanych z wykorzystaniem klonów symboli w filmach Flasha:
f& Gdy używasz jakiegoś symbolu w filmie, do sceny wstawiany jest klon (instance)
tego symbolu, a nie sam symbol. Jest to o tyle ważne, że ma duży wpływ na objątość
pliku publikowanego w sieci. Niezależnie od tego, ilu klonów danego symbolu użyjesz
w filmie, symbol ten zajmie w pliku tyle samo miejsca.
f& Klonom symboli trzeba nadawać nazwy, jeśli chcemy powiązać je z innymi obiektami
w kodzie ActionScript.
f& Właściwości każdego klonu możesz modyfikować niezależnie od pozostałych klonów.
f& Zmiany wprowadzone w symbolu znajdującym sią w bibliotece zostają
odzwierciedlone na wszystkich klonach tego symbolu umieszczonych w scenie.
Do wysyłania i pobierania danych z klonów klipu filmowego możesz posłużyć sią dwiema
akcjami: i (nie są to jedyne akcje umożliwiające pracą z klipami filmo-
wymi, jednak dla potrzeb omawianego tu przykładu są one najbardziej użyteczne).
Różnice między akcjami tellTarget i with
Wiele wcześniejszych publikacji na temat Flasha wypełnionych jest przykładami dotyczą-
cymi wykorzystania akcji , natomiast akcja jest w nich cząsto pomijana.
Mógłbyś dziąki temu nabrać przekonania, że instrukcja jest w czymś lepsza
od instrukcji . W rzeczywistości tak nie jest.
Akcja znajduje sią obecnie na liście tych akcji, których stosowanie nie jest
zalecane i być może w nastąpnych wersjach Flasha nie bądzie już obsługiwana. Dla odmia-
ny, akcja nie tylko jest w pełni obsługiwana przez najnowsze wersje programu (Flash 5
i najnowsza  Flash MX), ale także stanowi narządzie o wiele bardziej uniwersalne niż
akcja . Działanie akcji ogranicza sią bowiem wyłącznie do klipów
filmowych, natomiast akcji możemy używać z dowolnymi typami obiektów.
Rozdział 3. Przykładowe zastosowania skryptów 79
Podczas kodowania nie wystąpują praktycznie żadne znaczące różnice pomiądzy obydwie-
ma omawianymi akcjami. Możesz sią o tym przekonać, porównując dwa poniższe obrazki.
Na obu z nich widać kod skryptu, którego zadaniem jest przejście do nastąpnej klatki ani-
macji w obrąbie klipu filmowego o nazwie . W pierwszym przypadku posłużono
sią do tego celu akcją .
Drugi rysunek przedstawia ten sam skrypt w wersji z akcją .
Chociaż obydwie wersje skryptu wyglądają niemal identycznie, występuje między nimi
pewna różnica, na którą trzeba zwrócić uwagę. Zauważ, że nazwa klonu klipu filmowego
w akcji podawana jest w cudzysłowach, natomiast w akcji  bez
cudzysłowów. Różnicę tę musisz uwzględnić, gdy np. próbujesz zaadaptować kod
pochodzący z napisanych dawniej skryptów do najnowszej wersji Flasha.
Sterowanie klipem filmowym przy użyciu akcji with
Aby przedstawić praktyczne aspekty wykorzystania akcji , zaprezentują proces two-
rzenia przykładowego programu w jązyku ActionScript. Przykład ten jest o tyle cenny,
że jego realizacja innymi metodami byłaby dość trudna i czasochłonna.
80 Flash MX. Programowanie w języku ActionScript
Załóżmy, że chcemy zareklamować i sprzedać pewien produkt, który należałoby pokazać
klientom w kilku różnych widokach. Naszym celem bądzie zatem stworzenie takiej apli-
kacji, w której widz przy użyciu odpowiednich przycisków może obracać widok w lewo
lub w prawo. Ogólnie rzecz biorąc, chodzi o to, aby widz miał odczucie, że produkt znaj-
duje sią na obrotowym podeście, którym można poruszać, naciskając przyciski na pulpicie
sterowniczym.
Tworzenie klipu filmowego
Klipy filmowe można tworzyć różnymi metodami. W tym przypadku zakładamy, że chce-
my zareklamować samochód i umożliwić widzowi obejrzenie go z różnych stron. Wyko-
rzystamy do tego celu serią zdjąć samochodu, które przedstawiają pojazd pod różnymi
kątami. Zaczniemy od przygotowania obrazków ze zdjąciami.
Kolejne fotografie powinny być wykonane z pozycji mniej wiącej równomiernie rozmiesz-
czonych wokół samochodu. Ważne jest też zachowanie tej samej odległości od środka
pojazdu i wykonanie tylu zdjąć, aby możliwe było dokładne pokazanie wszystkich jego
elementów. Liczba zdjąć, które należy wykonać, zależna jest oczywiście od stopnia złożo-
ności obiektu, wiąc w przypadku filmów przedstawiających inne produkty może być po-
trzebna mniejsza lub wiąksza liczba fotografii niż w omawianym przykładzie.
Jeśli chcesz umożliwić obracanie widoku produktu, pamiętaj, aby odpowiednio
ponumerować kolejne fotografie. Dzięki temu łatwo będziesz mógł rozmieścić
je w kolejnych ujęciach klipu filmowego.
Przejdzmy zatem do rzeczy. Na początku musimy utworzyć sam klip filmowy. Oto czyn-
ności, jakie należy w tym celu wykonać:
1. Utwórz serią obrazków przedstawiających produkt. Mogą to być zeskanowane
lub wykonane aparatem cyfrowym fotografie, ale pamiątaj, że rozmiary obrazków
powinny być stosunkowo niewielkie. W przeciwnym razie czas przesyłania filmu
siecią może być dość długi.
2. Otwórz nowy, pusty projekt Flasha.
3. Wybierz polecenie File/Import (lub użyj skrótu Ctrl+R), aby otworzyć okno
dialogowe Import, przedstawione na rysunku poniżej.
Rozdział 3. Przykładowe zastosowania skryptów 81
4. Wybierz odpowiedni format plików z rozwijanej listy w dole okna. W przypadku
zdjąć bądzie to zapewne format JPEG Image.
5. Wybierz nazwy plików, które chcesz załadować. Możesz równocześnie wyróżnić
całą serią plików, klikając pierwszą nazwą, przytrzymując klawisz Shift i klikając
ostatnią nazwą w serii. Jeśli chcesz załadować kilka plików, których nazwy nie
stanowią ciągłej serii na liście, przytrzymaj wciśniąty klawisz Ctrl i klikaj osobno
każdą z nazw. Jeśli nazwy plików zawierają kolejno uporządkowane numery,
wystarczy wybrać pierwszy plik z serii. Plik z gotowymi wynikami ćwiczenia
(MYCAR.FLA) oraz pliki JPG wykorzystane w tym ćwiczeniu znajdziesz na serwerze
FTP wydawnictwa  Helion , pod adresem: ftp://ftp.helion.pl/przyklady/flmxas.zip.
6. Kliknij przycisk Open, aby załadować wybrane pliki do programu. Zostaną one
umieszczone i w scenie, i w bibliotece filmu (Library).
7. Usuń wszystkie obrazki ze sceny. W naszym przypadku konieczne bądzie ich
wstawienie do odpowiedniego klipu filmowego, a nie do głównej listwy czasowej
filmu.
8. Wybierz polecenie Insert/New Symbol lub naciśnij klawisz Ctrl+F8, aby otworzyć
okno dialogowe Create New Symbol, w którym definiujemy nowy symbol.
9. Wprowadz nazwą symbolu w polu Name (na przykład Images) i kliknij przycisk
OK, aby przejść dalej.
10. Otwórz okno biblioteki (Library), wybierając polecenie Window/Library lub używając
skrótu F11.
11. Przeciągnij pierwszy obrazek z biblioteki do pierwszej klatki na listwie czasowej
nowego symbolu.
12. Kliknij nastąpną klatką na listwie czasowej, aby ją zaznaczyć.
13. Wybierz polecenie Insert/Blank Keyframe lub posłuż sią klawiszem F7, aby wstawić
pustą klatką kluczową.
14. Przeciągnij drugi obrazek do nowej klatki kluczowej.
15. Powtarzaj czynności z punktów od 12. do 14. dla wszystkich kolejnych obrazków
z biblioteki, aż każdy z znajdzie sią w odpowiedniej klatce na listwie czasowej
klipu. Gdy to zrobisz, możesz zamknąć okno Library lub odsunąć je na bok, aby
nie przeszkadzało Ci w dalszej pracy nad klipem (pózniej bądziemy musieli jeszcze
skorzystać z tego okna, gdy pojawi sią konieczność wstawienia klipu filmowego
do sceny).
16. Wyświetl panel wyrównywania obiektów (Align), używając polecenia
Windows/Panels/Align lub skrótu Ctrl+K.
17. Kliknij w klatce nr 1, aby ją zaznaczyć. Obrazek wstawiony do tej klatki powinien
być otoczony ramką informującą o tym, że zaznaczyłeś klatką.
18. Kliknij ikoną To Stage w panelu Align, dziąki czemu obrazki bądą wyrównywane
wzglądem środka klipu filmowego. Musimy wyrównać wszystkie obrazki, aby
każdy z nich był wyświetlany w tym samym miejscu podczas przechodzenia
z jednej klatki do drugiej.
82 Flash MX. Programowanie w języku ActionScript
19. Użyj ikon Align Horizontal Center i Align Vertical Center w panelu Align
do ustawienia pozycji obrazka w pionie i w poziomie.
20. Zaznacz nastąpną klatką na listwie czasowej klipu i powtórz czynności z punktu 19.
To samo zrób we wszystkich kolejnych klatkach, dziąki czemu wszystkie obrazki
bądą wycentrowane wzglądem obszaru zajmowanego przez klip filmowy. Gdy
skończysz, możesz zamknąć panel Align.
21. Wybierz polecenie Insert/Layer lub użyj ikony Insert Layer i dodaj dwie nowe
warstwy do listwy czasowej. Pierwszą z nich możesz nazwać Labels (zostaną
na niej umieszczone etykiety klatek), a drugiej nadaj nazwą Actions, ponieważ
bądziemy w jej obrąbie definiować akcje ActionScriptu.
22. Wyświetl panel Properties, używając polecenia Window/Properties lub skrótu
klawiaturowego Ctrl+F3.
23. Kliknij pierwszą klatką w warstwie Labels i przypisz tej klatce etykietą FirstPic,
wprowadzając ją w polu w panelu Properties.
24. Zaznacz ostatnią klatką w warstwie Labels (to znaczy tą, której odpowiada ostatni
obrazek dodany do klipu).
25. Wybierz polecenie Insert/Keyframe lub naciśnij F6, co spowoduje wstawienie
klatki kluczowej, której można nadać odpowiednią etykietą.
26. Ponownie przejdz do panelu Properties i w polu wprowadz nazwą
LastPic. Możesz zamknąć panel Properties.
27. Kliknij pierwszą klatką warstwy Actions.
28. Otwórz panel Actions, wykorzystując polecenie Window/Actions lub skrót
klawiaturowy F9.
29. Z katalogu Actions/Movie Control po lewej stronie panelu Actions wybierz
podwójnym klikniąciem akcją . Zostanie ona dodana do okna skryptu i tym
samym odtwarzanie kolejnych klatek klipu bądzie zatrzymywane zaraz po jego
załadowaniu. Potrzeba takiego rozwiązania wynika z tego, że chcemy pozwolić
użytkownikowi na to, aby sam przechodził do kolejnych klatek za pomocą
odpowiednich przycisków. Ekran Twojego komputera powinien teraz wyglądać
mniej wiącej tak jak na poniższym obrazku.
Rozdział 3. Przykładowe zastosowania skryptów 83
30. Kliknij nazwą sceny Scene 1 pod listwą czasową, aby przejść do głównej listwy
czasowej projektu. Choć klip filmowy nie jest teraz widoczny, został on zapisany
w bibliotece i jest gotowy do użycia.
Tworzenie klipu filmowego z serii zdjąć było zadaniem dość prostym, choć momentami
pewnie nużącym. Jak przekonasz sią za chwilą, przygotowanie pozostałej cząści filmu
również nie nastrączy nam żadnych kłopotów.
Dodawanie obiektów do sceny głównej
Po opracowaniu klipu filmowego możesz zająć sią rozmieszczeniem odpowiednich ele-
mentów w scenie głównej. W tym celu wykonaj nastąpujące czynności:
1. Jeśli wcześniej zamknąłeś okno biblioteki (Library), otwórz je ponownie.
2. Przeciągnij klon klipu filmowego Images z biblioteki do sceny. Ustaw go tak,
aby pod klipem zostało dość miejsca na wstawienie tam przycisków.
3. Wybierz polecenie Window/Common Libraries/Buttons, otwierając biblioteką
z gotowymi zestawami przycisków.
4. Wyszukaj w bibliotece dwa odpowiadające Ci przyciski, jeden ze strzałką w lewo,
a drugi w prawo. Ja wybrałem przyciski gel Left i gel Right z katalogu Playback.
5. Umieść klony każdego z wybranych przycisków w scenie i ustaw je pod klipem
filmowym. Scena powinna teraz wyglądać tak jak na poniższym rysunku.
Możesz zamknąć wszystkie okna bibliotek, ponieważ nie bądą one już potrzebne. Nastąp-
nym ważnym zadaniem jest nadanie nazwy klonowi klipu filmowego.
Nadawanie nazwy klonowi klipu filmowego
Aby możliwe było skorzystanie z akcji (lub ), musisz przypisać niepo-
wtarzalną nazwą klonowi klipu filmowego. Czynność ta jest niezwykle istotna dla popraw-
nego działania programu.
W celu nadania obiektowi nazwy wykonaj nastąpujące czynności:
1. Wyświetl panel Properties, używając polecenia Window/Properties lub skrótu
klawiaturowego Ctrl+F3.
84 Flash MX. Programowanie w języku ActionScript
2. Kliknij klon klipu filmowego, aby go zaznaczyć.
3. Wprowadz nazwą klonu w polu . W moim przypadku (zobacz
rysunek poniżej) nadałem klonowi nazwą MyCar. Nazwa obiektu może brzmieć
dowolnie, jednak pózniej należy pamiątać o tym, aby w kodzie skryptu wprowadzać
ją w dokładnie tej samej postaci co w panelu Properties.
4. Zamknij panel Properties. W przypadku tego filmu klip jest jedynym obiektem,
którego nazwa bądzie wykorzystywana w skrypcie.
Nadając nazwy klonom obiektów we Flashu, używaj dwóch lub więcej krótkich słów, które
nie będą się myliły z nazwami innych obiektów ani ze słowami kluczowymi ActionScript.
Wprowadzanie kodu ActionScript
Teraz możemy już zająć sią tworzeniem samego skryptu, który sprawi, że film bądzie
działał zgodnie z naszymi oczekiwaniami. Zanim jednak zajmiesz sią tym zadaniem, do-
kładnie rozważ, co właściwie jest celem działania skryptu:
f& Po załadowaniu filmu powinna zostać wyświetlona pierwsza klatka klipu i na niej
odtwarzacz powinien sią zatrzymać. To założenie już spełniliśmy, wstawiając akcją
do listwy czasowej klipu.
f& Gdy użytkownik kliknie przycisk ze strzałką skierowaną w prawo, wskaznik czasu
powinien przejść do nastąpnej klatki na listwie czasowej klipu.
f& Gdy użytkownik kliknie przycisk ze strzałką w lewo, wskaznik czasu powinien
przesunąć sią o jedną klatką do tyłu.
f& Jeśli wskaznik czasu dojdzie do pierwszej lub ostatniej klatki filmu, kolejne klikniącie
przycisku powinno spowodować przeskok do przeciwnego końca listwy czasowej.
Ponieważ pierwsze zadanie zostało już zrealizowane, musimy zająć sią trzema kolejnymi
punktami. Zacznijmy od tego, w jaki sposób przemieszczać wskaznik czasu w lewo lub
w prawo.
Jeśli przyjrzysz sią akcjom z katalogu Actions w oknie Actions, zauważysz zapewne, że
żadna z nich nie pozwala bezpośrednio zrobić tego, o co nam chodzi. I co z tym fan-
tem począć? Mam dla Ciebie niespodzianką  nie wszystkie akcje dostąpne w jązyku
ActionScript można znalezć w katalogach znajdujących sią w tym panelu. Możesz sią
o tym przekonać, przeglądając słowniczek ActionScript Dictionary, otwierany poleceniem
Help/ActionScript Dictionary. Tak czy inaczej, rozwiązanie naszego problemu wymaga
pewnych specjalnych zabiegów.
Rozdział 3. Przykładowe zastosowania skryptów 85
W celu zrealizowania założeń przedstawionych na powyższej liście skorzystamy z opcji
dostąpnych dla akcji (akcja ta znajduje sią katalogu Movie Control). Jak przed-
stawia poniższy rysunek, po rozwiniąciu listy Type w polu z parametrami akcji możesz
wybrać jedną z kilku opcji, w tym Next Frame i Previous Frame. Jeśli wybierzesz jedną
z tych dwóch pozycji, możesz być zdziwiony tym, że zamiast akcji w oknie
skryptu pojawi sią zapis lub .
Jak wspomniałem, trzeba odpowiednio podejść do sytuacji, w której wskaznik czasu doj-
dzie do lewego lub prawego końca zakresu klatek. Kod ActionScript zostanie umiesz-
czony wewnątrz przycisków i bądzie komunikował sią z klipem filmowym w celu określe-
nia, która klatka wyświetlana jest w danej chwili. Na podstawie tych danych podejmie
decyzją o przejściu do sąsiedniej klatki lub do klatki z drugiego końca zakresu. Właśnie
z tego powodu nadawaliśmy etykiety FirstPic i LastPic, odpowiednio: pierwszej i ostatniej
klatce klipu. Nazwą klipu MyCar podamy w wywołaniu akcji , aby móc zarówno
odczytywać właściwości klipu filmowego, jak i je modyfikować.
Skrypt umieszczony w obrąbie przycisku ze strzałką w lewo powinien wyglądać nastą-
pująco:









Przeanalizujmy kolejne jego linie. Pierwsza z nich to:

W linii tej umieszczono uchwyt zdarzenia , co oznacza, że wykrywane jest zwol-
nienie przycisku myszy po klikniąciu. Linia ta została dodana automatycznie w trakcie
wprowadzania akcji , którą program umieścił w drugiej linii kodu:

Akcja odwołuje sią do klipu filmowego MyCar i rozpoczyna blok kodu, w którym
zapisane są instrukcje dotyczące tego klipu. Pierwszą z nich jest instrukcja warunkowa :


Sprawdzane w niej jest, czy bieżącą klatką ( ) nie jest pierwsza klatka klipu.
Gdy wystąpi taka sytuacja, oznacza to, że wskaznik czasu znajduje sią na lewym końcu
zakresu i nie można go przesuwać dalej w tą stroną (właściwość zwraca
86 Flash MX. Programowanie w języku ActionScript
zawsze wartość liczbową, dlatego nie mogliśmy tu użyć etykiety klatki zamiast numeru).
Jeśli wynikiem instrukcji bądzie wartość true, wskaznik bieżącej klatki na listwie czaso-
wej zostanie przesuniąty na przeciwny koniec zakresu, czyli do klatki z etykietą .
Jeśli operacja ta zostanie wykonana, program bądzie czekał na dalsze akcje ze strony
użytkownika. Jeśli natomiast nie było konieczne przejście na drugi koniec zakresu, wskaz-
nik czasu zostanie po prostu przesuniąty o jedną pozycją w lewo:


Inaczej mówiąc, wskaznik czasu przesuwany jest o jedną klatką do tyłu, pod warunkiem
że nie znajduje sią w pierwszej klatce klipu.
Zwróć uwagą na to, że nie musieliśmy używać nazwy klipu filmowego w żadnej linii oprócz
tej z definicją akcji . Jest to wynikiem użycia tej akcji, która sprawia, że wszystkie
instrukcje w obrąbie bloku kodu adresowane są do klipu wyszczególnionego na początku.
Dziąki użyciu akcji Flash wie, że wszystkie kolejne akcje w bloku dotyczą klipu
o nazwie MyCar.
Jak zapewne sią domyśliłeś, kod umieszczony w przycisku ze strzałką w prawo powinien
być podobny do tego w omówionym przypadku. Jego zapis przedstawia sią nastąpująco:









Przypominam, że aby wstawić skrypt do przycisku, należy zaznaczyć ten przycisk, otwo-
rzyć panel Actions (polecenie Window/Actions lub skrót klawiaturowy F9), a nastąpnie
wybierać podwójnymi klikniąciami kolejne instrukcje z katalogów znajdujących sią po
lewej stronie panelu. W przypadku niektórych z nich konieczne jest wypełnienie pól
z parametrami, widocznych ponad oknem skryptu.
Gdy wprowadzasz kod skryptu, nie zapomnij użyć znaku podkreślenia ( ) na początku
nazwy właściwości . Pamiętaj o tym, że wszystkie nazwy właściwości
obiektu rozpoczynają się tym znakiem. Jeśli o nim zapomnisz, Flash będzie traktował
wpisaną przez Ciebie nazwę jako nazwę jakiejś zmiennej, a nie właściwości obiektu.
Testowanie filmu
Nadeszła chwila prawdy. Czy to wszystko zadziała? Aby sią o tym przekonać, użyj pole-
cenia Control/Test Movie lub naciśnij klawisze Ctrl+Enter. Poniżej przedstawiam dwie
klatki z mojej wersji filmu.
Rozdział 3. Przykładowe zastosowania skryptów 87
Gdy bądziesz testował film, zwróć szczególną uwagą na to, co dzieje sią po dojściu do
pierwszej lub ostatniej klatki klipu. Czy nastąpuje wtedy przeskok do klatki po przeciwnej
stronie zakresu? Jeśli nie, wróć do skryptów zdefiniowanych w przyciskach. Wszystkie
nazwy akcji powinny być wyświetlane na niebiesko, właściwości na zielono, a etykiety,
zmienne oraz wartości liczbowe na czarno. Błądy składniowe Flash wyróżnia na czerwono,
ale najcząściej to nie one są przyczyną problemów z działaniem filmu, a program zazwy-
czaj nie może pomóc Ci w wykryciu innych błądów. Jeśli nie potrafisz znalezć błądów
w swoich skryptach, porównaj je dokładnie z listingami wydrukowanymi powyżej (lub
ze skryptami zawartymi w pliku MYCAR.FLA, który znajdziesz w zbiorze materiałów do
niniejszej książki, pod adresem: ftp://ftp.helion.pl/przyklady/flmxas.zip).
Interakcja programu z użytkownikiem
W przykładzie z poprzedniego podrozdziału interakcja filmu i użytkownika była bardzo pro-
sta. Gdy użytkownik klikał jeden z dwóch przycisków, wskaznik na listwie czasowej klipu
przesuwał sią w lewo lub w prawo. Pojedynczy uchwyt zdarzenia realizował
całą komunikacją z użytkownikiem, który mógł jedynie kliknąć pierwszy lub drugi przycisk.
Po wykonaniu poprzedniego ćwiczenia powinieneś już rozumieć, jak działają uchwyty
zdarzeń związanych z obsługą myszy. Lista zdarzeń (events), które mogą być wykrywane
przez program, jest dość bogata, co przedstawia poniższy rysunek.
88 Flash MX. Programowanie w języku ActionScript
Czasami konieczne jest jednak zaoferowanie użytkownikowi innych możliwości wprowa-
dzania danych niż tylko klikanie myszą. Cząsto pojawia sytuacja, w której chcemy, aby
widz wprowadził pewne informacje do formularza i wysłał je do serwera sieciowego. Zaj-
miemy sią teraz kilkoma przykładami tego typu rozwiązań.
Typy pól tekstowych
W dynamicznych polach tekstowych użytkownik może wprowadzać dane z klawiatury.
Możesz na przykład poprosić go o podanie imienia, a pózniej wyświetlać imią w komu-
nikatach adresowanych do widza.
W niniejszym przykładzie użyjemy pól tekstowych Flasha do zrealizowania prostego me-
chanizmu komunikacji użytkownika z programem. Dowiesz sią przy tym, jak możesz
sprawdzić, czy widz wprowadził swoje imią, zanim nastąpi przejście do dalszej cząści filmu.
Definiowanie pól tekstowych i zmiennych
We Flashu można korzystać z trzech typów pól tekstowych i każdego z nich użyjemy w tym
przykładzie. Na początku omówią pokrótce każdy z dostąpnych typów pól tekstowych:
f& Static Text  statyczne pole tekstowe. Zawiera napisy, które nie zmieniają sią
w trakcie wyświetlania filmu, na przykład objaśnienia do przycisków lub opcji.
f& Dynamic Text  dynamiczne pole tekstowe. Jego zawartość może zmieniać sią
w trakcie odtwarzania filmu.
f& Input Text  wejściowe pole tekstowe. Pozwala wprowadzać widzowi tekst podczas
odtwarzania filmu.
Zajmiemy sią teraz prostym filmem, który bądzie zawierał tylko dwie klatki. Przedsta-
wione tu rozwiązania możesz również stosować w znacznie bardziej rozbudowanych pro-
jektach, o ile tylko dobrze przyswoisz sobie podany przeze mnie tok postąpowania. Plik
z gotowymi wynikami ćwiczenia (Acting on user input.fla) oraz inne materiały dotyczące
Rozdział 3. Przykładowe zastosowania skryptów 89
ćwiczeń z niniejszej książki znajdziesz na serwerze FTP wydawnictwa  Helion , pod
adresem: ftp://ftp.helion.pl/przyklady/flmxas.zip. Wykonaj nastąpujące czynności:
1. Zacznij pracą w nowym, pustym pliku Flasha.
2. Włącz narządzie Text i dodaj pole tekstowe w lewym górnym rogu sceny.
Domyślnie bądzie to pole statyczne (Static Text).
3. W polu tym wprowadz nastąpujący tekst: Please enter your name: (lub po polsku:
Podaj swoje imię:  w tym przypadku bądziesz jednak musiał użyć jednej z czcionek
z polskimi znakami diakrytycznymi).
4. Dodaj drugie puste pole tekstowe obok pierwszego, aby otrzymać układ podobny
do tego na rysunku.
5. Po zaznaczeniu drugiego pola tekstowego otwórz panel Properties (polecenie
Window/Properties lub skrót Ctrl+F3).
6. Z rozwijanej listy w lewym górnym rogu panelu Properties wybierz pozycją Input
Text. Pozwoli to na wprowadzanie w nim tekstu podczas wyświetlania filmu.
7. W panelu Properties znajduje sią pole oznaczone etykietą Var. W polu tym wprowadz
nazwą  tak bądzie sią nazywała zmienna odpowiadająca łańcuchowi
znaków wprowadzonemu przez widza.
8. Upewnij sią, że ikona Render Text as HTML nie jest włączona. Ponieważ bądziemy
za chwilą definiowali mechanizm sprawdzania poprawności wpisu, nie chcemy, aby
program dołączył do tekstu znaczniki HTML, które tylko utrudniłyby nam to zadanie.
9. Kliknij ikoną Show Border Around Text. Dziąki temu puste pole zostanie otoczone
ramką i użytkownik bądzie wiedział, gdzie należy wprowadzić tekst. Panel Properties
powinien teraz wyglądać nastąpująco:
10. Otwórz biblioteką z gotowymi zestawami przycisków, wybierając polecenie
Window/Common Libraries/Buttons.
11. Przeciągnij klon jednego z przycisków do sceny i ulokuj go poniżej pól tekstowych.
Możesz wybrać dowolny przycisk, który Ci sią spodoba.
12. Utwórz kolejne pole typu Static Text na tle przycisku i wprowadz w nim napis
Continue (lub po polsku: Kontynuuj). Flash pamiąta typ ostatnio tworzonego pola
tekstowego, dlatego konieczna bądzie zmiana typu nowego pola z Input Text
na Static Text. Rezultat powinien wyglądać podobnie jak na poniższym rysunku.
90 Flash MX. Programowanie w języku ActionScript
13. Kliknij klatką 2. na listwie czasowej i wstaw pustą klatką kluczową poleceniem
Insert/Blank Keyframe lub klawiszem F7. Najlepiej jest użyć pustej klatki
kluczowej, ponieważ nie chcemy, aby elementy z pierwszej klatki filmu były
widoczne w drugiej klatce.
14. Dodaj pole tekstowe do sceny.
15. W panelu Properties zmień typ pola na Dynamic Text. Umożliwi nam to
wyświetlanie w nim dowolnego tekstu utworzonego dynamicznie w kodzie
ActionScript.
16. W polu Var wprowadz nazwą dla zmiennej reprezentującej zawartość
pola tekstowego. Panel Properties powinien wyglądać jak na rysunku poniżej.
W tej chwili możesz już zamknąć ten panel, ponieważ nie bądzie nam wiącej
potrzebny.
Tworzenie skryptu
Wykorzystamy teraz kilka prostych linii kodu w jązyku ActionScript, które zmuszą film
do działania zgodnego z naszymi założeniami. Wykonaj nastąpujące czynności:
1. Zaznacz pierwszą klatką na listwie czasowej filmu.
2. Otwórz panel Actions, używając polecenia Window/Actions lub skrótu
klawiaturowego F9.
3. Wybierz podwójnym klikniąciem akcją , aby dodać ją do okna skryptu.
Film powinien zatrzymać sią w pierwszej klatce, co pozwoli użytkownikowi
na wprowadzenie imienia do formularza i użycie przycisku.
4. Zaznacz przycisk umieszczony w scenie, wcześniej upewniając sią, że żaden inny
obiekt nie bądzie zaznaczony wraz z przyciskiem.
5. W panelu Actions wybierz podwójnym klikniąciem akcją i w ten sposób dodaj
ją do okna skryptu (zakładam, że pracujesz cały czas w trybie Normal).
6. Z rozwijanej listy Type wybierz pozycją Next Frame, dziąki czemu akcja przypisana
przyciskowi bądzie powodować przeskok do drugiej klatki filmu.
7. Zaznacz drugą klatką na listwie czasowej filmu, gdyż teraz musimy umieścić
w niej kolejny skrypt.
Rozdział 3. Przykładowe zastosowania skryptów 91
8. W panelu Actions wybierz podwójnym klikniąciem akcją (z katalogu Conditions/
Loops), co spowoduje jej wpisanie do okna skryptu.
9. W polu Condition wprowadz nastąpujący warunek logiczny: .
Bądzie on sprawdzał, czy użytkownik wpisał jakikolwiek łańcuch znaków w polu
formularza.
Mogłoby się wydawać, że prościej byłoby sprawdzić, czy łańcuch znaków w polu
wejściowym ma postać lub , jednak ani w jednym, ani w drugim przypadku rezultat
testu nie byłby prawidłowy. Jeśli zmienna we Flashu nie została w żaden sposób
zainicjalizowana, przypisywana jest jej wartość pusta ( ). Wartość pusta plus 1
daje w wyniku 1, dlatego wynik zdefiniowanego przez nas testu zawsze wykryje, czy
pole było puste, czy też zawierało jakieś znaki. Gdy użytkownik wprowadzi choć jedną
literę, wynikiem testu będzie wartość . Odpowiednikiem powyższego testu mógłby
być też następujący zapis: .
10. W nastąpnej linii kodu dodaj zapis , wybierając podwójnym klikniąciem
akcją i wskazując pozycją Previous Frame na liście Type. W ten sposób film
automatycznie powróci do pierwszej klatki, jeśli użytkownik nie wprowadzi tekstu
do formularza.
11. W trzeciej linii skryptu dodaj akcją . Dziąki niej bądziesz mógł zadecydować
o tym, co ma nastąpić, gdy użytkownik wprowadzi swoje imią.
12. Jako nastąpną akcją w skrypcie wybierz pozycją z katalogu Variables.
13. W polu Variable wpisz słowo jako nazwą zmiennej. Upewnij sią, że opcja
Expression obok tego pola nie jest włączona.
14. Włącz opcją Expression obok pola Value, aby możliwe było wprowadzenie wyrażenia
definiującego wartość zmiennej.
15. W polu Value wpisz wyrażenie (albo po polsku:
). Panel Actions powinien teraz wyglądać jak na poniższym rysunku.
Możesz przejść do testowania filmu. Zanim wprowadzisz swoje imią, spróbuj zobaczyć,
co sią stanie, jeśli użyjesz przycisku Continue. Powinieneś zauważyć, że w takiej sytuacji
92 Flash MX. Programowanie w języku ActionScript
odtwarzacz nie przechodzi do drugiej klatki filmu. Dopiero po wpisaniu jakiegokolwiek
łańcucha znaków przycisk Continue przeniesie Cią do ekranu z komunikatem powitalnym
i wyświetli tekst przypisany zmiennej .
Omówiony tu przykład jest oczywiście bardzo prosty i poza wyświetleniem powitalnego
napisu nie realizuje żadnych innych zadań, jednak zademonstrował Ci działanie pewnych
mechanizmów, które od teraz bez problemów bądziesz mógł wykorzystywać w swoich
filmach.
Wysyłanie danych do serwera
Dane wprowadzone przez użytkownika można nie tylko wykorzystać w filmie, ale także
wysłać do serwera. Przesyłanie danych możliwe jest albo w specjalnym zbiorze utworzo-
nym przez Flasha, albo w postaci e-maila. W obu przypadkach dane mogą zostać odebrane
przez program nie związany z odtwarzaniem filmu Flasha.
Wadą przesyłania danych e-mailem jest to, że użytkownik musi potwierdzić wysłanie
listu w programie do obsługi poczty elektronicznej. Zaletą jest natomiast to, że nie
jest konieczne instalowanie żadnego specjalnego programu na serwerze odbierającym
dane, co w wielu przypadkach jest bardzo istotne. Wysyłanie danych z formularza
poprzez pocztę elektroniczną jest jednak niezbyt eleganckim rozwiązaniem
z technicznego punktu widzenia.
Być może zdziwi Cią to, ale do wysyłania danych przez Internet wystarczy pojedyncza
linia kodu w jązyku ActionScript. Mowa tu o akcji , która pozwala wysyłać wartości
wszystkich zmiennych filmu pod wskazany adres URL. Po wprowadzeniu akcji w panelu
Actions możesz wybrać jedną z dwóch metod wysyłania danych: lub . Zazwyczaj
do wysyłania niewielkich zbiorów informacji wykorzystujemy metodą , natomiast
w przypadku wiąkszych ilości danych lepiej jest posłużyć sią metodą .
Akcja może wysłać dane tylko pod adres znajdujący się w tej samej
subdomenie co film Flasha. Nie dotyczy to przesyłania danych pocztą elektroniczną
 w tym przypadku informacje mogą być kierowane pod dowolny adres.
Pewnym utrudnieniem w przesyłaniu danych akcją jest to, że nie można bezpo-
średnio wybrać, które informacje mają zostać wysłane, a które nie. Program domyślnie
wysyła wartości wszystkich zmiennych, jednak możesz posłużyć sią pewną sztuczką, jeśli
chcesz ograniczyć wysyłany zbiór danych do wybranych pozycji. Zamiast umieszczać akcją
na głównej listwie czasowej, możesz umieścić ją w klonie klipu filmowego. Jeśli
uprzednio przekażesz wartości odpowiednich zmiennych do tego klipu, tylko one zostaną
przekazane do serwera.
Tworzenie własnego kursora
Czasami przydatne okazuje sią stworzenie własnego kursora myszy, który w filmie Flasha
zastąpi standardowo wyświetlany kursor. Na przykład, jeśli projektujesz grą, może okazać
sią przydatny kursor w kształcie paletki, którym gracz bądzie mógł odbijać piłką lub inne
obiekty. Zastąpienie standardowego kursora we Flashu nie jest trudnym zadaniem, ponieważ
Rozdział 3. Przykładowe zastosowania skryptów 93
możesz ukryć go odpowiednią akcją ActionScript i zamiast niego wyświetlić odpowiednio
przygotowany klip filmowy.
W danej chwili można przeciągać kursorem tylko jeden klip filmowy. Jeśli zastąpisz
standardowy kursor myszy klipem filmowym, nie będziesz mógł bezpośrednio
przemieszczać innego klipu akcją . Przy użyciu odpowiednich mechanizmów
ActionScript można jednak rozwiązać ten problem. Wielu twórców pracujących z Flashem
napisało własne wersje klasycznej już gry  Pong , stosując omawiane tu techniki.
W niniejszym przykładzie utworzymy kursor o prostych kształtach i pozwolimy widzowi
przesuwać go myszą po ekranie. Pózniej przyjrzymy sią kilku rozwiązaniom, które mogą
udoskonalić filmy zawierające własnorącznie opracowane kursory.
Przygotowanie klipu filmowego
Aby podmienić standardowy kursor Flasha, musisz przygotować klip filmowy, który bądzie
odpowiednio reagował na ruch myszy. Zazwyczaj najprostszym sposobem realizacji tego
zadania jest utworzenie symbolu typu Movie Clip, a nastąpnie dołączenie do niego przycisku
(symbolu typu Button). Jest to dość wygodne rozwiązanie, ponieważ z jednej strony
 w przycisku zdefiniowane są uchwyty zdarzeń związanych z myszą, zaś z drugiej strony
 klip filmowy można w łatwy sposób przesuwać kursorem. Aącząc te dwa typy sym-
boli, otrzymasz obiekt, który z powodzeniem zastąpi kursor wyświetlany standardowo
w filmach Flasha.
Plik z gotowymi wynikami ćwiczenia (CUSTOM CURSOR.FLA) znajdziesz na serwerze
FTP wydawnictwa  Helion , pod adresem: ftp://ftp.helion.pl/przyklady/flmxas.zip.
Na początku utworzymy oba niezbądne symbole:
1. Otwórz nowy, pusty dokument Flasha.
2. Wybierz polecenie Insert/New Symbol lub naciśnij klawisze Ctrl+F8, aby wyświetlić
okno dialogowe Create New Symbol.
3. Wprowadz dowolną nazwą dla nowego symbolu i włącz opcją Button, zanim
klikniesz przycisk OK.
4. Narysuj figurą, której kształty ma posiadać nowy kursor.
Jeśli chcesz używać metody do sprawdzania, czy kursor natrafił na jakiś
obiekt, najlepiej będzie posłużyć się kursorem w kształcie kwadratu lub prostokąta.
5. Otwórz panel Align, używając polecenia Window/Panel/Align lub skrótu
klawiaturowego Ctrl+K.
6. Po zaznaczeniu narysowanego obiektu kliknij ikoną To Stage, a nastąpnie użyj
ikon Align Horizontal Center i Align Vertical Center, aby wyrównać obiekt
do środka ekranu.
7. Ponownie wybierz polecenie Insert/New Symbol lub naciśnij Ctrl+F8, aby jeszcze
raz otworzyć okno służącedo tworzenia nowego symbolu.
94 Flash MX. Programowanie w języku ActionScript
8. Wprowadz nazwą dla klipu filmowego i włącz opcją Movie Clip w polu Behavior,
po czym kliknij przycisk OK.
9. Otwórz biblioteką (Library) poleceniem Window/Library lub skrótem
klawiaturowym F11.
10. Przeciągnij klon utworzonego przed chwilą przycisku z biblioteki do klipu filmowego.
11. Użyj narządzi w panelu Align do ustawienia przycisku dokładnie pośrodku ekranu.
Dodawanie skryptu
Cały kod ActionScript umieścimy w obrąbie przycisku, który przyłączymy do klipu filmo-
wego. Ponieważ przycisk posiada już wbudowane mechanizmy związane z obsługą zdarzeń
dotyczących kursora myszy, nie bądziemy musieli zajmować sią szczegółowo realizacją
tego zadania.
Jak przedstawia kod na rysunku poniżej, uwzglądnimy kilka różnych zdarzeń związanych
z obsługą myszy. Omówią po kolei znaczenie każdego z nich.
Zaczniemy od ukrycia standardowego kursora myszy, gdy ten znajdzie sią ponad klipem
filmowym. Gdybyśmy tego nie zrobili, standardowy kursor byłby wyświetlany przez cały
czas wraz z klipem filmowym. Kod użyty do wykonania tej operacji przedstawia sią na-
stąpująco:



Po klikniąciu przycisku nowy kursor zostanie przyłączony do starego i bądziesz mógł przesu-
wać go myszą dopóty, dopóki nie zwolnisz przycisku myszy. Realizuje to nastąpujący kod:



Rozdział 3. Przykładowe zastosowania skryptów 95
Gdy użytkownik zwolni przycisk myszy, klip filmowy zostanie zatrzymany w bieżącej
pozycji. W tym celu należy wprowadzić taki oto zapis:



Jeśli po zwolnieniu przycisku użytkownik przesunie mysz poza klip filmowy, znów pojawi
sią standardowy kursor Flasha. Pozwoli na to nastąpujący fragment kodu:



Aby dodać przedstawione wyżej bloki kodu do przycisku, wykonaj nastąpujące czynności:
1. Włącz tryb edycji klipu filmowego i zaznacz znajdujący sią w jego obrąbie przycisk.
2. Otwórz panel Actions, jeśli nie jest widoczny na ekranie.
3. Z katalogu Actions/Movie Control wybierz podwójnym klikniąciem akcją , aby
dodać ją do okna skryptu.
4. W polu parametrów wybierz odpowiednie zdarzenie dla bloku kodu, który w danej
chwili tworzysz.
5. W pierwszym i ostatnim bloku wybierz odpowiednią metodą związaną z obsługą
myszy z katalogu Objects/Movie/Mouse/Methods.
6. W pozostałych dwóch blokach umieść, odpowiednio: akcje i .
W przypadku pierwszej z nich konieczne jest ustawienie parametrów tak jak w jednym
z powyższych listingów. Akcja nie wymaga podawania żadnych parametrów.
Przetestuj działanie filmu. Po klikniąciu klipu i przytrzymaniu lewego przycisku myszy
standardowy kursor powinien zniknąć i podczas poruszania myszą po ekranie powinien
przemieszczać sią utworzony przez Ciebie kursor. Gdy zwolnisz przycisk myszy, stan-
dardowy kursor pojawi sią z powrotem.
Dalsze możliwości
Zaprezentowany tu przykład z pewnością nie wyczerpuje możliwości związanych z two-
rzeniem własnych kursorów we Flashu, co oczywiście nie znaczy, że nie możesz rozbu-
dować go we własnym zakresie. Oto kilka pomysłów, które być może Cią zainteresują:
f& W obrąbie klipu filmowego utwórz animacją typu Motion Tween, w której kursor
bądzie powiąkszał sią i pomniejszał pulsującym ruchem.
f& Możesz użyć metody , jeśli chcesz, aby klip pojawił sią na ekranie
w określonej chwili, a nie figurował tam przez cały czas, czekając na klikniącie
przez użytkownika.
f& Jeśli chcesz napisać własną grą, możesz użyć metody do sprawdzenia,
czy użytkownik trafił w piłką, lotką bądz inny obiekt (w zależności od tematu gry).
96 Flash MX. Programowanie w języku ActionScript
f& Możesz utworzyć inny klip filmowy, który bądzie  uciekał po ekranie przed kursorem.
Rezultat taki można osiągnąć na przykład poprzez przemieszczanie obiektu w losowym
kierunku, gdy kursor znajdzie sią w niewielkiej odległości od niego.
f& Przy użyciu metody możesz wyświetlać serią obiektów podążających
za kursorem w niewielkich odstąpach. Niektórzy projektanci używają tej techniki
do tworzenia ogona przypominającego kometą, który ciągnie sią za przesuwanym
przez użytkownika kursorem.


Wyszukiwarka

Podobne podstrony:
Flash MX Programowanie fmxpro
Macromedia Flash MX Kompendium programisty flmxkp
01 Wprowadzenie do programowania w jezyku C
Programowanie w jezyku C Szybki start procss
Flash MX 2004 ActionScript cwiczenia praktyczne cwf4as
Flash MX Vademecum profesjonalisty flmxvp
Efektywne Programowanie W Języku Java
Lab Programowanie w jezyku powloki
A Poznański Programowanie w języku C dla chętnych
Oracle?tabaseg Programowanie w jezyku PL SQL or10ps
Wprowadzenie do programowania w języku C

więcej podobnych podstron