You are on page 1of 24

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Flash MX. wiczenia


zaawansowane
Autor: Daniel Bargie
ISBN: 83-7361-044-8
Format: B5, stron: 156
Przykady na ftp: 6722 kB

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Ksika Flash MX. wiczenia zaawansowane zostaa napisana z myl o tych


osobach, ktre tworzc we Flashu animacje, najczciej korzystaj z jzyka
skryptowego, jakim jest ActionScript. Zawarty w niej materia zosta dobrany tak,
aby po jej przeczytaniu kady mg stworzy dowolnie zoony pod wzgldem
programistycznym projekt animacji. Ksika ta jest przeznaczona dla osb, ktre nie
tylko znaj dobrze Flasha MX, ale take potrafi korzysta z jzyka skryptowego, jakim
jest ActionScript.
wiczenia obejmuj szeroki zakres zastosowania ActionScriptu. Dziki nim, bdziesz
w stanie tworzy zaawansowane gry we Flashu (take trjwymiarowe), a take
wykorzystasz moliwoci w zakresie transmisji strumieniowych i aplikacji
interaktywnych typu czat. Jednym sowem staniesz si prawdziwym ekspertem
Flasha.
Omwiono:
Animacj modelu 3D na podstawie danych zapisanych w pliku XML
Tworzenie i animowanie postaci w grach
Tworzenie plansz i edytorw plansz
Wykrywanie kolizji w grach
Tworzenie inteligentnych przeciwnikw
Wykorzystywanie w grach praw fizyki
Uycie Flash Communication Server MX do tworzenia transmisji wideo i aplikacji
typu chat

Spis treci
Wprowadzenie ........................................................................................................................................5
Rozdzia 1.

Animacja modelu 3D.............................................................................................................................7


Tworzenie szecianu......................................................................................................... 8
Podsumowanie............................................................................................................... 22

Rozdzia 2. Zapisywanie geometrii w pliku XML...........................................................................................23


Podsumowanie............................................................................................................... 35

Rozdzia 3. Kontrola oraz animacja postaci....................................................................................................37


Sterowanie prost postaci .............................................................................................. 37
Sterowanie zoon postaci............................................................................................ 42
Sterowanie postaci za pomoc myszy ............................................................................. 49
Podsumowanie............................................................................................................... 57

Rozdzia 4. Tworzenie plansz w grach ..............................................................................................................59


adowanie mapy z pliku XML ........................................................................................ 60
Edytor map.................................................................................................................... 64
Podsumowanie............................................................................................................... 76

Rozdzia 5. Detekcja kolizji.......................................................................................................................................77


Prosta detekcja kolizji metod hitTest .............................................................................. 77
Zoona detekcja kolizji metod hitTest ........................................................................... 83
Alternatywny sposb detekcji kolizji................................................................................ 91
Podsumowanie............................................................................................................... 96

Rozdzia 6. Inteligentni przeciwnicy ..................................................................................................................97


Zachowania spontaniczne................................................................................................ 97
Algorytm odszukiwania cieki ..................................................................................... 102
Podsumowanie............................................................................................................. 113

Rozdzia 7.

Fizyka w animacjach.........................................................................................................................115
Bezwadno obiektu w przestrzeni................................................................................ 115
Grawitacja oraz zderzenie ............................................................................................. 119
Podsumowanie............................................................................................................. 128

Rozdzia 8. Transmisja strumieni wideo Flash Communication Server MX...........................129


Co potrafi Flash Player 6 .............................................................................................. 130
Serwer Flash Communication Server MX....................................................................... 133
Wymiana strumieni wideo............................................................................................. 136
Podsumowanie............................................................................................................. 144

Flash MX. wiczenia zaawansowane

Rozdzia 9. Aplikacja Chat Flash Communication Server MX........................................................ 145


Projekt aplikacji Chat ................................................................................................... 145
Narzdzia administracyjne ............................................................................................ 152
Podsumowanie............................................................................................................. 155
Zakoczenie ................................................................................................................ 155

3.
Kontrola oraz
animacja postaci
Rozdzia

Podczas tworzenia gier komputerowych niezalenie od tego, czy korzystamy z jakiego


jzyka programowania czy te z aplikacji takiej jak Flash MX wczeniej czy pniej
napotkamy problem kontroli i animowania postaci wystpujcych w grze.
Moe on dotyczy prostego wywietlania rnych animacji obrazujcych rne stany
postaci i przesuwania jej w lewo i w prawo. Na przykad, sterujc samolotem, wywietlamy inny obraz, gdy znajduje si on w stanie spoczynku (nie kontrolujemy go w aden
sposb), inny, gdy leci w lewo (np. obraz samolotu przechylonego na lewe skrzydo), a inny,
gdy leci w prawo (obraz samolotu przechylonego na prawe skrzydo).
Problem moe by te bardzo zoony, gdy np. sterujemy postaci z kreskwki, ktra posiada animacj chodu, obrotu w lewo, w prawo, schylania si itd. Do tego kontrolujemy j
za pomoc myszy lub kombinacji klawiszy.
W tym rozdziale zapoznamy si dokadnie z tym zagadnieniami, wykonujc wiczenia
polegajce na kontrolowaniu i animowaniu prostych oraz zoonych postaci, ktre mog
wystpowa w grach.

Sterowanie prost postaci


wiczenie 3.1.

W pierwszym wiczeniu poznamy sposb tworzenia animacji, w ktrej za pomoc klawisza


lewej strzaki lub prawej strzaki bdziemy mogli sterowa rakiet przesuwajc si po
ekranie. Gotow animacj SWF, ktr stworzymy w tym wiczeniu, mona znale w katalogu Rozdzial03/Gotowe/SterowanieRakieta.swf.

38

Flash MX. wiczenia zaawansowane

1. Otwrzmy Flash MX lub stwrzmy w nim nowy projekt.


2. Z menu Insert wybierzmy polecenie New Symbol, a nastpnie za pomoc okna

Create New Symbol stwrzmy symbol typu Movie Clip o nazwie Rakieta.
Symbol Rakieta bdzie stanowi obiekt, ktry chcemy kontrolowa w tej animacji
3. Upewniwszy si, e Flash jest w trybie edycji symbolu Rakieta, z menu File

wybierzmy polecenie Import, a nastpnie z katalogu Rozdzial03/Cwiczenia/Rakieta


zaadujmy plik Rakieta00.bmp.
Flash MX powinien zapyta, czy zaadowa pozostae dwa pliki Rakieta01.bmp oraz
Rakieta02.bmp, ktre jako cao mog stanowi animacj. Kliknijmy przycisk Tak.
Gdy to zrobimy, program w kolejnych klatkach animacji symbolu Rakieta umieci
bitmapy Rakieta00, Rakieta01 oraz Rakieta02 (patrz rysunek 3.1).
Rysunek 3.1.
Trzy ujcia
symbolu Rakieta
po zaimportowaniu
do niego sekwencji
bitmap
a) Pierwsze ujcie
kluczowe rakieta
w pooeniu neutralnym
b) Drugie ujcie
kluczowe rakieta
skrca w lewo
c) Trzecie ujcie
kluczowe rakieta
skrca w prawo

