Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Macromedia Flash
MX 2004 ActionScript.
Oficjalny podrcznik
Autorzy: Derek Franklin, Jobe Makar
Tumaczenie: Piotr Cielak (rozdz. 1 - 7, 18),
Marcin Samodulski (wstp, rozdz. 15 - 17, 19 - 21)
ISBN: 83-7361-533-4
Tytu oryginau: Macromedia Flash MX 2004
ActionScript: Training from the Source
Format: B5, stron: 728
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorach .......................................................................................................................................................................................... 11
Wprowadzenie ................................................................................................................................................................................... 13
Lekcja 1. Przedstawiamy ActionScript .................................................................................................................................... 19
Co nowego w wersji 2.0 ActionScriptu? ..................................................................................................................20
Rnice dzielce ActionScript 1.0 i 2.0 ...................................................................................................................22
Podobiestwa pomidzy ActionScript 1.0 a 2.0..................................................................................................... 26
Dlaczego miabym uczy si jzyka ActionScript? ................................................................................................27
Elementy jzyka ActionScript ..................................................................................................................................27
Posugiwanie si panelem Actions i edytorem ActionScriptu ............................................................................. 33
Planowanie projektu .................................................................................................................................................. 38
Przystpujemy do pisania pierwszego skryptu ....................................................................................................... 41
Testowanie pierwszego skryptu ................................................................................................................................ 50
SPIS TRECI
Skorowidz ..........................................................................................................................................................................................705
SPIS TRECI
Automatyzacja skryptw
za pomoc ptli
Kady z nas musi czasem wykonywa czynnoci, ktre wymagaj wielokrotnego powtarzania
przynajmniej jednego zadania. Jeli np. wysyamy 100 zaprosze na lub, powtarzajcymi si czynnociami s skadanie papieru, sklejanie kopert i naklejanie znaczkw. Trzeba je wykona 100 razy.
W jzyku ActionScript zbiory powtarzajcych si akcji nazywamy ptlami. Pozwalaj one na uruchomienie danych instrukcji dowoln ilo razy, co oznacza, e zamiast ponownie je przepisywa,
wystarczy napisa je raz i umieci w ptli. W tej lekcji zobaczysz, jak uywa si trzech typw ptli
dostpnych w jzyku ActionScript.
Rozwijana lista oraz siatka
o wymiarach 2 na 2,
wykorzystane w tej aplikacji,
zostan utworzone
za pomoc ptli.
Czego si nauczysz?
W czasie tej lekcji:
Odkryjesz, jak uyteczne s ptle,
Poznasz typy ptli,
Ustawisz warunki wykonania ptli,
Utworzysz ptle zagniedone,
Uyjesz wyjtkw.
Przybliony czas
Ta lekcja zajmie w przyblieniu 45 minut.
Materiay do lekcji
Pliki startowe:
Lekcja09\Assets\pictureShow1.fla
Lekcja09\Assets\phoneNumberSearch1.fla
Gotowe projekty:
pictureShow3.fla
phoneNumberSearch2.fla
302
Ptli mona uy do automatyzacji dowolnej iloci zada, takich jak tworzenie instancji klipw
filmowych. Przypumy, e projekt wymaga rwnomiernego rozmieszczenia 100 instancji tego
samego klipu. Wystarczy wwczas przecign jedn z nich z biblioteki, a nastpnie napisa cztero
lub piciowierszowy kod powodujcy jej stukrotne powielenie i rozmieszczenie kopii w rwnomiernych odstpach. Jest to znacznie atwiejsze ni stukrotne przeciganie instancji z biblioteki
i rczne pozycjonowanie ich na scenie.
Ptle mog by dostosowywane do wymaga programu. Przypumy, e napisae instrukcj powodujc automatyczne tworzenie menu zawierajcego 15 przyciskw. Nieznacznie j modyfikujc, moesz dodawa i usuwa jego elementy. Wykonanie tego rcznie wymaga dodania lub usunicia zaznaczonego elementu, a nastpnie przesunicia wszystkich pozostaych w gr lub w d,
a niekiedy nawet modyfikacji istniejcego kodu.
W miar postpw w przyswajaniu wiedzy zawartej w tej lekcji (oraz w caej reszcie ksiki) docenisz rol ptli w skryptach.
Typy ptli
Jzyk ActionScript zawiera trzy typy ptli, z ktrych wszystkie wykonuj akcj (lub ich zbir) wwczas, gdy dany warunek jest prawdziwy.
Ptla while
Skadnia tego popularnego typu ptli jest nastpujca:
while (someNumber < 10) {
// wykonaj te akcje
}
Wyraenie someNumber < 10 jest warunkiem, ktry okrela liczb iteracji (powtrze) ptli. Podczas
kadej z nich wykonane zostaj zawarte w niej akcje. Sposoby okrelania warunku (i wychodzenia
z ptli) zostay opisane w podrozdziale Pisanie i rozumienie warunkw ptli.
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
303
Powyszy skrypt przesuwa klip filmowy myClip_mc wzdu osi y a do momentu, gdy jego pozycja
bdzie wiksza od 0.
Ptla for
Instrukcja for jest ptl, ktrej dziaanie opiera si na zwikszaniu lub pomniejszaniu wartoci
zmiennej. Pozwala ona na jej inicjalizacj, ustalenie warunkw wykonania zawartych w niej komend oraz zwikszanie lub zmniejszanie wartoci zmiennej przy kadej iteracji wszystko to
w jednej instrukcji jzyka ActionScript. Jest ona zwykle uywana do wykonywania akcji (lub ich
zbioru) w zalenoci od wartoci zmiennej np. przy operowaniu tablic lub wykonywaniu akcji
zwizanych z list klipw filmowych. Oto skadnia ptli for:
for (var someNumber:Number= 0; someNumber < 10; ++someNunber) {
// wykonaj te akcje
}
Trzy elementy umieszczone w nawiasie i oddzielone od siebie rednikami s uywane do okrelenia liczby iteracji ptli. W powyszym przykadzie tworzymy zmienn someNumber, a nastpnie
przyporzdkowujemy jej warto pocztkow 0. Pniej instrukcje wewntrz ptli s wykonywane
do momentu, gdy warto zmiennej jest mniejsza od 10. Ostatni element umieszczony w nawiasie
mwi, e przy kadej iteracji jest ona zwikszana o 1, co ostatecznie powoduje, e zmienna someNumber otrzymuje warto 10, oznaczajc koniec ptli.
Ptla for jest uywana gwnie do powtarzania zbioru akcji okrelon ilo razy. Poniej znajduje
si przykad jej zastosowania:
for (var i:Number=0; i<10; ++i) {
myClip_mc.duplicateMovieClip("myClip_mc" + i, i);
}
Ptla forin
W tym typie ptli jest wykorzystywana lista wszystkich waciwoci obiektu. Oto jego skadnia:
for (var i:String in someObject) {
trace(i);
}
Warto i jest zmienn, ktra przy kadej iteracji przechowuje nazw waciwoci. Moe ona zosta uyta w akcjach umieszczonych wewntrz ptli. Przyjrzyjmy si nastpujcemu skryptowi jako
przykadowi jej praktycznego zastosowania:
304
Na pocztku utworzony zostaje obiekt o nazwie car. Kolejne trzy wiersze przyporzdkowuj mu
waciwoci (ktre mona traktowa jako zmienne znajdujce si wewntrz obiektu) oraz odpowiadajce im wartoci. Nastpnie uyta zostaje ptla for...in, powodujca kolejne przyporzdkowywanie wszystkich waciwoci zmiennej i. Jej warto zostaje uyta w akcji znajdujcej si wewntrz ptli. Pod koniec, w zmiennej result jest przechowywany tekst zawierajcy nazwy
wszystkich waciwoci wraz z ich wartociami.
W czasie pierwszej iteracji ptli zmiennej i przyporzdkowana zostaje warto doors (poniewa
jest ona nazw ostatniej zdefiniowanej waciwoci). Wyraenie ustalajce warto przechowywan
w zmiennej result wyglda nastpujco:
result = result + "doors" + ": " + 2 + newline;
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
305
Gdy ptla zostaje zakoczona, zmienna result bdzie zawieraa nastpujcy cig znakw:
"doors: 2
make: BMW
color: red"
Poniewa obiekt car posiada trzy waciwoci, ptla for...in uyta w tym skrypcie wykona automatycznie jedynie trzy iteracje.
Gdy tworzysz waciwo obiektu, zostaje ona zapisana w tablicy przyporzdkowujcej. W przypadku zwykej tablicy referencje do zawartych w niej obiektw mog zosta utworzone za pomoc
liczby. W tablicy przyporzdkowujcej referencja nastpuje przez nazw. Opisana w tym podrozdziale ptla for...in wykorzystuje tablic przyporzdkowujc zawierajc wszystkie referencje
zawarte w okrelonej listwie czasowej lub obiekcie.
Ten typ ptli moe zosta uyty w wielu przypadkach, np. do odnalezienia informacji, takiej jak:
nazwa i warto kadej zmiennej listwy czasowej lub obiektu,
nazwa kadego obiektu umieszczonego na listwie czasowej lub w innym obiekcie,
nazwa i warto kadego atrybutu dokumentu napisanego w jzyku XML.
Warunkiem ptli jest i < 10. Oznacza to, e dopki warto zmiennej i jest mniejsza od 10, wyraenie jest prawdziwe i akcje umieszczone wewntrz ptli zostaj wykonane. Powyszej instrukcji
brakuje jednak najwaniejszego elementu. Nie posiada ona adnego sposobu pozwalajcego na
zmian wartoci wyraenia na faszyw. Bez niego ptla bdzie wykonywana w nieskoczono, co
w rzeczywistoci moe spowodowa zawieszenie si aplikacji. Program Flash nie moe zrobi nic
innego a do momentu, gdy ptla zostanie zakoczona. Aby unikn takiej sytuacji, warto
zmiennej i musi zosta zwikszona i ostatecznie osign 10, co sprawi, e warunek ptli bdzie
faszywy i zostanie ona zatrzymana.
Aby zwikszy warto zmiennej, moesz uy operatora ++. Oto przykad:
var i: Number = 0;
while (i < 10) {
// wykonaj te akcje
++i
}
306
Zwikszanie wartoci zmiennej i powoduje, e ptla wykona 10 iteracji. Warto ta pocztkowo jest
rwna 0. Jednak przy kadym powtrzeniu ptli jej warto jest powikszana o 1. Przy dziesitej
iteracji i = 10, co oznacza, e warunek i < 10 nie jest ju prawdziwy i ptla zostaje zatrzymana.
Oto krtszy zapis instrukcji wykonujcej to samo zadanie:
var i:Number = 0;
while (++i < 10) {
// wykonaj te akcje
}
Powysza ptla zostaje wykonana 9 razy. Zmiennej i jest pocztkowo przyporzdkowywana warto 0. Jednak przy kadej iteracji (wcznie z pierwsz) zostaje ona powikszona o 1 wewntrz instrukcji warunkowej zawartej w samej ptli. Przy dziesitym powtrzeniu i = 10, co oznacza, e
warunek i < 10 nie jest ju prawdziwy i ptla zostaje zakoczona.
W ptli moesz rwnie uy operatora --. Sposb jego wykorzystania wyglda mniej wicej tak:
var i:Number = 10;
while (--i > 0) {
// wykonaj te akcje
}
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
307
Warunek ptli nie musi zalee od powikszanej lub pomniejszanej wartoci. Moe nim by dowolne wyraenie logiczne lub wynik wywoania funkcji zwracajcej prawd lub fasz, jak w nastpujcym przykadzie:
while (someFunction()) {
//wykonaj te akcje
}
Gwna listwa czasowa zawiera trzy warstwy: Background (to), Dynamic Elements (elementy aktywne)
i Actions (akcje). Wewntrz warstwy Actions znajduje si cay kod napisany w jzyku ActionScript.
Oczywicie warstwa Background zawiera grafik umieszczon w tle projektu. W warstwie
Dynamic Elements umieszczono cztery instancje klipu filmowego. Trzy ponad scen, w nich
znajduj si rysunki, oraz jedn, o nazwie dropDownList_mc, umieszczon na scenie i zawierajc
przycisk o nazwie menu_btn, a take jeszcze jeden klip, ktry nazywa si item_mc. Instancja
item_mc powstaa z dwch elementw: pola tekstowego o nazwie itemName_txt oraz przycisku
widocznego jako pprzezroczyste biae pole o nazwie list_btn. Instancja itemName_txt odgrywa
w tym wiczeniu wan rol, poniewa zostanie ona powielona w procesie tworzenia menu.
2. Otwrz panel Actions, zaznacz klatk warstwy Actions i dodaj nastpujce dwa wiersze skryptu:
var buttonNames:Array = ["Paris", "New York", "London"];
dropDownList_mc.item_mc._visible = false;
Powysza funkcja powiela klip filmowy item_mc, umieszcza jego duplikaty pod przyciskiem
Menu, a nastpnie zmienia tekst wywietlany na ich instancjach.
308
Poniewa generuje ona list opcji, musimy wzi pod uwag odstp w pionie midzy przyciskami.
W pierwszej akcji funkcja tworzy zmienn o nazwie spacing. Jej warto zostaje okrelona
przez dodanie liczby 2 do wysokoci klipu item_mc. Ptla wykorzystuje j do ustawienia
odstpu midzy grnymi krawdziami powielonych instancji.
Wanie napisae ptl while, ktra powiela instancj klipu filmowego item_mc dla potrzeb
rozwijanej listy, umieszcza duplikaty w odpowiednich miejscach i nadaje im nazwy.
Przed definicj ptli skrypt utworzy zmienn lokaln o nazwie i oraz przyporzdkowa jej
warto 1.
Litera i jest czsto uywana jako nazwa zmiennej wykorzystywanej w ptli.
Kolejny wiersz skryptu zaczyna si od ptli while i definiuje warunek decydujcy o tym,
czy ma ona zosta wykonana. Mwi: Dopki warto zmiennej i jest mniejsza od wartoci
zmiennej numberOfButtons, kontynuuj przegldanie tablicy. Na pocztku ptli zmienna
i posiada warto 0, mimo i pocztkowo jest jej przyporzdkowywana warto 1, operator ++
powoduje jej zwikszenie o 1 przed kad iteracj (take przed pierwsz). Poniewa zmienna
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
309
numberOfButtons posiada warto 3 (co opisalimy w punkcie 3.), za i jest przy kadej
310
Aby zrozumie jej skadni, naley przyjrze si ciece midzy zmienn pictureID
i przyciskiem list_btn. Zmienna ta znajduje si wewntrz duplikatu klipu filmowego,
ktry zawiera rwnie wymieniony przycisk. Nie istnieje ona jednak wewntrz klipu
(poniewa nie moe on przechowywa danych), ale wewntrz jego obiektu nadrzdnego,
ktry jest kopi instancji klipu. Tak wic aby przycisk mg skorzysta ze zmiennej,
musi powrci o jeden poziom do gry (_parent). Std wzi si powyszy wiersz kodu.
5. Dodaj po funkcji populateList() nastpujcy skrypt:
dropDownList_mc.menu_btn.onRelease = function() {
populateList();
};
dziaanie skryptu.
Gdy klikniesz przycisk menu, wywoana zostanie funkcja populateList(), tworzc
i odpowiednio rozmieszczajc kilka kopii instancji klipu filmowego item_mc, na ktrych
nastpnie zostanie umieszczony tekst. Wszystko to dzieje si niemal natychmiast.
7. Zamknij testowany film i zapisz projekt jako pictureShow2.fla.
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
311
Ptle zagniedone
Ptle s doskonaym sposobem na automatyzacj pisania skryptw. Mog one jednak robi rwnie co wicej ni powtarzanie zbioru akcji. Ptla zagniedona, czyli umieszczona wewntrz
innej ptli, moe by uyteczna przy tworzeniu sekwencji wykonujcej zbir akcji, zmieniajcej
nieco parametry, ponownie wykonujcej zbir akcji itd. Oto przykad ptli zagniedonej:
var i:Number = 0;
while (++i <= 10) {
var j:Number = 0;
while (++j <= 10) {
//wykonaj te akcje
}
}
Akcje wewntrz ptli zostan wykonane 100 razy. Zewntrzna ptla (wykorzystujca zmienn i)
wykonywana jest 10 razy. Przy kadej iteracji nastpuj dwa zjawiska zmiennej j zostaje przyporzdkowana z powrotem liczba 0, ktra pozwala na dziesiciokrotne wykonanie ptli wewntrznej.
Innymi sowy, w pierwszej iteracji ptli zewntrznej dziesiciokrotnie zostaje powtrzona wewntrzna. W drugiej ptla wewntrzna znw wykonywana jest 10 razy itd.
Naley pamita o tym, e nie jestemy ograniczeni jedynie do umieszczenia jednej ptli wewntrz
innej. Jeli projekt tego wymaga, istnieje moliwo wykorzystania dowolnej iloci poziomw zagniedenia.
W poniszym wiczeniu uyjemy zagniedonych ptli do utworzenia siatki zoonej z rysunkw
pojawiajcych si w momencie wybrania elementu rozwijanej listy.
312
313
Powyszy skrypt zawiera ptl zagniedon jest ni fragment funkcji tworzcy siatk
klipw filmowych o wymiarach 22. Pojedyncza ptla mogaby utworzy jedynie jedn
kolumn. Za to zagniedenie wewntrz niej drugiej ptli pozwala na umieszczanie dwch
instancji w kadej kolumnie, przesunicie jej wsprzdnych i wstawienie kolejnych dwch
(opiszemy to za chwil). Przyjrzyjmy si, w jaki sposb funkcjonuje ten proces.
Ptla zewntrzna, zaczynajca si w trzecim wierszu skryptu, zwiksza warto zmiennej i o 1
(++i), ustawiajc jej warto pocztkow rwn 0. Warunek ptli mwi: Dopki i jest mniejsze
od 2, wykonaj nastpujce akcje. Poniewa 0 < 2, wykonane zostaj akcje umieszczone
wewntrz ptli. Pierwsza z nich przyporzdkowuje zmiennej j warto 1. Zostaje ona
wykorzystana w ptli wewntrznej, w ktrej z definicji zostaje zwikszona o 1 (++j). Nastpnie
pojawia si warunek: Dopki j jest mniejsze od 2, kontynuuj wykonywanie nastpujcych
akcji. W dalszej czci a do momentu, gdy stanie si on faszywy, skrypt wykonuje jedynie
akcje umieszczone w ptli wewntrznej. Podczas jej pierwszej iteracji warto zmiennej v zostaje
zwikszona o 1 (++v), w wyniku czego jest rwna 1. Jest ona wykorzystywana w kilku kolejnych
wierszach skryptu. Kopiuj one i umieszczaj w odpowiednich miejscach instancje klipu pictureID.
Operacja ta powinna by ju znana. Podczas drugiej iteracji zmienna j znw zostaje zwikszona
o 1 (co nastpuje w instrukcji warunkowej ptli), w wyniku czego zyskuje ona warto 1, ktra
jest mniejsza od 2. Powoduje to kolejne wykonanie akcji umieszczonych w ptli.
Wewntrzna ptla nie moe wykona trzeciej iteracji, poniewa skutkowaoby to ponownym
zwikszeniem wartoci zmiennej j, ktra byaby wwczas rwna 2 (warunek wyjcia z ptli
wewntrznej). W ten sposb skrypt powraca do ptli zewntrznej. W tym miejscu zmienna i
(wykorzystana w warunku ptli zewntrznej) zostaje zwikszona o 1 (++i), osigajc warto 1.
Jest ona mniejsza od 2, wic akcje umieszczone w ptli zostaj wykonane ponownie. W wyniku
tego zmiennej j zostaje ponownie przyporzdkowana warto 1 i instrukcje zawarte w ptli
wewntrznej zostaj wykonane jeszcze dwukrotnie.
Opisana koncepcja moe by dosy skomplikowana. Przyjrzyj si jej dokadnie i upewnij si,
e wszystko zrozumiae.
314
Aby uzyska efekt siatki o rozmiarach 22, zoonej z klipw filmowych umieszczonych
w odpowiednich odstpach, naley uy skryptu:
_root[name]._x = xStart + i * xSpacing;
_root[name]._y = yStart + j * ySpacing;
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
315
316
Kliknij przycisk Menu, by wywietli list. Klikanie jej elementw powoduje tworzenie siatki
zoonej z obrazkw w oparciu o warto przekazywanej do funkcji itemClicked() zmiennej
pictureID. Zauwa te, e funkcja removeButtons() usuwa list.
7. Zamknij testowany film i zapisz projekt jako pictureShow3.fla.
Wyjtki w ptlach
Oglnie rzecz biorc, ptle wykonuj iteracje a do momentu, gdy warunek, ktrego uywaj, nie
jest ju prawdziwy. Aby zmieni to zachowanie, mona skorzysta z dwch akcji continue
i break.
Instrukcja continue pozwala na zatrzymanie aktualnej iteracji (tzn., e po jej uruchomieniu nie
zostaj ju wykonane adne akcje w obrbie iteracji) i przejcie do nastpnej, np.:
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
317
var total:Number = 0;
var i:Number = 0;
while (++i <= 20) {
if (i == 10) {
continue;
}
total += i;
}
Instrukcja while w powyszym skrypcie tworzy ptl, w ktrej warto zmiennej i jest kolejno
zwikszana od 1 do 20. W kadej iteracji zostaje ona dodana do zmiennej total a do momentu, gdy zmienna i osignie warto 10. W tym momencie wykonuje si akcja continue oznaczajca, e w tej iteracji nie zostanie uruchomiona ju adna instrukcja i ptla przeskakuje do kolejnej.
To powoduje wygenerowanie nastpujcego zbioru liczb:
1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 20
Zauwa, e nieobecna jest liczba 10, co oznacza, e w czasie dziesitego powtrzenia ptli nie zostaa wykonana adna akcja.
Akcja break jest uywana do opuszczania ptli, jeli nawet jej warunek jest cigle prawdziwy, np.:
var total:Nunber = 0;
var i:Number = 0;
while (++i <= 20) {
total += i;
if (total >= 10) {
break;
}
}
Powyszy skrypt w kadej iteracji zwiksza warto zmiennej total o 1. Gdy osignie ona liczb 10
lub wiksz, wykonywana jest akcja break i ptla while zostaje zatrzymana, mimo e powinna ona
wykona 20 powtrze.
W poniszym wiczeniu wykorzystamy instrukcje continue i break do budowy prostego mechanizmu wyszukujcego.
1. Otwrz plik phoneNumberSearch1.fla, znajdujcy si w folderze Lekcja09\Assets.
Ten plik zawiera dwie warstwy: Actions i Search Assets (zasoby wyszukiwarki). Na pierwszej
z nich jest umieszczona procedura wyszukujca, za na drugiej pola tekstowe, przycisk
i grafika potrzebne do utworzenia tego projektu (patrz pierwszy rysunek na nastpnej stronie).
W tym wiczeniu opracujemy prost aplikacj pozwalajc na odnajdywanie numeru
telefonu osoby, ktrej imi zostaje wpisane przez uytkownika. Na ekranie znajduj si dwa
pola tekstowe: name_txt uywane do wpisywania imienia oraz result_txt wywietlajce
wyniki wyszukiwania. Nad obrazkiem przycisku Search znajduje si niewidoczna instancja
przycisku o nazwie search_btn. Jest ona uywana do wywoywania funkcji wyszukujcej.
2. Otwrz panel Actions, zaznacz 1. klatk warstwy Actions i umie w niej nastpujcy skrypt:
var info:Aray = [["John", "919-555-5698"], ["Kelly", "232-555-3333"],
["Ross", "434-555-5655"]];
318
Ten skrypt tworzy dwuwymiarow tablic o nazwie info, zawierajc trzy elementy,
z ktrych kady znajduje si na osobnej podtablicy. Pierwszym elementem kadej podtablicy
jest imi, za drugim numer telefonu.
Zacze definiowa funkcj, ktrej zadaniem jest wyszukiwanie okrelonego numeru telefonu
w tablicy info. Jej pierwsza akcja tworzy zmienn o nazwie matchFound i przyporzdkowuje
jej warto pocztkow false (wkrtce zobaczysz, w jaki sposb zostaje ona wykorzystana).
Ptla while zostaje wykonana raz dla kadego elementu tablicy.
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
319
W kadej iteracji ptli instrukcja if sprawdza, czy nastpia rozbieno midzy imieniem
wpisanym przez uytkownika (w ktrym wszystkie litery s zamieniane na mae) w polu
tekstowym name_txt i tym, ktre znajduje si w tablicy (ktrego litery rwnie s zamieniane
na mae). W tym celu wykorzystana zostaje zmienna i.
Gdy nastpi brak zgodnoci midzy imionami, wykonana zostaje akcja continue i skrypt
przechodzi do kolejnej ptli. Dziki wykorzystaniu metody toLowerCase() do zmiany
wszystkich liter na mae procedura wyszukiwania nie rozrnia maych i wielkich liter.
Jeli imi znajdujce si w tablicy pasuje do zawartoci pola tekstowego name_txt, akcja
continue nie zostaje wykonana i instrukcje umieszczone po komendzie if zostaj
uruchomione. Pierwsza z nich wykorzystuje warto zmiennej i do przyporzdkowania
waciwoci result_txt.text odpowiedniego numeru telefonu. Nastpnie zmiennej matchFound
zostaje nadana warto true i wykonana akcja break, powodujca zatrzymanie ptli.
Aby lepiej zrozumie, jak dziaa powyszy skrypt, wyobramy sobie, e kto wpisa w polu
tekstowym name_txt imi Kelly. Jego pozycja w tablicy jest nastpujca:
info[1][0]
Powyszy kod sprawdza, czy cig znakw john (imi umieszczone jako element info[0][0]
po zmianie wszystkich liter na mae) jest rwny sowu kelly (wpisanemu w polu tekstowym
name_txt po zmianie wszystkich liter na mae). Poniewa warunek ten jest prawdziwy,
wykonana zostaje akcja continue i nastpuje przejcie do kolejnej ptli. W kadej iteracji
warto zmiennej i zostaje zwikszona o 1, wic nastpna instrukcja if wyglda nastpujco:
if (info[1][0].toLowerCase() != name_txt.text.toLowerCase()) {
continue;
}
Sprawdza ona, czy cig znakw kelly (imi umieszczone jako element info[1][0] po zmianie
wszystkich liter na mae) jest rwny sowu kelly (wpisanemu w polu tekstowym name_txt
po zmianie wszystkich liter na mae). Poniewa w tym przypadku wystpuje rwno,
akcja continue zostaje pominita i wykonywane s kolejne trzy instrukcje. Pierwsza z nich
przyporzdkowuje waciwoci result_txt.text element info[i][1]. Zmienna i posiada warto
1, wic elementem tym jest info[1][1] numer telefonu Kelly. Zostaje on wywietlony.
Nastpnie zmiennej matchFound zostaje przyporzdkowana warto true i akcja break
powoduje wyjcie z ptli.
320
Akcja break nie jest w tym przypadku konieczna, jednak pozwala na skrcenie czasu wyszukiwania. Pomyl, ile czasu mona zaoszczdzi, stosujc j, aby zapobiec wykonywaniu niepotrzebnych iteracji ptli, gdy tablica posiada 10 000 elementw.
5. Umie jako ostatni akcj funkcji search() nastpujc instrukcj if:
if (!matchFound) {
result_txt.text = "No Match";
}
i kliknij przycisk Search. Nastpnie wpisz dowolne inne imi i kliknij ponownie.
Gdy imi znajduje si w tablicy info, powinien pojawi si numer telefonu. Jeli jest ono
nieprawidowe, wywietlony zostaje tekst "No Match".
8. Zamknij testowany film i zapisz projekt jako phoneNumberSearch2.fla.
LEKCJA 9.
Automatyzacja skryptw za pomoc ptli
321
Podsumowanie
W czasie tej lekcji:
Odkrye, jak uyteczne s ptle,
Poznae trzy typy ptli, dostpne w jzyku ActionScript,
Uye ptli while na kilka rnych sposobw,
Utworzye i wykorzystae ptl zagniedon,
Uye wyjtkw continue i break.
322