background image

Systemy multimedialne

Integracja środowiska programowania 
ActionScript

background image

Główna listwa czasowa

„

Główna listwa czasowa jest podstawą wszystkich 

animacji we Flashu

„

Listwa czasowa Flasha jest wbudowana, działa zgodnie z 

predefiniowaną prędkością odtwarzania

„

Wszystkie klipy filmowe osadzone w głównym filmie 

dziedziczą tę prędkość odtwarzania

background image

Główna listwa czasowa

„

Kod ActionScript można dołączyć do ujęcia 

umieszczonego na głównej listwie czasowej, do ujęcia w 

klipie filmowym lub do dowolnego składnika filmu (np. 

przycisku lub klipu filmowego), który znajduje się na 

głównej listwie czasowej lub jest osadzony wewnątrz 

innego klipu filmowego.

„

Struktura ActionScript wygląda następująco

background image

Struktura kodu ActionScript

„

Każde ujęcie znajdujące się na głównej listwie czasowej 

jest odtwarzane z określona prędkością, bez względu na 

zawartość ilości kodu mieszczącego się w tym ujęciu.

„

Jeśli realizacja kodu zabiera więcej czasu niż domyślnie 

przypisany dla danego ujęcia przez prędkość

odtwarzania , wówczas animacja zablokuje listwę

czasową.

„

Jeżeli animacja jest za bardzo opóźniona zostanie 

wyświetlone okno z propozycją wyłączenia skryptu.

background image

Struktura kodu ActionScript

kierunek listwy czasowej

ki

er

unek

 p

ro

gr

am

u

czas potrzebny do 

przetworzenia akcji

w każdym rysunku

background image

Unikanie blokowania listwy czasowej

„

Należy obliczyć liczbę milisekund potrzebnych do 

odtworzenia każdego ujęcia.

„

Zakładając że prędkość odtwarzania wynosi 12 klatek na 

sekundę można policzyć że odtworzenie każdego ujęcia 

zajmie 1000/12=83,33ms

„

Jeżeli realizacja kodu przekroczy ten czas płynne 

odtwarzanie zostanie zagrożone

„

Główne problemy związane z blokowaniem listwy 

czasowej we Flashu spowodowane są osadzonymi 

pętlami i funkcjami rekurencyjnymi.

background image

Pętle osadzone

„

Pętla osadzona:

for (a=1; a<100; a++) {

for (b=1; b<100; b++) {

for (c=1; c<100; c++) {
}

}

}

„

W powyższym fragmencie osadzono 3 pętle. Każda 

iteracja pierwszej pętli spowoduje 100 iteracji drugiej, a 

każda iteracja drugiej pętli spowoduje 100 iteracji pętli 

trzeciej. W rezultacie otrzymamy 100x100x100 instrukcji.

background image

Funkcje rekurencyjne

„

Funkcja rekurencyjna jest funkcją wywołującą samą

siebie. 

„

Przykładem takiej funkcji jest znalezienie danej liczby z 

zakresu np. 0-100. Funkcja podzieli zakres na pół i 

sprawdzi w której połowie znajduje się poszukiwana 

liczba. Następnie ponownie sama się wywoła aby 

podzielić nowy zakres na pół. Będzie tak działać do 

momentu w którym znajdzie właściwą liczbę.

background image

Unikanie problemu blokowania 

„

Aby uniknąć tego problemu należy unikać tego typu 

instrukcji

„

Aby efektywnie kontrolować pętle należy pamiętać iż do 

wykorzystania mamy trzy wymiary czasowe.

„

Zamiast tworzyć w jednym ujęciu pętle obejmującą cały 

kod, można wykonać ją w obrębie jednej sekcji listwy 

czasowej

background image

Praca z kilkoma listwami czasowymi

„

Każdy klip posiada własną listwę czasową po której może 

się poruszać bez wywierania wpływu na listwy czasowe 

innych klipów filmowych

„

Prędkość odtwarzania klipów filmowych musi być

zsynchronizowana z głównym filmem.

„

Kolejność ujęć w klipach filmowych jest niezależna, lecz 

prędkość odtwarzania nie jest, gdyż jest pobierana z 

filmu umieszczonego na górnym poziomie bez względu 