a
b

Po umieszczeniu bitmap w symbolu Rakieta lewy grny rg bitmapy w kadym


z uj symbolu bdzie znajdowa si w centrum symbolu (patrz rysunek 3.2a).
Nam bardziej moe odpowiada sytuacja, w ktrej centrum symbolu znajduje si
w centrum bitmapy (patrz rysunek 3.2b).
Aby dokadnie pokry centrum bitmapy z centrum symbolu, najlepiej posuy si
panelem Info. W pola tekstowe X oraz Y naley wypisa 0.0, upewniwszy si wczeniej,
e operacje bd dotyczy punktu centralnego bitmapy, a nie jej lewego grnego
rogu. Operacj t powinnimy wykona dla kadego z trzech uj symbolu Rakieta.
Przy tworzeniu caej gry a nie jedynie animacji, w ktrej kontrolujemy rakiet,
powinnimy zamieni bitmapy na wypenienia (polecenie Modify/Break Apart),
po czym usun biae to i zostawi jedynie obraz rakiety.

Rozdzia 3.  Kontrola oraz animacja postaci

Rysunek 3.2.
Zmiana pooenia
centralnego punktu
bitmapy za pomoc
panelu Info
a) Przed zmian pooenia
b) Po zmianie pooenia

39

4. Poniewa kade z trzech uj symbolu Rakieta przedstawia inny stan postaci,

powinnimy znale prosty sposb odwoywania si do tych uj. W tym celu


nadamy kademu z nich odpowiedni etykiet.
Stwrzmy wic now warstw i nadajmy jej nazw Etykiety i akcje. Nastpnie w kadej
klatce nowej warstwy wstawmy puste ujcie kluczowe i, korzystajc z panelu Properties,
ustalmy kolejno ich nazwy jako FREE, LEFT oraz RIGHT (patrz rysunek 3.3).
Rysunek 3.3.
Nazwy uj pozwol
na szybkie odwoanie
si do kadego z nich

5. Teraz za pomoc panelu Actions umiemy w kadym z uj warstwy Etykiety i akcje

prosty skrypt:


 




Dziki temu bdziemy mieli pewno, e animacja rakiety nie zostanie odtworzona.
6. Symbol Rakieta jest ju gotowy, moemy wic powrci do trybu edycji animacji

gwnej. Powinnimy teraz umieci odnonik do symbolu Rakieta w obszarze


roboczym, tak jak na rysunku 3.4.

40

Flash MX. wiczenia zaawansowane

Rysunek 3.4.
Odnonik
do symbolu Rakieta
w obszarze roboczym

Poniewa odnonik bdzie do duy, za pomoc panelu Transform powinnimy


go zmniejszy do okoo 45% pierwotnego rozmiaru.
7. Teraz, korzystajc z panelu Properties, nadajmy odnonikowi do symbolu Rakieta

nazw Rakieta.
8. Obiekt, ktrym bdziemy sterowa, jest ju gotowy. Przystpujemy wic do tworzenia

gwnego kodu sterujcego. W animacji gwnej stwrzmy warstw o nazwie Akcje,


po czym wyselekcjonujmy jej pierwsze i jedyne ujcie kluczowe, a nastpnie otwrzmy
panel Actions.
9. Rozpoczynamy wprowadzanie kodu ActionScript sterujcego zachowaniem rakiety:
 

  ! "#"

Zmienna globalna  


 informuje, w jakim stanie znajduje si aktualnie
rakieta. Istniej trzy moliwoci: warto domylna  oznacza, e obiekt znajduje
si w spoczynku, warto  rakieta przemieszcza si w lewo, natomiast warto
  rakieta przemieszcza si w prawo.
10. Teraz musimy stworzy metody, ktre bd reagoway na wcinicie oraz zwolnienie

odpowiednich klawiszy:
$%
 & ' ()

*()
 ! ) $% 

Obiekt  przypiszemy jako obiekt nasuchu do klawiatury, czyli obiektu .
*+ ) ) , -+ .)

 
/
()

*()
0 * 1) ! 2 
  3

2 * 0
1) * 0#
3
  ! "#"
4 (
2 * 0
1) * 0567
  ! "567"
4 *
 +  * 1)

Rozdzia 3.  Kontrola oraz animacja postaci

41

Kod metody , jak atwo si domyli, zostanie wykonany, gdy wciniemy
dowolny klawisz podczas odtwarzania animacji SWF. Jeli wciniemy klawisz
strzaki w lewo, zmiennej  
 zostanie przypisana warto  , jeli
natomiast wciniemy klawisz strzaki w prawo, zmiennej  
 zostanie
przypisana warto   . Dalej piszemy:
*+ ) ) , -+ .)

)(
()

*()
0 *   ! 2 
  3

2   !! "#"
3

2 * 0- 8+  !! 9:
  ! "#"
4 (
2   !! "567"

2 * 0- 8+  !! 9;
  ! "#"
4 *
 +  *  

Metoda 
 jest wywoywana, gdy zwolnimy wcinity wczeniej klawisz.
Nie moemy jednak po prostu przypisa zmiennej  
 wartoci 
(ktra oznacza, e rakieta si nie porusza), poniewa metoda byaby wywoywana
nawet wtedy, kiedy zwolnilibymy inny klawisz, np. spacj. Najpierw naley sprawdzi,
ktry klawisz zosta zwolniony oraz jaka jest aktualna warto zmiennej  
.
Jeli warto zmiennej  
 to  , a kod ASCII zwolnionego klawisza 
(klawisz strzaki w lewo), oznacza to, e zwolnilimy wcinity wczeniej klawisz
strzaki w lewo. Podobnie ma si sprawa z klawiszem strzaki w prawo.
Musimy jeszcze przypisa obiekt  do klawiatury komputerowej jako
obiekt nasuchu:


%
 & ' + ()

* 0++
 *()


11. Aby kod by kompletny, musimy jeszcze stworzy funkcj, ktra przeksztaci
warto zmiennej  
 w konkretne dziaanie, czyli ruch rakiety:
#   
<  
=
2 
  +  3
>/)
(
+)
+
- % 


0- + 

Pamitamy etykiety w symbolu Rakieta? Ich nazwy odpowiadaj dokadnie wartociom,


jakie przyjmuje zmienna  
, dziki czemu moemy od razu przeksztaci
warto tej zmiennej w konkretny obrazek rakiety.
)
 '  
3
 "#"?  ' ) ( )

0@ A! :

2 
0@ B CD 
0@ ! CD
% 
 "567"?  ' ) )

0@ E! :

2 
0@ F - 0)
+'GCD

0@ ! - 0)
+'GCD
% 
4
4 *
2  
 + 

42

Flash MX. wiczenia zaawansowane

W zalenoci od wartoci zmiennej  


 przemieszczamy odnonik
do symbolu Rakieta w lewo lub w prawo. Instrukcje warunkowe  zapewniaj,
e rakieta nie wyjedzie poza obszar ekranu animacji (ograniczenie 50 pikseli
od lewej oraz prawej krawdzi).
12. Mamy ju wszystkie niezbdne funkcje i obiekty, dziki ktrym moemy kontrolowa

animacj rakiety. Teraz musimy jeszcze stworzy sam animacj. We Flashu 5


wizaoby si to z dodaniem kolejnych klatek do projektu oraz zaptleniem animacji,
tak jak zrobilimy w poprzednich dwch rozdziaach, tworzc animacj obiektw 3D.
Flash MX ma jednak bardzo przydatn funkcj  !, dziki ktrej moemy
wywoywa funkcje oraz metody obiektw w cile okrelonych odstpach czasu.
Poniewa w naszym przypadku funkcj animujc jest ", wystarczy wywoywa
j z odstpem, powiedzmy, 50 ms (milisekund, 1ms = 1/1000 sekundy). Piszemy wic:
8(
 ))&
 2  
 + 
 5  H( + , CD

13. Warto 50 ms oznacza, e funkcja " bdzie wywoywana 20 razy na sekund.

Musimy jeszcze ustali tak sam prdko odtwarzania animacji Flasha, aby bya
pynna. Moemy zrobi to poprzez kliknicie w obszarze roboczym, a nastpnie
ustawienie w panelu Properties wartoci Frame Rate na 20.
Moemy rwnie otworzy okno Document Properties i tam dokona stosownej zmiany.
Projekt jest ju gotowy i moemy go opublikowa. Przykadowe wykonanie tego wiczenia
znajdziemy w katalogu Rozdzial03/Gotowe.
W podobny sposb komputer moe kontrolowa przeciwnikw w grze. Jednak o tym opowiemy w rozdziale 6. Inteligentni przeciwnicy.

Sterowanie zoon postaci


Animacja rakiety, ktr wykonalimy w poprzednim rozdziale, bya doskonaym przykadem sterowania postaci niezbyt skomplikowan. Jednak podczas tworzenia ciekawych
gier mamy do czynienia z postaciami, ktre s o wiele bardziej zoone.
Przez postacie zoone bdziemy rozumieli takie, ktre w celu oddania poszczeglnych
stanw dysponuj nie pojedynczym obrazkiem, ale ca animacj, ktr musimy wywietli
w odpowiednim momencie. Powracajc do przykadu z rakiet, moglibymy tak zmieni
symbol rakiety, aby przy skrcie w lewo pokazana bya animacja pochylania si obiektu
na lewe skrzydo, a po zwolnieniu klawisza jego powrt do stanu pocztkowego.
wiczenie 3.2.

W tym rozdziale wykonamy animacj postaci bawana, ktry jest czci gry Snow
Wars. Gr moemy znale w katalogu Gry. Proponujemy zagra w ni, aby zobaczy,
jak wyglda animacja bawana.

Rozdzia 3.  Kontrola oraz animacja postaci

43

1. Otwrzmy we Flashu MX projekt Balwan.fla, ktry znajdziemy w katalogu

Rozdzial03/Cwiczenia.
Po otwarciu projektu zobaczymy na rodku obszaru roboczego posta,
ktr bdziemy animowa (patrz rysunek 3.5).
Rysunek 3.5.
Posta bawana,
ktr bdziemy
animowa

Bawan bdzie posiada kilka faz ruchu. Faza typu STAND oznacza, e bawan stoi
w miejscu. Bdzie temu towarzyszya animacja podrygujcego bawana powtarzana
bez przerwy, jeli uytkownik nie nacinie adnego klawisza sterujcego.
Druga faza typu WALK oznacza, e bawan porusza si w prawo lub w lewo (poniewa
posta jest narysowana w rzucie pseudoizometrycznym, rzeczywicie bdzie si
porusza po skosie ekranu). Fazie tej towarzyszy animacja poruszajcego si bawana.
Jest ona odtwarzana bez przerwy, jeli gracz trzyma wcinite klawisze kierunkowe
(klawisz strzaki w lewo lub strzaki w prawo).
Trzecia faza ruchu nazywa si faz TAKE i oznacza, e bawan podnosi niek
z ziemi. Fazie tej towarzyszy animacja bawana schylajcego si po niek.
Animacja ta jest odgrywana tylko raz, gdy gracz nacinie spacj.
Zanim bawan bdzie mg po raz kolejny podnie niek, musi najpierw wyrzuci
trzyman, co jest czwart i ostatni faz ruchu bawana o nazwie THROW. Fazie tej
towarzyszy animacja, w ktrej bawan wyrzuca niek (wykonuje odpowiedni ruch,
animacj samej nieki nie bdziemy si zajmowa). Animacja ta jest wywietlana
tylko jeden raz, po naciniciu spacji.
Pomidzy fazami TAKE oraz THROW zachodzi nastpujcy zwizek: naciskamy spacj
bawan podnosi niek (faza TAKE), naciskamy spacj po raz drugi bawan
wyrzuca niek (faza THROW), znw naciskamy spacj bawan podnosi niek
(faza TAKE) itd. Jak wic wida, do spacji s przypisane na zmian dwie animacje.
2. Przejdmy do trybu edycji symbolu bawana poprzez wybranie z podrcznego menu

odnonikw polecenia Edit.

44

Flash MX. wiczenia zaawansowane

Zobaczymy, e animacje poszczeglnych faz ruchu s ju gotowe oraz umieszczone


kolejno po sobie (patrz rysunek 3.5). Naszym zadaniem bdzie wic jedynie
odpowiednia synchronizacja poszczeglnych faz animacji.
Gdy tworzymy animowane postacie, poszczeglne fazy animacji s zazwyczaj zapisane
w jednej duej animacji, tak jak w naszym przypadku. Zadaniem programisty jest odpowiednie
ich rozdzielenie.
3. Jeli opublikujemy teraz animacj, zobaczymy, e wywietlane s po kolei poszczeglne

fazy ruchu. Wiemy jednak, e podczas bezczynnoci gracza powinna by wywietlana


jedynie faza STAND.
Aby tak si stao, bdc w trybie edycji symbolu bawana, wyselekcjonujmy
w panelu Timeline pit klatk animacji na warstwie Akcje (patrz rysunek 3.6),
a nastpnie za pomoc panelu Actions dodajmy do ujcia kluczowego znajdujcego
si w tej klatce nastpujcy prosty skrypt:
=(

 
) 2
I1
- +("I1"

Rysunek 3.6.
Naley zaptli animacj
fazy STAND, aby podczas
braku aktywnoci gracza
bawan nie wykonywa
zbdnych ruchw
4. Powrmy do animacji gwnej, wybierajc z menu Edit polecenie Edit Document.

Wyselekcjonujmy odnonik bawana znajdujcy si w obszarze roboczym i za pomoc


panelu Properties nadajmy mu nazw SNOWMAN.
5. Stwrzmy teraz now warstw i nadajmy jej nazw Akcje. Na warstwie umiecimy

cay kod ActionScript, ktry bdzie kontrolowa bawana.


6. Wyselekcjonujmy pierwsze ujcie kluczowe na warstwie Akcje, otwrzmy panel

Actions, a nastpnie rozpocznijmy wprowadzanie kodu:



  /(<   %&) 
  ! "I1"
J 
2< ,  %&) 
+ /
.=   .

I$>K ! 2( 

Zmienna  
 powinna by ju znana, poniewa korzystalimy z niej
w poprzednim projekcie. Bdzie ona przyjmowaa jedn z piciu wartoci:  #
bawan nieruchomy,  bawan porusza si w lewo,   bawan porusza
si w prawo,  bawan podnosi niek, $% bawan wyrzuca niek.
Zmienna #$%& przyjmuje warto , jeli bawan ma niek (czyli podnis
j wczeniej), oraz  , jeli nieki nie ma. Jest ona potrzebna do prawidowego
okrelenia wartoci zmiennej  
 po naciniciu przez gracza klawisza
spacji.
7. Naley teraz stworzy obiekt nasuchu, ktry przypiszemy do klawiatury
(reprezentowanej przez obiekt ) oraz zdefiniowa jego metody 
oraz 
:

Rozdzia 3.  Kontrola oraz animacja postaci

45

)
%
 & ' +( ()