na to czy zostały zdefiniowany jako symbole w bibliotece 

tego filmu czy też zostały pobrane z zewnętrznego 

źródła.

background image

Praca z osadzonymi klipami filmowymi

„

Główna listwa czasowa może zawierać kilka klipów

filmowych, z których każdy może również zawierać

kolejne kipy filmowe.

„

Najtrudniejszym do rozwiązania problemem podczas 

pracy z osadzonymi klipami filmowymi jest poznanie 

zasięgu zmiennych i funkcji.

„

Po zdeklarowaniu zmiennej w obrębie danej listwy 

czasowej listwa ta staje się zasięgiem zmiennej. Dostęp 

do zmiennej za pomocą podania samej nazwy można 

uzyskać tylko wtedy, gdy wywołana jest z listwy 

czasowej na której się znajduje

background image

Praca z osadzonymi klipami filmowymi

„

Ścieżkę listwy czasowej można zmienić, wykorzystując 

następującą składnię:

ścieżka_listwyczasowej.nazwa_zmiennej

„

Ta sama zasada dotyczy własności, gdyż są one 

systemowo zdefiniowanymi zmiennymi. Aby uzyskać

dostęp do własności zmiennej korzystamy z następującej 

składni:

zmienna._własność

background image

Praca z osadzonymi klipami filmowymi

„

Przejście o poziom wyżej w hierarchii listew czasowych 

osadzonego klipu filmowego opiera się o pseudoobiekt

_parent

, który reprezentuje listwę czasową położoną o 

poziom wyżej. Aby uzyskać dostęp do zmiennej należy 

zastosować następującą składnię:

zmienna._parent.własność

„

Obiekty 

_root

oraz 

_level0

przenoszą bezpośrednio na 

listwę czasową najwyższego poziomu.

„

Pomiędzy obiektami 

_root

oraz 

_level0 

istnieje 

niewielka różnica. Pierwszy przenosi nas do najwyższego 

poziomu danego filmu, a drugi na listwę czasową o 

nazwie  

level0 , 

która nie musi być jednocześnie główną

listwą czasową filmu

background image

Rysunki, klipy filmowe i przyciski

„

Symbol graficzny jest odtwarzany przez ujęcia w 

symbolu. Symbolu graficznego nie można obsługiwać

zewnętrznym kodem, również żaden kod symbolu w 

symbolu graficznym nie będzie miał wpływu na symbole 

zewnetrzne.

„

Listwa czasowa symbolu graficznego jest całkowicie 

zsynchronizowana z listwą czasową w której jest 

zawarta.

background image

Rysunki, klipy filmowe i przyciski

„

Symbol klipu filmowego dysponuje największymi 

możliwościami . Symbol klipu filmowego zawiera pewną

liczbę ujęć które są odtwarzane w standardowy sposób.

„

Listwa czasowa klipu filmowego jest niezależna od listwy 

czasowej zawierającej dany klip filmowy.

„

Każdej kopii klipu filmowego można nadać nazwę i 

obsługiwać ją w obrębie kodu.

„

Kod umieszczony wewnątrz klipu filmowego sam potrafi 

obsługiwać inne obiekty i zmienne

background image

Rysunki, klipy filmowe i przyciski

„

Symbol przycisku posiada cztery ujęcia reprezentujące 

cztery stany : 

Up, Over, Dovn, Hit

„

Przycisk odtwarza każde z ujęć w odpowiedzi na pewne 

zdarzenie.

„

W przyciskach można osadzać symbole graficzne i klipy 

filmowe.

background image

Wykonywanie kodu ActionScript

„

Kolejność wykonywania kodu jest uzależniona od wielu 

czynników. Struktura budowy klipu wpływa na kolejność

uruchamiania instrukcji w kodzie ActionScript

background image

W obrębie pojedynczego ujęcia

„

Instrukcje wykonywane są w kolejności ich 

występowania; kod w obrębie danego ujęcia tworzy 

oddzielną jednostkę (pomiędzy początkiem i końcem 

odtwarzania ujęcia nie można wykonywać żadnego 

innego kodu)

background image

W obrębie pojedynczej warstwy

„

Ujęcia realizowane są w kolejności jedno po drugim;

„