*()
 ! ) $% 
J + ) ) , -+ -  )
/

+)(  ()

*()
0 * 1) ! 2 
  3

2 * 0
1) * 0#
  ! "#"
(
2 * 0
1) * 0567
  ! "567"
(
2 * 0
1) * 08

2 LI$>K
  ! "*"
(   ! "7$>"
4 *
 +  * 1)

Jak wida, warto zmiennej  


 cile zaley do tego, ktry klawisz
wciniemy. W przypadku spacji sprawdzana jest dodatkowo zmienna #$%&,
ktra decyduje, czy bawan znajduje si w fazie  czy te $%. Warto zmiennej
#$%& ustalamy bezporednio w kodzie symbolu bawana.
Dalej piszemy:
J + ) ) , -+ -  )(

)
/
= )  /
 ()

*()
0 *   ! 2 
  3

2   !! "#"
3

2 * 0- 8+  !! 9: *()
? & ) ( )
  ! "I1"
4
(
2   !! "567"
3

2 * 0- 8+  !! 9; *()
? & ) )
  ! "I1"
4
(
2   !! "*" MM   !! "7$>"

2 * 0- 8+  !! 9N *()
?  
  ! "I1"
4 *
 +  *  

Przy zwolnieniu klawisza sprawdzamy warto zmiennej  


 oraz kod
zwolnionego klawisza. Kod klawisza oraz warto zmiennej musz si zgadza,
aby bawan mg przej do fazy  #.
Musimy jeszcze przypisa obiekt nasuchu do obiektu , ktry reprezentuje
klawiatur.


%
 *()

 %
 & ' + %
 * 
* 0++
 *()


Pora stworzy funkcj, ktra zamieni warto zmiennej  


 na odpowiedni
animacj oraz ruch bawana. W przykadzie z rakiet bya to funkcja ",
ktra przeksztacaa warto zmiennej  
 bezporednio w odpowiedni
obraz statku kosmicznego.

46

Flash MX. wiczenia zaawansowane

Niestety, w tym przypadku nie moemy sobie na to pozwoli, poniewa poszczeglne


fazy animacji nie posiadaj jednego obrazu. Gdybymy zastosowali takie rozwizanie,
przy czstotliwoci wywoa funkcji " 20 razy na sekund nie bylibymy w stanie
wywietli wicej ni jedn klatk animacji kadej z faz.
Musimy wic stworzy mechanizm, ktry zabezpieczy nas przed wystpieniem takiej
sytuacji. Dodamy do kodu ActionScript symbolu bawana now zmienn o nazwie
' , ktra bdzie informowaa kod, w jakiej fazie animacji znajduje si bawan
w danym momencie.
8. Przejdmy do trybu edycji symbolu bawana, a nastpnie wyselekcjonujmy pierwsz

klatk animacji na warstwie Akcje i dodajmy do niej skrypt:


# 
 
 I1

 ! "I1"

Warto  # zmiennej ' oznacza, e bawan znajduje si w pierwszej


fazie animacji.
9. Wyselekcjonujmy teraz szst klatk animacji, w ktrej znajduje si ujcie kluczowe
z etykiet % i dodajmy do niego kod:
# 
 
 >*

 ! ">*"

natomiast do ostatniej klatki animacji tej fazy (klatka 11.) (patrz rysunek 3.7)
dodajmy kod:
=(

 
) 2
>*
- +(">*"

Rysunek 3.7.
Kada faza animacji zaczyna
si od ujcia z etykiet,
a koczy na nastpnym
ujciu kluczowym

W pierwszym przypadku ustawiamy warto zmiennej ' na %,


co oznacza, e bawan znajduje si w drugiej fazie ruchu, a nastpnie zaptlamy
animacj tej fazy ruchu, aby uzyska pynno.
10. Wyselekcjonujmy teraz klatk dwunast, w ktrej mamy ujcie kluczowe z etykiet
 oznaczajce pocztek animacji fazy , po czym do tego ujcia wstawmy kod:
# 
 
 *

 ! "8"

Jak wida, zmienna ' przyjmuje teraz warto (, ktra bdzie okrelaa
trzeci oraz czwart faz ruchu bawana. Rozgraniczenie tych faz ruchu nastpi
w funkcji " i nie ma sensu robienie tego teraz.
Wyselekcjonujmy koczce faz  ujcie kluczowe, ktre znajduje si w klatce
dwudziestej. Dodajmy do niego kod:
*
2 *
K&)  /
.=

 ! "I "
0I$>K !  


Rozdzia 3.  Kontrola oraz animacja postaci

47

W tym ujciu zmieniamy warto zmiennej ' na #


, aby poinformowa
funkcj sterujc, e faza ruchu  lub $% skoczya si, ale nie zacza si
jeszcze inna faza ruchu. Dziki wartoci zmiennej #$%& po zakoczeniu fazy
 ustawianej na  wiemy, z ktr faz mamy do czynienia. Na koniec
animacja zostaje zatrzymana, aby nie wywietla kolejnych klatek.
11. Pozostaa nam jeszcze ostatnia faza ruchu, ktra zaczyna si w klatce dwudziestej

pierwszej. Wstawmy do niej kod:


# 
 
 7$>

 ! "8"

W ostatniej klatce animacji bawana umiemy kod:


*
2 7$>
K&)
 /
.


 ! "I "
0I$>K ! 2( 


Kod ten jest bardzo podobny do umieszczonego w ujciu koczcym faz ruchu
, z t rnic, e teraz warto zmiennej #$%& ustawiamy na  ,
co oznacza, e bawan nie ma nieki.
12. Animacja symbolu bawana jest ju gotowa, przejdmy wic do edycji animacji

gwnej. Wyselekcjonujmy pierwsz klatk na warstwie Akcje i otwrzmy panel


Actions, a nastpnie rozpocznijmy dopisywanie kodu na dole tego, ktry znajduje
si ju w panelu:
#   )/)
(<  +)
+

  %&) 
2 
  +  3

2 I$>JI0
 L! "8"
3

Jak wida, pierwsz czynnoci wykonywan przez kod jest sprawdzanie wartoci
zmiennej ' odnonika #$%)#. Jeli warto tej zmiennej wynosi (,
oznacza to, e w tym momencie bawan albo podnosi niek, albo j wyrzuca.
Funkcja nie zrobi wic nic, dopki animacje tych dwch faz ruchu nie zostan
zakoczone. Dalej piszemy:
)
 '  
3
 "I1"? # I1

2 I$>JI0
 L! "I1"
I$>JI0- +("I1"
% 

Jeli warto zmiennej  


 wynosi  #, sprawdzana jest warto zmiennej
' odnonika #$%)#. Zapobiega to rozpoczynaniu animacji fazy  #
kilkanacie razy na sekund, czego skutkiem byoby jedynie wywietlanie pierwszej
klatki animacji. Jeli zmienna ' odnonika #$%)# wynosi  #, znaczy
to, e animacja pierwszej fazy zostaa ju rozpoczta i jest w trakcie odtwarzania.
Dalej piszemy:
 "#"? # >*
I$>JI0@ A! O
I$>JI0 A! 9

48

Flash MX. wiczenia zaawansowane



2 I$>JI0
 L! ">*"
I$>JI0- +(">*"
% 
 "567"? # >*
I$>JI0@ E! O
I$>JI0 E! 9

2 I$>JI0
 L! ">*"
I$>JI0- +(">*"
% 

W powyszym fragmencie kodu, jeli zmienna  


 wynosi  ,
przesuwamy odnonik bawana w lewo o sze jednostek oraz do gry o trzy jednostki
(wymaga tego pseudoizometryczny rysunek bawana). Odtwarzana jest rwnie
animacja fazy % z zabezpieczeniem identycznym jak omwione przed chwil.
Jeli warto zmiennej  
 wynosi   , odnonik #$%)# przesuwamy
o sze jednostek w prawo oraz o trzy jednostki w d obszaru roboczego. Odtwarzamy
do tego animacj fazy %. W powyszym kodzie brakuje zabezpieczenia przed
wyjciem bawana poza obszar roboczy animacji. Jest ono bardzo proste do wykonania.
Gdy bawan porusza si w lewo, powinnimy jedynie sprawdzi, czy jego zmienna
* nie jest mniejsza od pewnej wartoci. W przypadku, w ktrym bawan porusza
si w prawo, sprawdzamy, czy zmienna * odnonika #$%)# nie jest wiksza
od pewnej wartoci.
Zostay nam jeszcze dwie fazy ruchu:
 "*"? # *

2 LI$>K
I$>JI0- +("*"
% 
 "7$>"? # 7$>

2 I$>K
I$>JI0- +("7$>"
% 
4
4
4 *
2  
 + 

W fazie  nie przesuwamy bawana, poniewa podnosi on niek, stojc w miejscu.
Wywietlamy jedynie animacj fazy  i to pod warunkiem e bawan nie ma nieki
(zmienna #$%& wynosi  ). Zabezpiecza to przed sytuacj, w ktrej bawan
mgby dwa razy podnie niek. Pamitajmy, e zmienna #$%& jest ustawiana
na , gdy zakoczy si animacja fazy .
W fazie $% podobnie jak w fazie  nie przesuwamy bawana. Wywietlamy
animacj $% i to tylko wtedy, gdy bawan ma niek (czyli gdy zmienna #$%&
posiada warto ). Przedstawiony mechanizm zabezpiecza bawana przed prb
kilkukrotnego wyrzucenia nieki bez fazy . Zmienna #$%& jest ustawiana
na  , gdy wywietlona zostanie ostatnia klatka animacji fazy $%.
Dziki kodowi kontrolujcemu animacj fazy  oraz $% moemy wcisn
spacj i, przytrzymujc j, obserwowa jak bawan kolejno schyla si po niek,
wyrzuca j, ponownie bierze niek, wyrzuca j i tak bez przerwy, dopki nie
zwolnimy spacji.

Rozdzia 3.  Kontrola oraz animacja postaci

49

13. Pozostao jeszcze wywoanie funkcji  !, ktra w okrelonych odstpach


czasu bdzie wywoywa funkcj ". Piszemy wic:
 -( ))&
 2  
 + 
 5  H( + , CD

a nastpnie w oknie Document Properties (Modify / Document) ustalamy prdko


animacji na 20 klatek na sekund.
Animacja jest ju gotowa i moemy j opublikowa. Gotow animacj FLA, ktra powstanie po wykonaniu powyszego wiczenia, moemy znale w pliku SterowanieBalwanem.fla w katalogu Rozdzial03/Gotowe.

Sterowanie postaci za pomoc myszy


W dwch wiczeniach, ktre wykonalimy w tym rozdziale, poznalimy sposoby sterowania postaci bezporednio za pomoc klawiatury. Czsto jednak zdarza si, e wygodniej jest sterowa mysz. Mwimy tutaj o sytuacji, w ktrej kady ruch myszy przekada
si bezporednio na pooenia oraz orientacj postaci.
Nie chodzi o sytuacj, w ktrej klikamy mysz map, a nastpnie posta idzie do wskazanego
punktu. Ten sposb sterowania zakwalifikowalibymy do sterowania postaci zoon,
z t rnic, e postaci nie steruje gracz, lecz komputer.

W tym rozdziale poznamy prosty sposb sterowania postaci za pomoc kursora myszy.
Dowiemy si rwnie, jak tworzy animacj pociskw, ktre s nieodzownym elementem
gier-strzelanek.
wiczenie 3.3.

Naszym zadaniem bdzie stworzenie animacji, w ktrej dziao znajdujce si na rodku


obszaru roboczego w widoku z gry, bdzie si obracao zgodnie z ruchem celownika
przypisanego do kursora myszy. Po naciniciu lewego przycisku myszy z dziaa zostanie
wystrzelony pocisk leccy w okrelonym kierunku (patrz rysunek 3.8). Gotow animacj
SWF, ktra bdzie efektem naszej pracy w tym wiczeniu, mona znale w pliku Dzialo.
swf w katalogu Rozdzial03/Gotowe.
Rysunek 3.8.
Animacja dziaa
obracajcego si
za kursorem myszy

50

Flash MX. wiczenia zaawansowane

1. Otwrzmy we Flashu projekt Dzialo.fla, ktry znajduje si w katalogu

Rozdzial03/Cwiczenia.
Animacja zawiera trzy warstwy. Na warstwie Dziao znajduje si odnonik do symbolu
Dzialo o nazwie CANNON. Na warstwie Kursor znajdziemy odnonik do symbolu
Kursor o nazwie Cursor, ktry bdzie reprezentowa kursor myszy w tej animacji.
Warstwa Akcje, jak atwo si domyli, bdzie zawieraa kod ActionScript kontrolujcy
animacj (patrz rysunek 3.9).
Rysunek 3.9.
Zawarto pliku
Dzialo.fla

W bibliotece projektu, oprcz dwch wymienionych wczeniej symboli, znajdziemy


jeszcze symbol Kula, ktry reprezentuje pocisk wystrzelony przez dziao.
2. Przejdmy teraz do trybu edycji symbolu Dzialo.

Znajdziemy tam animacj klatka po klatce skadajc si z 72 uj kluczowych,


przedstawiajc obrt dziaa o 360 stopni. W kadej kolejnej klatce dziao jest
obrcone o 5 stopni (patrz rysunek 3.10).
Rysunek 3.10.
Animacja w symbolu
dziaa skada si
z 72 bitmap, z ktrych
kada prezentuje dziao
obrcone o 5 stopni
zgodnie z ruchem
wskazwek zegara

Rozdzia 3.  Kontrola oraz animacja postaci

51

Animacja powstaa, poniewa obraz dziaa zosta stworzony w programie do


modelowania 3D. Obiekt dziaa by owietlony rdem wiata, ktre znajduje si
w prawym grnym rogu dziaa. Aby animacja bya w miar realistyczna, naleao
stworzy odpowiedni liczb obrazkw dziaa dla kadej fazy obrotu przy zachowaniu
rozsdnej liczby obrazkw.
Gdybymy mieli tylko jeden obrazek, ktry obracalibymy dookoa, obracaoby si
rwnie rdo wiata, co wygldaoby mao realistycznie.
W kodzie ActionScript, ktry stworzymy, bdziemy musieli uwzgldni t budow
symbolu Dzialo.
3. Powrmy do animacji gwnej, wyselekcjonujmy pierwsze ujcie kluczowe

na warstwie Akcje, otwrzmy panel Actions i rozpocznijmy wprowadzanie kodu


kontrolujcego animacj dziaa:
 
)P
 

J 0'
+ 


()
 + 
8 $01- 

Pierwsz rzecz, jak zrobimy, bdzie stworzenie nowego wizerunku kursora myszy.
W grach komputerowych, w ktrych wykorzystywana jest mysz, rzadko kiedy mamy
do czynienia z typowym windowsowskim kursorem, czyli strzak. Z reguy programici
tworz wasny kursor (czasami wicej ni jeden), ktry jest bardziej odpowiedni
w danej sytuacji. Podobnie bdzie w naszym przypadku.
Dziki metodzie +" obiektu Mouse ukrywamy oryginalny kursor myszy, gdy znajduje
si wewntrz obszaru roboczego animacji. Natomiast dziki metodzie ,
odnonika (
$ przypisujemy go do niewidocznego ju kursora. Warto 
bdca argumentem wywoania metody , powoduje, e wsprzdne
pooenia kursora oraz wsprzdne pooenia odnonika (
$ s identyczne.
4. Teraz musimy ustali wsprzdne rodka obszaru roboczego, poniewa wszystkie

obliczenia wykonywane przez program odnosi si bd do tego punktu. Piszemy wic:


>Q&=+ /+ % %  -
8R ! - 0)
+'  N
8 ! - 0'
-'  N
8II$I0@ ! 8R 8II$I0 ! 8

Powyszy kod powinien by jasny. Warto jedynie zaznaczy, e po ustaleniu


wsprzdnych rodka (- oraz ( przenosimy do niego odnonik (##$#, aby mie
pewno, e nie bdzie problemw wynikajcych z niewaciwego pooenia dziaa
w obszarze roboczym.
5. Teraz przejdziemy do najtrudniejszej czci naszego projektu kodu, ktry obliczy

kt obrotu dziaa w zalenoci od pooenia kursora myszy na ekranie. Kod bdzie


zawarty w metodach reagujcych na dziaania uytkownika wykonywane mysz.
Piszemy wic:
$%
 & ' 
J ! ) $% 
J + ))&) , -+  <
J0 J JH ! 2 
  3

52

Flash MX. wiczenia zaawansowane

Podobnie jak miao to miejsce w przypadku kontroli obiektu za pomoc klawiatury,


tworzymy obiekt nasuchu, ktry zostanie przypisany do obiektu Mouse reprezentujcego
mysz. Metoda ) )! obiektu ) . zostanie wywoana, gdy tylko poruszymy
mysz, podczas gdy jej wskanik bdzie znajdowa si w obszarze roboczym
animacji SWF.
6. W kodzie metody ) )! musimy obliczy na podstawie pooenia kursora