Funkcje wykonywane są po ich wywołaniu; funkcje 

można wywoływać wyłącznie po ich zdeklarowaniu

„

Procesy obsługi zdarzeń (

on 

lub 

OnClipEvent

wykonywane są wówczas, gdy zachodzi dane zdarzenie; 

można je wykonywać tylko po ich zdeklarowaniu

background image

W obrębie pojedynczego klipu filmowego

„

Kod w ujęciach odtwarzanych w tym samym czasie 

wykonywany jest zgodnie z kolejnością warstw, 

rozpoczynając od warstwy górnej

„

Kolejność ujęć jest sekwencyjna

background image

W obrębie filmu

„

W przypadku jednoczesnych ujęć kod w klipie filmowym 

wykonywany jest po zrealizowaniu kodu w klipie 

macierzystym

„

Najłatwiejszym sposobem sprawdzenia kolejności 

wykonywania poszczególnych operacji jest wykorzystanie 

funkcji 

trace

zmienna;
trace(zmienna);

background image

Tworzenie efektów wizualnych z 

zastosowaniem ActionScript

background image

Tablice

„

Tablice służą do przechowywania wielu obiektów i wielu 

zmiennych. Tablica zbliżona jest strukturą do listy, gdyż

tak samo jako ona posiada ponumerowane wejścia, w 

których przechowywane są dane. W języku ActionScript

tablice definiuje się za pomocą poniższej instrukcji:

myArray= new Array (liczbawartosci)

parametr 

liczbawartosci

określa ilość wartości jaka będzie 

przechowywana w tablicy.

background image

Tablice

„

Następnie należy przypisać do tablicy wartości lub 

obiekty stosując nazwę tablicy z następującym po niej 

numerem okienka do którego chcemy uzyskać

dostęp.Poniższa instrukcja stworzy tablicę i w pierwsze 

trzy komórki wstawi wartości:

myArray=newArray ();
myArray[0] = 100;
myArray[1] = 256;
myArray[2] = 34;

W przypadku definiowania funkcji w ten sposób nie 

trzeba określać jej rozmiaru.

background image

Tablice

„

Innym sposobem definiowania tablicy jest skorzystanie z 

poniższego kodu:

myArray=new Array ();
myArray= [100,256,34];

Uzyskany efekt będzie identyczny jak w przypadku 

zastosowania poprzedniej funkcji. Liczby umieszczone w 

nawiasie kwadratowym zostaną automatycznie 

przypisane do numerów indeksowych tablicy w takiej 

samej kolejności jak w poprzednim fragmencie.

„

Najlepszym sposobem na edytowanie i odczytywanie 

komórek umieszczonych w liście jest zastosowanie pętli.

background image

Przechwytywanie klawisza

„

Flash zawiera kilka predefinowanych obiektów, za pomocą których 

uzyskuje się dostęp do obiektów zaawansowanych (np. obiekty 

tablicy 

Array

) . 

„

Jednym z takich obiektów jest obiekt klawisza 

Key

dzięki któremu dysponujemy techniką potrzebną do wykrywania i 

wyróżniania wciśniętych przez użytkownika klawiszy

„

Aby efektywnie wykorzystać obiekt 

Key

należy opracować sposób 

wykrywania wciśnięcia klawisza.

„

We Flashu istnieją procedury obsługujące zdarzenia: 

press, relase

keyUp , keyDown

„

Zastosowanie tych wyrazów kluczowych jako parametrów dla 

procedury 

OnClipEvent

może aktywować zdefiniowany przez nas 

kod.

background image

Przechwytywanie klawisza

„

Obiekt 

Key

posiada dwie metody rozpoznawania wciśnięcia 

klawisza.

„

Pierwsza z metod używa się przy pomocy funkcji 

Key.getCode.

„

Drugą metodą jest przechwytywanie kodu ASCII za pomocą

funkcji 

Key.getAscii

„

Obie metody dają podobne efekty ale ich działanie jest różne.

„

Funkcja 

Key.getCode

wydobywa kod który jest przypisany do 

wewnętrznej zmiennej po wciśnięciu klawisza

„

Funkcja 

Key.getAscii

pobiera kod klawisza jaki został wciśnięty 

i określa dokładnie jaki znak został użyty


Document Outline