myszy kt alfa, o jaki bdziemy chcieli obrci dziao. Do oblicze wykorzystamy


waciwoci trjkta prostoktnego oraz funkcji trygonometrycznych obiektu Math
(patrz rysunek 3.11):
Rysunek 3.11.
Aby obliczy kt alfa,
o jaki powinno obrci
si dziao, posuymy si
zasadami trygonometrii

  R   )P


 
R$ ! 0@ A 8R $ ! 0 A 8
 )
 +( -&/S  +   8R, 8
78 ! J'0TR$UR$E$U$
*
  
 < 7
78$ ! R$78 75I ! $78
>/S < 7 ) 
 '
76 ! J'0 78$UVWDJ'05

2 75I B D 76 ! A76

Zgodnie z rysunkiem 3.11 do obliczenia kta musimy zna wartoci pooenia kursora
myszy wzgldem rodka obszaru roboczego, czyli warto -$ oraz $, a nastpnie
dugo przeciwprostoktnej trjkta prostoktnego (, ktra jest rzeczywist
odlegoci (w linii prostej) pomidzy punktami /(-01(2 oraz (-$01$2.
Gdy znamy te wartoci, obliczamy sinus oraz kosinus kta alfa, po czym korzystajc
z metody 3 (arc cosine) obiektu Math, obliczamy warto kta alfa w radianach
z zakresu od 0 do (czyli 180 stopni). Pomnoenie otrzymanej wartoci przez 180/
zamieni j z radianw na stopnie, a my potrzebujemy wartoci kta alfa w stopniach.
Dziki metodzie 3 obiektu Math dowiemy si jedynie, e kt alfa to warto
z przedziau od 0 do 180 bd te 0 do 180. Aby dokadnie okreli przedzia,
posugujemy si obliczon wczeniej wartoci sinusa kta alfa. Jeli sinus jest dodatni,
to kt alfa pochodzi z przedziau 0 do 180. Jeli sinus jest ujemny, to alfa pochodzi
z przedziau 180 do 0. Wszystko jasne. Znamy warto kta alfa, o jaki powinno
obrci si dziao.

Rozdzia 3.  Kontrola oraz animacja postaci

53

7. Jeli spojrzymy na odnonik dziaa, to zobaczymy, e zerowe pooenie dziaa

(pierwsze ujcie kluczowe) odpowiada ktowi 90 stopni. Dzieje si tak dlatego,


e ktowi 0 odpowiada punkt pooony na osi X. Wartoci dodatnie kta obrotu
rosn wraz z kierunkiem obrotu wskazwek zegara, poniewa o Y jest skierowana
do dou (wysze wartoci na osi Y ekranu znajduj si niej ni wartoci nisze,
punkt 0 osi Y to grna krawd obszaru roboczego).
Dlatego musimy zmodyfikowa obliczon warto kta alfa, uwzgldniajc zerowe
pooenie dziaa. Rwnanie jest bardzo proste i wyglda nastpujco:
J+2
  < 7  )-(=+  
 = +
&
7#5I ! 76 E ;D

8. Gdybymy zamiast animacji zawierajcej 72 ujcia kluczowe, mieli tylko jeden

rysunek dziaa, ktry obracalibymy dookoa, to sam kod animacji byby trywialny
i wygldaby nastpujco:
8II$I0
 ! 7#5I

Niestety, nie jest to takie proste, poniewa naszym zadaniem nie bdzie obracanie
odnonika, ale zadecydowanie, ktre ujcie animacji dziaa wywietli. Musimy przy
tym pamita, e kolejne ujcia animacji dziaa pokazuj obiekt obrcony o 5 stopni,
a zatem dziao bdzie skierowane na kursor myszy z dokadnoci do 5 stopni.
Piszemy wic:
 + 

2 75I F D
3
X)
 V  N
2 
  ! V;
  B CC
 EE

2 
 UC F 7#5I
3
8II$I0- +
 
% 
4

Powyszy kod dotyczy pierwszej oraz drugiej wiartki ukadu wsprzdnych


o rodku w punkcie /(-01(2. Kod sprawdza po prostu, w ktrym z 5-stopniowych
przedziaw obrotu znajduje si warto kta alfa i wywietla ujcie w odnoniku
(##$# o odpowiednim numerze. Warto zmiennej  bezporednio okrelajca
numer ujcia do wywietlenia zostaa dobrana w ten sposb, poniewa tylko te ujcia
wywietlaj dziao, ktrego kt obrotu znajduje si w przedziale 0 180 stopni.
Pora na wiartk trzeci i czwart:
4 ( 3
2 
  ! V
  B V;
 EE

2 7#5I F D
3
X)
 Y

2 
 UC F 7#5I
3
8II$I0- +
 
% 
4

54

Flash MX. wiczenia zaawansowane


4 ( 3
X)
 9

2A
 UC B 7#5I
3
8II$I0- +:NA
 
% 
4
4
4
4 *
 +  J JH

W przypadku wiartki czwartej kod wyglda bardzo podobnie do omwionego


poprzednio, natomiast wiartk trzeci traktujemy jak lustrzane odbicie wiartki
czwartej. Funkcja obracajca dziao w kierunku kursora myszy jest ju gotowa.
9. Aby zobaczy, jak dziaa stworzony kod, powinnimy obiekt nasuchu ) .
przyczy do obiektu )  reprezentujcego mysz:


%
 & ' + 
J 0++
 J

Gotowe. Moemy teraz opublikowa animacj, aby przekona si, czy dziaa poprawnie.
Przesuwajc kursor myszy po ekranie, bdziemy mogli zobaczy, e dziao rzeczywicie
obraca si za nim. Jeli bdziemy kursor przesuwa bardzo powoli, zobaczymy rwnie,
e dziao nie obraca si dokadnie, lecz ze skokiem 5-stopniowym.
W pliku Dzialo_FazaI.fla znajdujcym si w katalogu Rozdzial03/Gotowe znajdziemy
animacj rdow Flasha MX, ktra powinna powsta po wykonaniu powyszego wiczenia.
wiczenie 3.4.

Rozpocznijmy teraz drug cz projektu, czyli umoliwienie uytkownikowi strzelania


z dziaa po naciniciu lewego przycisku myszy. Koncepcja jest nastpujca: jedno nacinicie lewego przycisku myszy powoduje wystrzelenie pocisku leccego w kierunku
punktu, w ktrym znajduje si kursor myszy. Gdy pocisk opuszcza widoczn cz obszaru
roboczego, zostaje usunity.
1. Kontynuujemy prac z projektem, ktry wykonalimy w poprzednim wiczeniu.

Wyselekcjonujmy wic pierwsze ujcie kluczowe na warstwie Akcje i otwrzmy


panel Actions.
Najpierw musimy stworzy kilka zmiennych kontrolujcych liczb pociskw, ktre
moemy wystrzeli z dziaa, oraz ich zachowanie. Umiemy wic kursor tekstowy
na samym pocztku kodu i piszmy:

  /(<  ( < (
%= &Q)
7$$JR ! VD

  /(<  ( < (
%= &Q)
7$$8  ! D

  /(<  )Q& 
 =+/S 

7$$1 ! D0N

Rozdzia 3.  Kontrola oraz animacja postaci

55

Zmienna $$ )- nie okrela tego, ile razy dziao moe wystrzeli, ale ile pociskw
jednoczenie moe znajdowa si na ekranie. Musimy zdawa sobie spraw z tego,
e pociski bdziemy tworzy poleceniem 3+)!. Okrelamy w nim midzy
innymi warstw, na ktrej znajdzie si stworzony odnonik. Numer tej warstwy
nie moe kolidowa z warstwami innych obiektw stworzonych za pomoc
ActionScript.
Teoretycznie moglibymy kady nowo utworzonym pocisk umieszcza na nowej
warstwie, ale jeli projekt ma by gr, ktra zawiera bdzie oprcz dziaa i pociskw
take inne elementy graficzne, to szybko mogoby doj do konfliktu, gdyby pocisk
usun obiekt stworzony wczeniej. Z drugiej strony, prdko, z jak lec pociski,
wyraona wspczynnikiem $$ , powoduje, e na ekranie bdzie znajdowa
si jednoczenie z gry okrelona liczba pociskw, wic moemy spokojnie j
ograniczy. Gdy jaki pocisk zniknie z ekranu i zostanie usunity, jego warstwa jest
znw wolna i mona j wykorzysta dla nowych pociskw.
Aktualn warstw, na ktrej powstanie nowy pocisk, okrela zmienna $$ (
.
2. Teraz umiemy kursor tekstowy poniej kodu metody ) )! obiektu ) .,
ale przed kodem: ) 4"" /) .25 i zacznijmy pisa:
*+  + ))&) , -+ )
/
 ( ) 
 
J0 J 1) ! 2 
  3

Oczywicie, jak atwo si domyli, cay kod generujcy i kontrolujcy pociski


zostanie umieszczony wewntrz metody ) , ktra jest wywoywana,
gdy tylko wciniemy lewy przycisk myszy.
)
) - + /
  %(  51 K(( 
0 'JH
"K(( ", "'"E7$$8 ,
VDE7$$8 

Powyszy wiersz kodu tworzy nowy odnonik na bazie symbolu Movie Clip, ktrego
identyfikator eksportu zosta ustalony na Bullet (o tym identyfikatorze opowiemy
dokadniej za chwil). Nazw odnonika, ktry zostanie stworzony, bdzie ShootNumerWarstwy, czyli np. Shoot0, Shoot1, Shoot2 itd., a warstw, na ktrej znajdzie
si kula, okrelamy prostym rwnaniem 678$$ (
. Warto staa w tym
rwnaniu zapewnia, e nie bdzie problemw, jeli na warstwach Flasha MX
w procesie edycji animacji umiecimy wicej obiektw ni w naszym projekcie.
Nowy odnonik musimy odpowiednio uoy w obszarze roboczym:
 (
&.
 ) - 

H("'"E7$$8 0@ ! 8RE78$UOC
H("'"E7$$8 0 ! 8E75IUOC

Bdzie si on znajdowa na okrgu o rodku w punkcie /(-01(2 oraz o promieniu


65 jednostek. O dokadnym pooeniu zdecyduj warto ($ oraz  #,
ktre, jak pamitamy, obliczamy przy kadym wywoaniu metody ) )!.
Pozostao jeszcze stworzenie zmiennych, ktre okrel prdko pionow oraz poziom,
z jak bdzie porusza si pocisk po wystrzeleniu:
 (
=+/

   
 )  ) - 

H("'"E7$$8 0R1 ! 7$$1U78$UOC
H("'"E7$$8 01 ! 7$$1U75IUOC

56

Flash MX. wiczenia zaawansowane

3. Wszystkie dane, ktrych potrzebuje pocisk do poprawnej animacji, zostay ju

obliczone. Musimy teraz stworzy mechanizm, dziki ktremu pocisk bdzie


przesuwa sam siebie i sam bdzie wiedzia, kiedy si zniszczy.
Nic prostszego, jeli bdziemy pamitali, e pocisk to odnonik do symbolu Movie Clip,
a wic moe posiada wasne metody. Skorzystamy tutaj z metody  ',
ktrej zalet jest to, e jej kod jest wykonywany za kadym razem, gdy Flash Player
wywietli now klatk animacji. Piszemy wic:
J + 
<  + /
 ))&)  ) .+ 
( 
 

H("'"E7$$8 0   # ! 2 


  3
 
=
+ /

'
0@ E! '
0R1 '
0 E! '
01
 
=
+ /
,  /(
/
& )
+   %

2 '
0@ B D MM '
0@ F - 0)
+' MM
'
0 B D MM '
0 F - 0'
-'
'
0 H JH
8(

4 *
 +    #

Jak wida, kod metody  ' stworzonego wczeniej odnonika przesuwa
go w odpowiednim kierunku, po czym, jeli pocisk opuci obszar dozwolony,
usuwa go z animacji.
4. Pozostao jeszcze dodanie kodu kontrolujcego warto zmiennej $$ (
,

okrelajcej warstw, na ktrej powstanie nowy pocisk. Ten kod wyglda nastpujco:
)
=
 
+ 2
< - 

7$$8 EE
)+
, 
) (   /(  (
% 
Q)
Z /(
,   
+ 2
< 


   +  

2 7$$8  F 7$$JR 7$$8  ! D
4 *
 +  J 1)

Kod ActionScript jest ju gotowy. Musimy jeszcze okreli identyfikator symbolu


Kula, ktry jest pociskiem. Jest to konieczne, jeli w obszarze roboczym chcemy
wstawi odnonik do symbolu, ktry nie ma innego odnonika w obszarze roboczym
(gdyby by inny odnonik, moglibymy skorzysta z metody "3)!(
obiektu MovieClip).
Otwrzmy bibliotek naszego projektu, a nastpnie dla symbolu Kula wywietlmy
podrczne menu i wybierzmy z niego polecenie Linkage (patrz rysunek 3.12).
Gdy pojawi si okno Linkage Properties, uaktywnijmy opcj Export for ActionScript
i w polu tekstowym Identyfier wpiszmy: & (patrz rysunek 3.12). Ten identyfikator
bdziemy rwnie nazywa nazw eksportow symbolu.
Projekt jest ju gotowy i po jego opublikowaniu powinnimy otrzyma animacj, ktra
wyglda jak na rysunku 3.8. Gotow animacj moemy znale w pliku Dzialo.fla, w katalogu Rozdzial03/Gotowe.

Rozdzia 3.  Kontrola oraz animacja postaci

57

Rysunek 3.12.
Jeli w kodzie ActionScript
chcemy uywa metody
attachMovie, musimy
okreli identyfikator
symbolu, ktrego
operacja ma dotyczy

Podsumowanie
Jak moglimy si przekona w tym rozdziale, sterowanie postaciami moe by zadaniem
bardzo prostym, jak w przypadku rakiety, lub zoonym, jak w przypadku bawana, oraz
cakiem skomplikowanym jak w przypadku dziaa (oczywicie dla niektrych osb kolejno bawan, dziao niekoniecznie musi by prawdziwa).
Projekty, ktre omwilimy w tym rozdziale, nie wyczerpuj bynajmniej wszystkich moliwoci, z jakimi moemy mie do czynienia. Dobrze oddaj jednak natur problemw,
z ktrymi przyjdzie si nam zmierzy podczas tworzenia wasnych projektw.
Zapraszamy do nastpnego rozdziau Tworzenie plansz w grach, w ktrym poznamy
sposoby budowy plansz gier, po ktrych bd porusza si tworzone przez nas postacie.

You might also like