r05-04, Księgozbiór, Studia, Informatyka


0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

Części składowe języka HTML


0x08 graphic
Żeby tworzyć elementy prawdziwej interakcji z użytkownikiem i umożliwić mu oglądanie, słuchanie i wykonywanie dokładnie tego, co chciałbyś, żeby robił, musisz nauczyć się, jak kontrolować odtwarzanie filmu wzdłuż różnych listew czasowych. Wewnętrzny odtwarzacz Flasha zawsze pokazuje to, co jest na scenie, odtwarza dowolne dźwięki i wyzwala dowolne akcje włączone do listwy czasowej. Przeskakiwanie od klatki do klatki wzdłuż listwy czasowej głównego filmu jest wystarczająco proste, gdy używa się podstawowych akcji, z którymi zdążyłeś się już zaznajomić, jak Go To, Play i Stop. Kiedy jednak dołączysz do swojego filmu dodatkowe klipy filmowe, będziesz miał do czynienia z innymi listwami czasowymi, którymi można indywidualnie zarządzać. Główna listwa czasowa może kontrolować listwę czasową klipu filmowego. Z drugiej strony, listwa czasowa klipu filmowego może kontrolować główną listwę czasową, ale także, listwa czasowa jednego klipu filmowego może kontrolować listwę czasową innego klipu. Celem tego rozdziału jest pomóc ci opanować zasady tej złożonej interakcji i nawigacji pomiędzy poszczególnymi listwami czasowymi.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Nawigowanie
po listwach czasowych
klipów filmowych

Niezależne listwy czasowe symbolów klipów filmowych umożliwiają tworzenie skomplikowanych schematów nawigacyjnych (rys. 5.1). W czasie odtwarzania zawartości głównej listwy czasowej, mogą być jednocześnie odtwarzane filmy z pozostałych listew czasowych, oddziałując na siebie i określając, które klatki mają być odtwarzane lub też kiedy przerwać odtwarzanie. Tak naprawdę, powszechna jest praktyka wprowadzania do sceny wielu klipów filmowych oddziałujących między sobą, podczas gdy listwa czasowa głównego filmu zawiera tylko jedną klatkę, niezbędną do zadziałania całości. Oczywiście, nawigowanie pomiędzy poszczególnymi listwami czasowymi odbywa się przy udziale języka ActionScript. Podstawowe akcje, używane do nawigowania wzdłuż głównej listwy czasowej (Go To, Stop Play), mogą być także używane do nawigowania listwą czasową dowolnego klipu filmowego. Jest to możliwe z uwagi na to, że klipy filmowe stanowią część predefiniowanych we Flashu klas klipów filmowych, umożliwiając ci pracę z klipami filmowymi jako obiektami.

To, że klip filmowy jest jednocześnie symbolem oraz obiektem, czyni go unikalnym w sposobie funkcjonowania i tworzenia. Jako klon symbolu, klip filmowy może być wykorzystany w pętlach animacji i animowanych przyciskach. Kiedy jest obiektem, możesz wywoływać jego metody, potrzebne do kontrolowania, odtwarzania lub szacowania właściwości wpływających na sposób pojawiania się klipu. Klipy filmowe tworzy się i przechowuje w bibliotece - podobnie jak inne symbole. Jednak używanie ich jako obiektów wymaga przygotowania ich klonów. Po jednokrotnym utworzeniu klonu, obiekt klipu filmowego staje się dostępny dla wszystkich metod i właściwości klasy klipów filmowych.

0x01 graphic

Rys. 5.1. Film może zawierać wiele listew czasowych oddziałujących na siebie nawzajem. Powyższy przykład przedstawia scenę Scene 1 jako główną listwę czasową. Składają się na nią dwa klipy filmowe: jeden z nich zawiera drugi. Strzałki prezentują tylko kilka z możliwych kierunków komunikacji

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 5.2. Tworzenie klonu symbolu klipu filmowego oraz tworzenie klonu obiektu Date

0x01 graphic

Rys. 5.3. Ustawienia w palecie Instance dla klipu filmowego. Nazwa tego obiektu klipu filmowego to myCircle

Nazywanie klonów

Tworzenie klonu twojego symbolu klipu filmowego zawiera się w dwóch krokach: umieszczenie klonu na scenie, a następnie nadanie mu nazwy. Daje to taki sam efekt, jaki inne obiekty Flasha osiągają przy pomocy funkcji konstruktora (rys. 5.2). Otrzymujemy więc nazwany obiekt lub klon, stworzony na podstawie klasy. Można go później używać przez wywołanie jego metod lub szacowanie jego właściwości.

W celu
nazwania klonu klipu filmowego:

  1. Utwórz symbol klipu filmowego.

  2. Przeciągnij klon klipu filmowego z biblioteki na scenę.

  3. Zaznacz klon.

  4. Na palecie Instance, w polu Name, wpisz unikalną nazwę dla twojego klonu klipu filmowego (rys. 5.3).

Od teraz klon klipu filmowego może być identyfikowany w środowisku ActionScript za pomocą utworzonej nazwy.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Wskazówka

  • Nazwa symbolu twojego klipu filmowego (ta, która pojawia się w bibliotece) oraz nazwa, którą wprowadzasz na palecie Instance, to dwa różne identyfikatory (rys. 5.4). Nazwa pojawiająca się w bibliotece jest tylko właściwością symbolu, która pełni funkcje organizatora. Nazwa wpisywana na palecie Instance jest ważniejsza, bowiem stanowi właściwą nazwę obiektu i będzie używana w ścieżkach dostępu. Chociaż obie nazwy mogą być takie same, staraj się nadawać symbolom ogólne, a klonom bardziej specyficzne nazwy - dla lepszego rozróżnienia między nimi.

0x01 graphic

Rys. 5.4. Nazwa symbolu klipu filmowego pojawia się w bibliotece, podczas gdy nazwa klipu widnieje na palecie Instance

0x08 graphic
Ścieżki dostępu

Ścieżka dostępu jest w zasadzie nazwą obiektu, ewentualnie grupą nazw obiektów oddzielonych kropkami, co pozwala Flashowi określić, gdzie znajduje się wskazany obiekt. Przejście do edycji listwy czasowej klipu filmowego wymaga podania ścieżki dostępu do tego klipu oraz podstawowej akcji. Ścieżka dostępu wskazuje na miejsce, w którym należy szukać klonu klipu filmowego, natomiast akcja decyduje o tym, co Flash ma z owym klonem zrobić. Podstawowe akcje kontrolujące proces odtwarzania to Go To, Play i Stop.

Na przykład, jeśli nadałeś dla klonu klipu filmowego nazwę bigClock, to napisanie wyrażenia języka ActionScript bigClock.gotoAndStop(37) spowoduje przejście do klatki 37. klonu klipu filmowego bigClock i zatrzymanie odtwarzania. W przykładzie tym ścieżką dostępu jest bigClock, a akcją gotoAndStop.

W bloku edycji parametrów palety akcji znajduje się ikona przycisku o nazwie Insert a target path, otwierająca okno dialogowe Insert Target Path, a to z kolei pozwala wprowadzić ścieżkę dostępu (rys. 5.5). W oknie tym ukazuje się drzewo hierarchiczne wszystkich klonów klipów filmowych. Wystarczy wybrać pożądany klip, a pojawi się właściwa dla niego ścieżka dostępu.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 5.5. Okno dialogowe Insert Target Path umożliwia wybranie ścieżki dostępu przez kliknięcie ikony klipu filmowego widocznego w hierarchii

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
W celu utworzenia ścieżki dostępu
do klonu klipu filmowego
z poziomu głównej listwy czasowej:

  1. Utwórz symbol klipu filmowego i umieść jego klon na scenie. Za pomocą palety Instance nadaj mu nazwę.

  1. Utwórz symbol przycisku i umieść jego klon na scenie razem z klonem klipu filmowego (rys. 5.6).

Przycisk na głównej listwie czasowej będzie kontrolował listwę czasową klipu filmowego.

  1. Zaznacz klon przycisku, a następnie otwórz paletę akcji.

  2. Wybierz Actions/evaluate. Poniżej manipulatora zdarzenia on (release) pojawi się nowa linia skryptu (rys. 5.7).

  3. W bloku edycji parametrów kliknij przycisk Insert a target path. Pojawi się okno dialogowe Insert Target Path.

  4. Zaznacz opcję Relative w polu Mode, a następnie wybierz klon klipu filmowego, dostępny w drzewie hierarchii. W polu Target pojawi się ścieżka dostępu (rys. 5.8).

0x01 graphic

Rys. 5.6. Klony przycisku i klipu filmowego na głównej listwie czasowej

0x01 graphic

Rys. 5.7. Użyj wyrażenia evaluate dla określenia ścieżki dostępu do klipu oraz odpowiedniej dla niego akcji

0x01 graphic

Rys. 5.8. Okno dialogowe Insert Target Path. Wybór klipu filmowego widocznego w oknie hierarchii powoduje podstawienie ścieżki dostępu w polu Target

0x08 graphic

0x08 graphic
0x01 graphic

Rys. 5.9. Pole Expression palety akcji

0x01 graphic

Rys. 5.10. Akcja gotoAndStop(37) stanowi metodę obiektu klipu filmowego o nazwie bigClock. Wyrażenie to powoduje przejście do klatki 37. na listwie czasowej klipu bigClock i zatrzymanie odtwarzania

0x01 graphic

Rys. 5.11. Umieść klon klipu filmowego smallClock wewnątrz klipu bigClockMC. Osadzonemu klonowi klipu filmowego nadaj nazwę smallClock, a klonowi klipu - widocznego na scenie - nazwę bigClock. Teraz bigClock jest rodzicem, a smallClock - dzieckiem

  1. Kliknij OK. Ścieżka dostępu będzie teraz widniała w polu Expression (rys. 5.9).

  2. W polu Expression, zaraz za ścieżką dostępu, wpisz kropkę, a następnie pożądaną metodę wraz z odpowiednimi argumentami (rys. 5.10).

  3. Przetestuj swój film. Utworzony klon przycisku kontroluje teraz listwę czasową - wskazanego ścieżką dostępu - klipu filmowego.

Możliwe jest także umieszczanie jednego klipu filmowego w drugim. W takim układzie jeden z nich pełni rolę obiektu-rodzica, a drugi jest obiektem-dzieckiem. Jakiekolwiek zmiany dokonane na obiekcie-rodzicu będą miały wpływ jednocześnie na obiekt-dziecko. Jeśli chciałbyś kontrolować listwę czasową klipu filmowego-dziecka z poziomu głównej listwy czasowej, w ścieżce dostępu muszą znaleźć się nazwy zarówno dziecka, jak i rodzica.

W celu utworzenia ścieżki dostępu
do klonu klipu filmowego-dziecka
z poziomu głównej listwy czasowej:

  1. Utwórz symbol klipu filmowego, a następnie umieść jego klon na scenie i nadaj mu nazwę.

  1. Utwórz kolejny symbol klipu filmowego, umieszczając go wewnątrz pierwszego z symboli. Nadaj nowemu klonowi nazwę, korzystając z palety Instance (rys. 5.11).

  2. Utwórz symbol przycisku i umieść jego klon na scenie w głównej listwie czasowej. Przycisku tego użyjemy do kontrolowania listwy czasowej klipu filmowego-dziecka.

  3. Zaznacz klon przycisku i otwórz paletę akcji. Wybierz Actions/evaluate.

  4. W bloku edycji parametrów kliknij przycisk Insert a target path, a następnie - w oknie dialogowym Insert Target Path - wybierz tryb Relative (w polu Mode).

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    W drzewie hierarchii obiektów kliknij ikonę trójkąta widniejącą przy ikonie klipu filmowego-rodzica. Drzewo zostanie rozwinięte, pokazując klip filmowy-dziecko, zawarty w klipie-rodzicu (rys. 5.12).

  2. Jako ścieżkę dostępu wybierz klip filmowy-dziecko. Kliknij OK. W polu Expression palety akcji pojawi się ścieżka dostępu w postaci: Parent.Child.

  3. W polu Expression dopisz kropkę, a następnie akcję dla obiektu, do którego utworzyłeś ścieżkę dostępu.

  4. Przetestuj film. Kiedy klikniesz i zwolnisz przycisk, akcja zostanie wykonana na klipie filmowym-dziecku, ale nie na klipie-rodzicu (rys. 5.13). Z wyjątkiem relacji rodzic-dziecko, listwy czasowe poszczególnych klipów pozostają niezależne.

0x01 graphic

Rys. 5.12. Drzewo hierarchii obiektów w oknie dialogowym Insert Target Path. Hierarchia ta ukazuje relacje rodzic-dziecko

0x01 graphic

Rys. 5.13. Kliknięcie przycisku (u góry) powoduje skok do klatki 5. klipu filmowego-dziecka smallClock i zatrzymanie odtwarzania, podczas gdy odtwarzanie klipu filmowego-rodzica bigClock jest cały czas kontynuowane

0x08 graphic

Względne i bezwzględne ścieżki dostępu

W oknie dialogowym Flasha Insert Target Path możesz wybierać pomiędzy dwiema opcjami: Relative (względnie) oraz Absolute (bezwzględnie). W poprzednim przykładzie, metoda bigClock.smallClock. gotoAndStop(5) pochodziła od przycisku rezydującego w głównej listwie czasowej. Kiedy Flash wykonuje tę akcję, próbuje odnaleźć w tej listwie obiekt o nazwie bigClock, zawierający w sobie inny obiekt, nazwany smallClock. Jest to przykład ścieżki korzystającej z trybu Relative. Wszystko jest względne w stosunku do miejsca, w którym rezyduje wyrażenie akcji - w tym przypadku jest to główna listwa czasowa. Alternatywną metodą wstawiania ścieżki dostępu jest użycie trybu Absolute, w którym nie istnieje żadne ujęcie odniesienia. Można przyjąć, że względne (Relative) ścieżki dostępu są jak wytyczne podawane z punktu widzenia twojej bieżącej lokacji, w rodzaju „idź dwa bloki dalej, a potem skręć w lewo”. Natomiast bezwzględne (Absolute) ścieżki dostępu działają niezależnie od miejsca, w którym się znajdujesz, przypominając wskazówkę „udaj się na ul. Chopina 6”.

W jakim celu umożliwiono ci wybór pomiędzy tymi dwoma trybami? Otóż, gdybyś chciał wskazać ścieżkę dostępu do listwy czasowej znajdującej się na wyższym poziomie względem listwy, nad którą aktualnie pracujesz, musisz posłużyć się trybem Absolute. Wyobraź sobie na przykład, że chciałbyś, aby jakiś klip filmowy kontrolował główną listwę czasową, tą, w której rezyduje. Tryb Relative udostępniłby ci jedynie listwy czasowe zawierające się w aktywnej w tym momencie listwie. Dopiero w trybie Absolute widziałbyś wszystkie dostępne listwy czasowe, niezależnie od poziomu, na jakim się aktualnie znajdujesz. Tryb Absolute daje ci niejako widok z lotu ptaka jednocześnie na wszystkie klipy filmowe obecne na scenie.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Listwy czasowe this oraz _root

W trybie Relative bieżąca listwa czasowa nosi nazwę this. Wszystkie inne listwy czasowe są względne wobec this. W trybie Absolute, listwa czasowa głównego filmu jest nazywana _root, a wszystkie inne listwy są zorganizowane względem listwy czasowej _root (rys. 5.14).

W celu utworzenia ścieżki dostępu
do głównej listwy czasowej
z poziomu klonu klipu filmowego:

  1. Utwórz symbol klipu filmowego i umieść jego klon na scenie. Za pomocą palety Instance nadaj mu nazwę.

  1. Utwórz symbol przycisku i umieść jego klon wewnątrz symbolu klipu filmowego. Przycisku tego użyjesz do kontrolowania głównej listwy czasowej (rys. 5.15).

  2. Zaznacz klon przycisku i otwórz paletę akcji. Wybierz Actions/evaluate.

  3. W bloku edycji parametrów kliknij przycisk Insert a target path.

  4. W oknie dialogowym Insert Target Path wybierz tryb Absolute. Ujrzysz wszystkie klipy filmowe oraz listwę czasową głównego filmu, a nie tylko te, które są zawarte w listwie czasowej bieżącego klipu filmowego.

  5. Zaznacz główną listwę czasową jako ścieżkę dostępu. Kliknij OK. W polu Expression pojawi się ścieżka dostępu _root.

  6. W polu Expression wpisz kropkę, a dalej akcję odpowiadającą obiektowi, dla którego wskazałeś ścieżkę dostępu (rys. 5.16).

0x01 graphic

Rys. 5.14. Ścieżki dostępu w trybach Absolute oraz Relative. Powyższy przykład ukazuje przycisk oraz klip filmowy smallClock, zawarte w klipie filmowym bigClock. Kiedy przypisujemy ścieżkę dostępu do przycisku, this w trybie Relative odnosi się do bigClock w trybie Absolute

0x01 graphic

Rys. 5.15. Umieść klon przycisku wewnątrz klipu filmowego bigClock. Klon klipu filmowego (o nazwie bigClock) znajduje się na scenie

0x01 graphic

Rys. 5.16. Pole Expression na palecie akcji

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 5.17. Przycisk wewnątrz klipu filmowego bigClock powoduje przeskok do klatki 2. na listwie _root lub głównej listwie czasowej

0x01 graphic

Rys. 5.18. Dwa klipy filmowe (z przyciskiem wewnątrz jednego z nich) umieszczone na scenie

0x01 graphic

Rys. 5.19. Akcja przypisana do tego przycisku jest wykonywana względem klipu filmowego secondClock rezydującego w listwie czasowej _root

  1. Przetestuj film. Kiedy klikniesz i zwolnisz przycisk, Flash przejdzie z bieżącej listwy czasowej do listwy _root i wykona określoną tam akcję (rys. 5.17).

W celu utworzenia ścieżki dostępu
do klonu klipu filmowego
z poziomu innego klonu
klipu filmowego:

  1. Utwórz symbol klipu filmowego i umieść jego klon na scenie. Za pomocą palety Instance nadaj mu nazwę.

  1. Utwórz jeszcze jeden symbol klipu filmowego i także umieść jego klon na scenie. Korzystając z palety Instance, nadaj mu nazwę.

  2. Utwórz symbol przycisku i umieść jego klon wewnątrz pierwszego z utworzonych symboli klipów filmowych.

Przycisku tego użyjesz do kontrolowania drugiego klipu filmowego (rys. 5.18).

  1. Zaznacz klon przycisku i otwórz paletę akcji. Wybierz Actions/evaluate.

  2. W bloku edycji parametrów kliknij przycisk Insert a target path. W oknie dialogowym Insert Target Path wybierz tryb Absolute.

  3. Zaznacz klon drugiego klipu filmowego. Kliknij OK.

W polu Expression palety akcji pojawi się ścieżka dostępu _root.secondClock.

  1. W polu Expression, zaraz za widniejącą ścieżką, dopisz kropkę, a dalej akcję wybraną dla obiektu, do którego podałeś ścieżkę dostępu.

  2. Przetestuj film.

Kiedy klikniesz i zwolnisz przycisk, Flash odszuka listwę czasową _root, a następnie przejdzie do obiektu o nazwie secondClock i wykona przypisaną mu akcję (rys. 5.19).

0x08 graphic
0x08 graphic
W celu utworzenia ścieżki dostępu
do listwy czasowej
konkretnego klipu filmowego:

  1. Utwórz symbol klipu filmowego i umieść jego klon na scenie. Za pomocą palety Instance nadaj mu nazwę.

  1. Utwórz symbol przycisku i umieść jego klon wewnątrz symbolu klipu filmowego.

Przycisku tego użyjesz do kontrolowania listwy czasowej klipu filmowego (rys. 5.20).

  1. Zaznacz klon przycisku i otwórz paletę akcji. Wybierz Actions/evaluate.

  2. Kliknij przycisk Insert a target path, a otworzy się okno dialogowe Insert Target Path. Wybierz tryb Relative i zaznacz this.

lub

Kliknij przycisk Insert a target path, a otworzy się okno dialogowe Insert Target Path. Wybierz tryb Absolute i zaznacz ścieżkę dostępu _root.

lub

Nie wybieraj akcji evaluate w punkcie 3. Zamiast tego, po prostu wybierz którąkolwiek z podstawowych akcji - Go To, Stop lub Play (rys. 5.21).

Wskazówka

  • Używanie listew this lub _root dla podania ścieżki dostępu do listwy czasowej klipu filmowego nie jest konieczne, tak jak zbędne jest używanie ich w nawigacji po głównej listwie czasowej. To zrozumiałe, że akcje rezydujące w danym klipie filmowym odnoszą się do niego lub są mu przypisywane.

0x01 graphic

Rys. 5.20. Umieść przycisk wewnątrz klipu filmowego bigClockMC. Klon klipu filmowego (o nazwie bigClock) znajduje się na scenie

0x01 graphic

Rys. 5.21. Trzy sposoby na utworzenie ścieżki dostępu do listwy czasowej klipu bigClock - z poziomu tego właśnie klipu filmowego

0x08 graphic
0x01 graphic

Rys. 5.22. Umieść przycisk wewnątrz klipu filmowego smallClock. Klon klipu filmowego smallClockMC (o nazwie smallClock) znajduje się wewnątrz klipu bigClockMC. Klon klipu filmowego bigClockMC (o nazwie bigClock) znajduje się na scenie

0x01 graphic

Rys. 5.23. Przycisk wewnątrz klipu filmowego smallClock tworzy ścieżkę dostępu do klipu filmowego bigClock za pomocą wyrażenia określającego względność _parent

Używanie terminu _parent
w ścieżkach dostępu

Chociaż niewidoczny w oknie dialogowym Insert Target Path, termin określający względność _parent może być przez ciebie używany do tworzenia ścieżek dostępu do klipu filmowego, usytuowanego o jeden poziom wyżej w stosunku do bieżącej listwy czasowej.

W celu utworzenia ścieżki dostępu
do obiektu-rodzica
konkretnego klipu filmowego:

  1. Utwórz symbol klipu filmowego i umieść jego klon na scenie. Za pomocą palety Instance nadaj mu nazwę.

  1. Utwórz jeszcze jeden symbol klipu filmowego i umieść jego klon wewnątrz pierwszego klipu. Za pomocą palety Instance nadaj mu nazwę.

  2. Utwórz symbol przycisku i umieść jego klon wewnątrz klipu filmowego-dziecka (rys. 5.22).

  3. Zaznacz klon przycisku i otwórz paletę akcji. Wybierz Actions/evaluate.

  4. W polu Expression wpisz _parent i dalej kropkę oraz wybraną akcję.

  5. Przetestuj film.

Kiedy klikniesz i zwolnisz przycisk, Flash odszuka listwę czasową bieżącego obiektu (rodzica) i wykona określoną tam akcję (rys. 5.23). W tabeli 5.1 oraz na rys. 5. 24 znajdziesz podsumowanie sposobów na tworzenie względnych i bezwzględnych ścieżek dostępu do różnych klipów filmowych.

0x08 graphic
Dlaczego ścieżki względne?

Po co w ogóle używać ścieżek względnych? Bezwzględne ścieżki dostępu wydają się tworzyć bezpieczniejsze konstrukcje, ponieważ jasno identyfikują obiekt niezależnie od tego, na jakim poziomie projektu się znajdujesz. Są jednak co najmniej dwa przypadki, kiedy ścieżki względne bywają użyteczne.

Po pierwsze, kiedy tworzysz klip filmowy z akcjami oddziałującymi na inne klipy filmowe względne w stosunku do pierwszego klipu, możesz przemieszczać całą grupę i ciągle zachowywać działające ścieżki dostępu, używające terminów określających względność. W takiej sytuacji znacznie łatwiej jest pracować ze złożonymi schematami nawigacji, jako że możliwe staje się kopiowanie, wklejanie i przemieszczanie poszczególnych fragmentów bez przepisywania ścieżek dostępu. Przykładem zastosowania może być zarządzanie witryną sieciową zawierającą łącza do innych stron. Jeśli miałeś zamiar utworzyć bezwzględne ścieżki dostępu do łączy zawierających twoje CV, a następnie przenieść twoją stronę domową na inny serwer, to musiałbyś przepisać ścieżki dla poszczególnych łączy. Bardziej praktyczną metodą jest utworzenie łączy na stronie domowej za pomocą względnych ścieżek dostępu.

Drugi przypadek ma miejsce wówczas, gdy dynamicznie tworzysz klipy filmowe. Wkrótce nauczysz się, jak tworzyć obiekty klipów filmowych na bazie istniejących klipów i nadawać im nazwy „w locie” za pomocą języka ActionScript. W takich sytuacjach klipy filmowe nie pozostają statyczne i względne ścieżki dostępu potrzebne są do tego, żeby je wszystkie ogarnąć.

0x01 graphic

Rys. 5.24. Ilustracja filmu zawierającego kilka różnych klipów filmowych. Główna listwa czasowa (Scene 1) zawiera klipy filmowe Square oraz Circle. Klip Triangle znajduje się w klipie filmowym Circle. Nazwy te reprezentują klony. Tabela 5.1 przedstawia względne i bezwzględne ścieżki dostępu, utworzone z poziomu klipu filmowego Circle (czyli klipu, na którego poziomie aktualnie się znajdujesz)

Tabela 5.1. Względne i bezwzględne ścieżki dostępu

Dostęp do... Ścieżka Ścieżka

(z poziomu bezwzględna względna

Circle) (Absolute) (Relative)

Scene 1

_root

_parent

Square

_root.Square

_parent. Square

Circle

_root.Circle

This

Triangle

_root.Circle. Triangle

Triangle

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 5.25. Zagnieżdżone wyrażenia typu with stanowią odpowiednik złożonych ścieżek dostępu tworzonych w oparciu o wyrażenia evaluate

Używanie akcji with
w tworzeniu ścieżek dostępu

Jeszcze inny sposób tworzenia ścieżek dostępu do klipów filmowych polega na wykorzystaniu akcji with. Akcja ta, w odróżnieniu od evaluate, umożliwia wprowadzenie kilku akcji w miejsce jednej, które to obiekt będzie wykonywał. Wyrażenie zawierające akcję with może wyglądać np. tak:

with (bigClock) {

gotoAndStop (5)

}

Zastosowanie akcji with - jak wyżej - powoduje tymczasowe ustawienie ścieżki dostępu do obiektu bigClock, tak więc wyrażenie gotoAndStop ujęte w klamrach odnosi się do tego akurat obiektu. Po wykonaniu akcji with, jakiekolwiek pojawiające się później wyrażenie odnosi się już do bieżącego klipu filmowego.

Wyrażenie with może również zostać zagnieżdżone i oddziaływać na kilka obiektów jednocześnie. Oto przykład:

with (myFace) {

with (myEyes) {

gotoAndStop (2);

}

with (myMouth) {

gotoAndStop (2);

}

}

Takie zagnieżdżone wyrażenie daje taki sam efekt jak poniższe wyrażenia wykorzystujące akcję evaluate (rys. 5.25):

myFace.myEyes.gotoAndStop(2);

myFace.myMouth.gotoAndStop(2);

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
W celu wprowadzenia akcji with:

  1. Zaznacz przycisk lub ujęcie i otwórz paletę akcji.

  1. Wybierz Actions/with. W bloku edycji parametrów pojawi się pole Object.

  2. W polu Object wprowadź ścieżkę dostępu lub kliknij przycisk Insert a target path (rys. 5.26).

  3. Wybierz akcję dla wskazanego obiektu. Akcja ta będzie widoczna przy wyrażeniu with jako ujęta w klamry (rys. 5.27).

W celu wprowadzenia
zagnieżdżonych akcji with:

  1. Zaznacz przycisk lub ujęcie i otwórz paletę akcji.

  1. Wybierz Actions/with.

  2. W polu Object wprowadź pierwszą ścieżkę dostępu.

  3. Ponownie wybierz Actions/with.

  4. W polu Object wprowadź pierwszą zagnieżdżoną ścieżkę dostępu (rys. 5.28).

  5. Wybierz akcję dla pierwszego zagnieżdżonego obiektu.

  6. Zaznacz zamykającą klamrę pierwszego zagnieżdżonego wyrażenia with (rys. 5.29). Jeżeli tego nie zrobisz przed przejściem do następnego kroku, drugie zagnieżdżone wyrażenie typu with pojawi się wewnątrz poprzedniego.

  7. Ponownie wybierz Actions/with.

  8. W polu Object wprowadź drugą zagnieżdżoną ścieżkę dostępu, a następnie wybierz akcję dla drugiego zagnieżdżonego obiektu (rys. 5.30).

0x01 graphic

Rys. 5.26. Akcja with widoczna w oknie palety akcji. Pole Object zawiera ścieżkę dostępu do obiektu myFace

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x08 graphic
0x01 graphic

Rys. 5.31. Opcje wyboru składni dostępne są u dołu okna dialogowego Insert Target Path

Tabela 5.2. Odpowiedniki oznaczeń w składni używającej ukośnika oraz w składni z kropką

Ukośnik zamiast kropki
i akcja Tell Target

Jak dotąd, w konstruowaniu ścieżek dostępu używałeś kropki do oddzielania zagnieżdżonych obiektów klipów filmowych. Jednak Flash umożliwia oprócz tego wprowadzanie ścieżek dostępu z ukośnikiem podstawianym w miejsce kropki. Taka składnia (z ukośnikiem) funkcjonowała w poprzednich wersjach programu, dlatego też może stanowić wygodną alternatywę dla użytkowników związanych od dawna z Flashem. W oknie dialogowym Insert Target Path możesz zdecydować, czy chcesz używać ukośnika, czy też kropki (rys. 5.31).

Ukośnika używa się w sposób podobny do tego, jak komputer przedstawia organizację katalogów na dysku - z ukośnikiem właśnie, jako znakiem oddzielającym kolejne katalogi. I tak jak w przypadku komputerowych katalogów, możesz przebiegać hierarchię listew czasowych w górę lub w dół za pomocą kropek. Pojedyncza kropka wskazuje na bieżącą listwę czasową, dwie kropki - następną listwę powyżej bieżącej. Pojedynczy ukośnik pokazuje główną listwę czasową (root).

Zwróć uwagę, jak w składni z ukośnikiem używa się kropek do wskazywania ścieżek względnych - widać, jak bardzo mylące może się okazać jednoczesne używanie składni z kropką oraz składni z ukośnikiem. Na szczęście Flash nie pozwala na łączenie tych dwóch składni, ponieważ zapisane w ten sposób wyrażenia byłyby niezrozumiałe. Jeśli wprowadzasz wyrażenie evaluate, wywołujące metodę Go To obiektu, w przypadku składni używającej kropki wyglądałoby to tak:

Parent.Child.gotoAndStop(5);

Jednak w składni używającej ukośnika funkcjonalność wyrażenia ginie, jako że nie ma sensu zapis:

Parent/Child.gotoAndStop(5);

Kropka Ukośnik

.

/

_root

/

this

.

_parent

..

.

: (separator zmiennych)

0x08 graphic
Składnia używająca ukośnika nie działa z wyrażeniami evaluate, podobnie jak z wyrażeniami with. Z tego typu składni powinno się w zasadzie korzystać wyłącznie w towarzystwie akcji Tell Target, której używanie jest samo w sobie zniechęcające.

Akcja Tell Target, podobnie jak składnia z ukośnikiem, stanowi spadek po wcześniejszych wersjach Flasha. Właściwie była to bardzo potężna w działaniu akcja, jednak nowe możliwości wywoływania metod i szacowania właściwości obiektów za pomocą składni z kropką czynią akcję Tell Target zbędną. Chociaż więc możesz wywołać akcję Tell Target z palety akcji, program traktuje ją jako odrzuconą. Odrzucone akcje nie są polecane z powodu ich niezgodności z nową składnią oraz wyrażeniami języka ActionScript. Wszystkie odrzucone akcje możesz obejrzeć w menu Options na palecie akcji (rys. 5.32). Najlepiej będzie unikać składni używającej ukośnika oraz akcji Tell Target z powodu ich silnych związków z przeszłością, a zamiast tego skoncentrować się na korzystaniu z akcji evaluate, with oraz na posługiwaniu się składnią opartą na kropce.

0x01 graphic

Rys. 5.32. Wybranie Show Deprecated Syntax z menu Options na palecie akcji podświetla w oknie narzędzi palety wszystkie akcje, które stanowią pozostałości poprzednich wersji Flasha, a ich dłuższe używanie nie jest polecane

0x08 graphic
0x01 graphic

Rys. 5.33. Klip filmowy w roli pojemnika. Ten klip zawiera akcję stop w pierwszym ujęciu kluczowym. Pozostałe - oznaczone etykietą - ujęcia kluczowe mogą przechowywać przyciski, grafikę, animacje i każdy inny rodzaj informacji charakterystyczny dla Flasha. Do tego rodzaju informacji można łatwo dotrzeć, podając ścieżkę dostępu i przeskakując do żądanego ujęcia

0x01 graphic

Rys. 5.34. Klip filmowy w formie menu rozwijanego zawiera jednocześnie dwa stany menu - rozwinięte i zwinięte

Klipy filmowe jako pojemniki

Z tego,co dotychczas zaprezentowaliśmy w tym rozdziale, miałeś okazję nauczyć się, w jaki sposób nazywać twoje obiekty klipów filmowych, jak tworzyć do nich ścieżki dostępu oraz nawigować po ich listwach czasowych z poziomu dowolnej innej listwy czasowej twojego filmu. Ale jakie znaczenie ma ta zdolność kontrolowania listwy czasowej klipu filmowego dla prawdziwej interaktywności tworzonych projektów Flasha? Kluczem do rozwiązania tej kwestii jest potraktowanie klipów filmowych jako pojemników do przechowywania różnych elementów - animacji, przycisków, dźwięku, nawet danych. Przemieszczając się po listwie czasowej klipu filmowego do przodu i do tyłu, czy też odtwarzając poszczególne jej partie, zyskujesz dostęp do dowolnych spośród wymienionych elementów i to niezależnie od tego, co aktualnie dzieje się na scenie. W starszych wersjach Flasha używanie klipów filmowych w tym znaczeniu było jedynym sposobem na symulowanie zmiennych, liczników i innych rodzajów znaków-wypełniaczy. Chociaż więc rozbudowany we Flashu 5 język ActionScript oferuje nowoczesne zamienniki tych starych technik, ciągle efektywne jest posługiwanie się klipami filmowymi jako pojemnikami, szczególnie pojemnikami na grafikę i animację (rys. 5.33).

Na przykład, powszechnym sposobem wykorzystania klipów filmowych jest wprowadzenie na ich listwy czasowe odmiennych stanów, które przechodzą jeden w drugi. W rozdziale 4. budowałeś rozwijane menu, które zachowują się właśnie w taki sposób. W ogóle menu rozwijane jest właściwie takim obiektem klipu filmowego, zmieniającym swój stan między rozwiniętym i zwiniętym. Przyciski zawarte w klipie filmowym kontrolują, który z dwóch stanów możesz aktualnie oglądać, a jednocześnie umożliwiają nawigację poza listwą czasową klipu filmowego (rys. 5.34).

0x08 graphic
Innym przykładem jest przycisk wyboru (radio button). Tworzenie przycisku wyboru jest sposobem definiowania dwóch różnych stanów, zmieniających się pomiędzy stanem włączenia (on) i wyłączenia (off).

W celu utworzenia przycisku wyboru:

  1. Utwórz symbol klipu filmowego. Przejdź do trybu edycji i wstaw nowe ujęcie kluczowe.

  1. Nadaj pierwszemu ujęciu kluczowemu etykietę on, a drugiemu off.

  2. Wstaw nową warstwę. Zaznacz w nowej warstwie ujęcie kluczowe odpowiadające etykiecie off i otwórz paletę akcji. Wybierz Basic Actions/Stop.

Akcja stop zabezpiecza klip filmowy przed odtwarzaniem bez końca.

  1. Wstaw jeszcze jedną warstwę. Utwórz symbol przycisku i umieść jeden z jego klonów w ujęciu kluczowym odpowiadającym etykiecie off; kolejny klon umieść w ujęciu kluczowym odpowiadającym etykiecie on symbolu klipu filmowego.

  2. Zaznacz pierwszy klon przycisku i otwórz paletę akcji. Przypisz mu akcje:

on (release) {

gotoAndStop (on);

}

  1. Zaznacz drugi klon przycisku i przypisz mu akcje:

on (release) {

gotoAndStop (off);

}

  1. Utwórz w nowych warstwach grafiki dla obydwu etykiet, on i off, obrazujące ich stan i postać (rys. 5.35).

  2. Przeciągnij klon klipu filmowego z biblioteki na scenę do głównej listwy czasowej. Przetestuj film.

0x01 graphic

Rys. 5.35. Klip filmowy przycisku wyboru zawiera akcję stop w pierwszym ujęciu kluczowym i dwa zmieniające się stany. Przycisk w stanie off (u góry) powoduje przejście do stanu on (u dołu) i odwrotnie

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 5.36. Klip filmowy z pustym pierwszym ujęciem kluczowym będzie niewidoczny na scenie. Klip ten zawiera akcję Stop w warstwie Layer 2 i grafikę w warstwie Layer 1, startującą w klatce 2

0x01 graphic

Rys. 5.37. Klon klipu filmowego z pustym pierwszym ujęciem kluczowym pojawia się w postaci pustego kółeczka

Wszystko, co robisz, tworząc niewidzialny przycisk, ma także zastosowanie wobec klipu filmowego. To znaczy, pierwsze widoczne dla użytkownika ujęcie kluczowe pozostawia się puste, dzięki czemu klon jest początkowo niewidoczny na scenie. Jeśli pierwsze ujęcie kluczowe klipu filmowego jest puste i zawiera akcję kontrolującą ujęcia stop, zatrzymującą odtwarzanie w tym miejscu, możesz decydować o tym, w którym momencie wyświetlić inne ujęcia z listwy czasowej tego klipu filmowego. Przykładowo, mógłbyś stworzyć klip filmowy przedstawiający eksplozję, ale zostawiając puste pierwsze ujęcie kluczowe. Umieść ten klip filmowy nad ilustracją łodzi podwodnej i w odpowiednim czasie przejdź do kolejnego ujęcia, żeby odsłonić eksplozję.

Zauważ, że istnieją jeszcze inne sposoby na wykorzystanie języka ActionScript do ukrywania i odsłaniania zawartości klipu filmowego, a poznasz je w następnych rozdziałach. Jednak pamiętanie zarówno o metodzie prostej (bazującej na ujęciach, jak zilustrowano wyżej), jak i zaawansowanej (bazującej bezpośrednio na skrypcie) pomoże ci podjąć nowe wyzwania związane z tworzeniem animacji i budowaniem interaktywności.

W celu utworzenia
„niewidzialnego” klipu filmowego:

  1. Utwórz nowy symbol klipu filmowego i dodaj nowe ujęcie kluczowe.

  1. Zaznacz pierwsze ujęcie kluczowe i otwórz paletę akcji. Wybierz Basic Actions/Stop.

  2. Zostaw pierwsze ujęcie kluczowe puste i zacznij umieszczać w drugim ujęciu kluczowym grafikę, animację lub przyciski (rys. 5.36).

  3. Przeciągnij klon klipu filmowego z biblioteki na scenę do głównej listwy czasowej.

Klon pojawi się na scenie w postaci pustego kółeczka (rys. 5.37). Reprezentuje ono punkt środkowy klonu, dzięki czemu możliwe staje się precyzyjne umieszczenie klonu w wybranym miejscu.

0x08 graphic
Manipulatory zdarzeń
klipów filmowych

Jeden ze sposobów, w jaki obiekt klipu filmowego komunikuje się w środowisku Flasha, polega na wykorzystaniu jego własnego manipulatora zdarzeń, zwanego Clip Event (zdarzenie klipu filmowego). Miałeś już sposobność zobaczyć, jak zdarzenia myszy, zdarzenia klawiaturowe i obiekt Key wykrywają użycie myszy lub klawiatury. Zdarzenie klipu filmowego jest wyjątkowe pod tym względem, że obejmuje nie tylko reakcje czynione za pomocą myszy czy klawiatury, ale i kilka mniej oczywistych zdarzeń, w rodzaju wczytywania i usuwania klipu filmowego, odtwarzania poszczególnych klatek klipu filmowego i wczytywania do klipu dodatkowych danych z zewnątrz (rys. 5.38). Związek między tymi zdarzeniami polega na tym, że wszystkie one są przypisane do klonu klipu filmowego. Akcje wykonywane przez zdarzenia klipu filmowego są związane z tym klonem, dopóki nie ustali się inaczej.

Zdarzenia klipu filmowego są używane w różnych wariacjach podstawowego kontekstu ich zastosowania. Na przykład, Mouse up, Mouse down, Key up i Key down po prostu wykrywają moment, w którym występują te podstawowe zdarzenia (odpowiednio: wciśnięcie - zwolnienie klawisza myszy, wciśnięcie - zwolnienie klawisza na klawiaturze). Jako że powyższe zdarzenia są przypisane do klipu filmowego, a nie do przycisku, nie istnieje strefa aktywna (Hit), a zdarzenia Mouse down oraz Mouse up są wykrywane w każdym punkcie sceny. Podobnie zdarzenia Key up i Key down nie zawierają specyficznej informacji o tym, który klawisz miałby być wciśnięty, więc dowolny klawisz może wyzwolić zdarzenia.

Zwykle jednak zdarzenia klipu filmowego są używane w połączeniu z drugim zestawem wyrażeń ActionScript, służącym do maksymalnego wyzyskiwania zdarzeń lub dokonywania dodatkowych manipulacji informacją związaną ze zdarzeniem.

0x01 graphic

Rys. 5.38. Opcje zdarzenia klipu filmowego dostępne dla akcji onClipEvent

0x08 graphic
0x01 graphic

Rys. 5.39. Zdarzenie klipu filmowego Mouse up

Zdarzenia Key up i Key down w kombinacji z wyrażeniami warunkowymi, sprawdzającymi, który klawisz naciśnięto (za pomocą obiektu Key), przynoszą lepsze efekty w detekcji naciśniętego klawisza, niż którekolwiek z nich - zastosowane pojedynczo. W poprzednim rozdziale, na przykład, utworzyłeś wyrażenie warunkowe z obiektem Key, ale musiałeś jednocześnie stworzyć pętlę w głównej listwie czasowej, aby wyrażenie było nieustannie sprawdzane. Po przypisaniu zdarzenia Key up lub Key down do klipu filmowego nie będziesz więcej potrzebował pętli.

Zdarzenie EnterFrame jest wyzwalane zgodnie z daną prędkością odtwarzania (FPS) filmu. Tak więc, jeśli wynosi ona 12 klatek na sekundę, zdarzenie to jest wyzwalane 12 razy w ciągu sekundy. Warto zwrócić uwagę, że wyrażenia przypisane do zdarzenia EnterFrame Flash będzie wykonywał nieustannie. Skoro klipy filmowe naturalnie się zapętlają, to i wyrażenia przypisane do zdarzenia EnterFrame będą wykonywane nieprzerwanie.

Także zdarzenie Mouse move jest używane w związku z dodatkowymi wyrażeniami, umożliwiając śledzenie położenia kursora. Kiedy tylko mysz zostanie przesunięta, zaktualizowana zostanie jej pozycja. Nauczysz się wykorzystywać te i inne zdarzenia klipu filmowego w kolejnych rozdziałach, podejmujących zagadnienia związane z kontrolowaniem właściwości klipów filmowych i wprowadzaniem do Flasha różnych elementów z zewnątrz.

W celu wykrycia podstawowego zdarzenia zwolnienia klawisza myszy:

  1. Utwórz symbol klipu filmowego i przeciągnij jego klon z biblioteki na scenę.

  1. Zaznacz klon klipu filmowego i otwórz paletę akcji.

  2. Z okna narzędzi palety wybierz Actions/ onClipEvent.

  3. W bloku edycji parametrów wybierz Mouse up (rys. 5.39).

  1. 0x08 graphic
    W oknie narzędzi wybierz Actions/ evaluate.

  2. W polu Expression wprowadź ścieżkę dostępu, następnie wpisz kropkę i dalej podstawową akcję (rys. 5.40). Akcja ta zostanie wykonana po wykryciu zdarzenia klipu filmowego.

  3. Przetestuj film.

Jak tylko zwolnisz klawisz myszy (w którymkolwiek miejscu na scenie), wykryte zostanie zdarzenie klipu filmowego Mouse up i Flash wykona akcję określoną w wyrażeniu evaluate.

Wskazówka

  • Po zaznaczeniu klipu filmowego wystarczy tylko wybrać akcję i Flash automatycznie wstawi manipulator zdarzenia klipu filmowego przed akcję. Domyślne zdarzenia klipu filmowego to onClipEvent (load). Żeby je zmienić, zaznacz to wyrażenie, a następnie wybierz inne zdarzenie.

W celu użycia zdarzeń Key up
lub Key down wraz z obiektem Key:

  1. Utwórz symbol klipu filmowego i przeciągnij jego klon z biblioteki na scenę.

  1. Zaznacz klon i otwórz paletę akcji.

  2. W oknie narzędzi palety wybierz Actions/ onClipEvent.

  3. W bloku edycji parametrów wybierz Key up lub Key down (rys. 5.41).

  4. Wybierz Actions/if. W bloku edycji parametrów pojawi się pole Condition.

  5. W polu Condition wprowadź wyrażenie:

Key.getCode()==Key.SPACE

Pierwszy fragment wyrażenia wywołuje metodę getCode() obiektu Key, zwracającą ostatnio wciśnięty klawisz. Ostatni fragment wyrażenia stanowi właściwość obiektu Key, specyfikującą klawisz spacji. Podwójny znak równości (=) oznacza sprawdzenie równości.

0x01 graphic

Rys. 5.40. Pole Expression dla wyrażenia evaluate

0x01 graphic

Rys. 5.41. Zdarzenie klipu filmowego Key up

0x08 graphic
0x01 graphic

Rys. 5.42. Akcja nextFrame() pojawia się w głównej listwie czasowej, kiedy wystąpi zdarzenie Key up i warunek if okaże się prawdziwy

0x01 graphic

Rys. 5.43. Zdarzenie klipu filmowego EnterFrame

0x01 graphic

Rys. 5.44. Akcja nextFrame() występuje w głównej listwie czasowej kiedy spełniony zostaje warunek w wyrażeniu if

Wskazówka

  • Zawsze, gdy chcesz, żeby wyrażenie ActionScript było wykonywane nieustannie, używaj zdarzenia klipu filmowego onClipEvent (enterFrame). Z następnych akapitów dowiesz się, jak wykorzystać to zdarzenie do sprawdzenia czasu wczytywania się filmu do okna witryny sieciowej.

  1. Wybierz Actions/evaluate.

  2. W polu Expression w bloku edycji parametrów wprowadź ścieżkę dostępu, po niej wpisz kropkę i na końcu podstawową akcję (rys. 5.42).

  3. Przetestuj film. Metoda getCode() obiektu Key zwraca ostatnio wciśnięty klawisz. Jeśli jednak użyjesz zdarzenia klipu filmowego Key up, Flash tylko sprawdzi warunek obiektu Key, kiedy klawisz zostanie zwolniony. Kombinacja tych dwóch elementów daje ci dostęp jednocześnie do właściwości obiektu Key i zdarzenia Key up, odpowiedzialnego za zwolnienie klawisza.

W celu utworzenia pętli akcji
za pomocą zdarzenia EnterFrame:

  1. Utwórz symbol klipu filmowego i przeciągnij jego klon z biblioteki na scenę.

  1. Zaznacz klon i otwórz paletę akcji.

  2. Wybierz Actions/onClipEvent.

  3. W bloku edycji parametrów wybierz EnterFrame (rys. 5.43).

  4. Wybierz Actions/if. W bloku edycji parametrów pojawi się pole Condition.

  5. W polu Condition wprowadź wyrażenie:

Key.getCode()==Key.SPACE

Jest to takie samo wyrażenie warunkowe, jakie skonstruowałeś w poprzednim ćwiczeniu. Jednak w tym przypadku Flash nie czeka ze sprawdzeniem warunku na pojawienie się zdarzenia Key up lub Key down. Tutaj warunek jest sprawdzany przy każdym odtworzeniu klatki klipu filmowego.

  1. Wybierz Actions/evaluate.

  2. W polu Expression w bloku edycji parametrów wprowadź ścieżkę dostępu, kropkę i na końcu podstawową akcję (rys. 5.44).

  1. Przetestuj film.

0x08 graphic
Animacje wstępne

Cały wysiłek włożony w przygotowanie złożonych elementów interaktywnych, działających na wielu listwach czasowych, pójdzie na marne, jeśli odbiorca filmu będzie musiał czekać zbyt długo na jego wczytanie do okna witryny sieciowej lub wręcz zrezygnuje z jej oglądania. Można tego uniknąć dzięki przygotowaniu krótkich animacji zajmujących uwagę użytkownika i niedopuszczających do odtworzenia głównego filmu Flasha do momentu, kiedy do komputera użytkownika zostanie przekazana z sieci wystarczająca ilość danych. Oznacza to, że odtwarzanie jest opóźniane, dopóki nie będą gotowe wszystkie klatki filmu. Dopiero wtedy rozpoczyna się odtwarzanie od pierwszego ujęcia. W czasie oczekiwania na ukończenie ładowania filmu powszechnie stosowanym urozmaiceniem są animacje wstępne (preloaders) lub inne króciutkie, zapętlone animacje, przykuwające uwagę odbiorców. Takie animacje wstępne muszą mieć niewielkie rozmiary, z uwagi na to, iż mają się wczytywać niemal natychmiast, a także powinny być komunikatywne, pozwalając ocenić odbiorcom, na co czekają, ewentualnie - jak długo to ma potrwać.

Istnieją dwa sposoby tworzenia wyrażeń warunkowych wewnątrz animacji wstępnych, pozwalających sprawdzić ilość wczytanych klatek. Pierwszy z nich opiera się na akcji ifFrameLoaded. Chociaż jest to jedna z odrzuconych akcji, łatwo zrobić z niej użytek, ponieważ wystarczy tylko określić pożądaną liczbę klatek w jednym prostym wyrażeniu.

Wadą akcji ifFrameLoaded jest to, że nie podaje ona informacji o tym, ile klatek zostało wczytanych w stosunku do całkowitej liczby klatek twojego filmu. Dla uzyskania takiej informacji używa się właściwości _framesloaded i _totalframes. Kiedy te dwie właściwości są porównywane w wyrażeniu warunkowym z akcją if, można przygotować animację wstępną, mierzącą ilość wczytanych klatek i wyświetlającą pasek postępu.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 5.45. Zasada funkcjonowania animacji wstępnej. Klip filmowy jest odtwarzany, dopóki nie będzie dostępna wystarczająca ilość klatek. Dopiero wtedy rozpoczyna się odtwarzanie ujęć z głównej listwy czasowej

0x01 graphic

Rys. 5.46. Ten wstępny klip filmowy zawiera animację gościa przytupującego sobie nogą i wyświetla wyjaśniający tekst. Animacja będzie odtwarzana w pętli

W przypadku obu typów animacji wstępnych strategia jest taka sama. Taka animacja to z reguły klip filmowy rezydujący w pierwszym ujęciu na głównej listwie czasowej. Omawiane ujęcie zawiera akcję stop, zabezpieczającą film przed odtworzeniem. Zdarzenie klipu filmowego EnterFrame sprawdza, czy określone ujęcia z głównej listwy czasowej zostały już wczytane. Jeśli warunek jest spełniony, Flash przechodzi do odtwarzania ujęć z głównej listwy czasowej. W przypadku, gdy warunek nie zostanie spełniony, w dalszym ciągu odtwarzana będzie animacja zawarta w klipie filmowym (rys. 5.45).

W celu utworzenia
prostej animacji wstępnej:

  1. Utwórz symbol klipu filmowego zawierający krótką animowaną pętlę, służącą jako zabawne urozmaicenie (rys. 5.46).

  1. Przeciągnij klon symbolu z biblioteki na scenę.

  2. Zaznacz pierwsze ujęcie kluczowe na głównej listwie czasowej i przypisz mu akcję stop.

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    Wstaw nowe ujęcie kluczowe w klatce 2. i utwórz swoją główną animację, zaczynając od tego punktu (5.47).

  2. Zaznacz klip filmowy i otwórz paletę akcji.

  3. Wybierz Actions/onClipEvent. W bloku edycji parametrów wybierz EnterFrame.

  4. Wybierz Actions/onClipEvent. W bloku edycji parametrów wybierz odpowiednią klatkę (rys. 5.48). Warunek zostanie spełniony w momencie wczytania podanej ilości klatek, a wówczas Flash wykona akcję podaną w wyrażeniu ifFrameLoaded.

  5. Wybierz Actions/evaluate. W polu Expression wprowadź:

_root.gotoAndPlay(2)

Wpisanie _root jest konieczne z uwagi na fakt, że zdarzenie klipu filmowego przypisane jest do listwy czasowej klipu filmowego, nie do listwy czasowej głównego filmu.

  1. Przetestuj film. Z menu View wybierz Bandwidth Profiler. Jest to okno informacyjne powyżej twojego filmu, dostępne w trybie Test Movie, a pokazujące liczbę klatek filmu oraz ilość danych w każdym ujęciu - w postaci pionowych słupków (rys. 5.49). Jeśli słupki wykraczają poza dolną poziomą czerwoną linię, to znaczy, że ilość danych jest zbyt duża - jak na wybrane ustawienie przepustowości (bandwidth) - i będą one odczytywane skokowo.

  2. Z menu View wybierz Show Streaming.

0x01 graphic

Rys. 5.47. Główna listwa czasowa zawiera animację wstępną w pierwszym ujęciu, a także resztę filmu pojawiającego się później

0x01 graphic

Rys. 5.48. Żeby warunek ifFrameLoaded został spełniony, klatka 10. musi zostać wczytana do końca. Skoro Flash wczytuje ujęcia sekwencyjnie, to znaczy, że najpierw muszą być wczytane klatki od 1. do 9.

0x01 graphic

Rys. 5.49. Okno narzędzia Bandwidth Profiler pokazuje pojedyncze klatki powodujące przerwy w odtwarzaniu, gdyż ilość danych przekracza ustawioną przepustowość połączenia. Dodatkowe jasne i ciemne słupki reprezentują różne ujęcia

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 5.50. Okno narzędzia Bandwidth Profiler po wybraniu Show Streaming

Flash umożliwia zasymulowanie określonej przepustowości połączenia (rys. 5.50). Zielony pasek u góry jest wskaźnikiem postępu. Trójkątny znacznik wskazuje punkt początkowy odtwarzania - znajduje się on w klatce 1. do momentu, kiedy wskaźnik postępu minie klatkę podaną przez ciebie w parametrze ifFrameLoaded. Dopiero wtedy nastąpi skok do klatki 2. i rozpocznie się odtwarzanie filmu.

Wskazówka

  • Nie ujrzysz animacji wstępnej w działaniu, dopóki twoja główna animacja nie będzie zawierała odpowiednio dużych grafik, wymagających dłuższego czasu ładowania. Jeżeli przygotowałeś małą animację, animacja wstępna tylko mignie, jako że dane zostaną wczytane bardzo szybko i niemal natychmiast rozpocznie się odtwarzanie głównego filmu.

Narzędzie Bandwidth Profiler

Bandwidth Profiler jest bardzo poręcznym narzędziem, pozwalającym ocenić sposób przepływu danych w twoich filmach Flasha oraz szybkość wczytywania do okna witryny sieciowej. W trybie Test Movie wybierz View/Bandwidth Profiler (lub wciśnij Ctrl+B), aby uzyskać taką informację. W lewym segmencie okna podawane są informacje o filmie, np. rozmiar sceny, prędkość odtwarzania, rozmiar pliku, całkowity czas trwania filmu oraz animacji wstępnej (w klatkach i sekundach). Znajdziesz tam także ustawienia przepustowości, symulujące rzeczywistą szybkość transferu dla ustawionej wartości. Wartość tę można zmienić w menu Debug, wybierając prawdopodobną prędkość modemu odbiorcy filmu. Wybrać można np. pomiędzy wartościami 28,8 i 56 kb.

Wykres po prawej stronie okna narzędzia Bandwidth Profiler pokazuje, jaką ilość danych zawiera każda z klatek w twoim filmie.

Wykres ten można wyświetlić na dwa sposoby: w trybie Streaming Graph (View/Streaming Graph) lub w trybie Frame By Frame Graph (View/Frame By Frame Graph). Pierwszy tryb prezentuje przebieg ładowania filmu na stronę metodą strumieniową, drugi pozwala zobaczyć ilość danych w poszczególnych klatkach. W trybie Streaming Graph możesz określić, które z ujęć będą prawdopodobną przyczyną opóźnień w odtwarzaniu. Wystarczy, że spojrzysz na słupki przekraczające ustawioną wartość przepustowości.

Żeby poznać rzeczywistą szybkość transmisji twojego filmu, wybierz View/Show Streaming. Flash zasymuluje odtwarzanie filmu na witrynie sieciowej przy zadanej szybkości połączenia. Zielony poziomy pasek w górze okna pokazuje klatki, które zostały już wczytane, podczas gdy ikona trójkąta oznacza aktualnie odtwarzaną klatkę.

0x08 graphic
W celu utworzenia
złożonej animacji wstępnej:

  1. Utwórz symbol klipu filmowego zawierający krótką sekwencję animacji z czytelnie zaznaczonymi początkiem i zakończeniem (rys. 5.51).

  1. Przeciągnij klon symbolu z biblioteki na scenę.

  2. Zaznacz pierwsze ujęcie kluczowe na głównej listwie czasowej i przypisz mu akcję stop.

  3. Wstaw nowe ujęcie kluczowe w klatce 2. i utwórz swoją główną animację, zaczynając od tego punktu.

  4. Zaznacz klip filmowy i otwórz paletę akcji.

  5. Wybierz Actions/onClipEvent, a w bloku edycji parametrów - EnterFrame.

  6. Wybierz Actions/if.

  7. W polu Condition wpisz:

_root._framesloaded >= _root._totalframes

Pierwszy człon wyrażenia zwraca ilość klatek już wczytanych do głównej listwy czasowej. Drugi człon zwraca całkowitą liczbę ujęć w głównej listwie czasowej. Znak „większe niż” (>) oraz znak równości (=), występujące razem, oznaczają „większe lub równe niż”.

  1. Wybierz Actions/evaluate. W polu Expression wpisz:

_root.gotoAndPlay(2)

  1. Teraz wybierz Actions/else. Wyrażenie else wprowadza alternatywę dla pierwszego warunku w wyrażeniu if. Jeżeli warunek zostanie spełniony, Flash przejdzie do klatki 2. na głównej listwie czasowej i rozpocznie odtwarzanie. W przypadku niespełnienia warunku, Flash mimo wszystko wykona wszelkie akcje poprzedzone wyrażeniem else.

0x01 graphic

Rys. 5.51. Ten klip filmowy zawiera animację wypełniającego się paska oraz wyjaśniający tekst umieszczony powyżej

0x08 graphic
0x01 graphic

Rys. 5.52. Kompletny kod ActionScript dla tej nieco bardziej skomplikowanej animacji wstępnej

0x01 graphic

Rys. 5.53. Narzędzie Bandwidth Profiler po wybraniu Show Streaming. Zwróć uwagę, jak postęp w ładowaniu (5 z 10 klatek zostało całkowicie wczytanych) wpływa na proporcje pokazywane na wskaźniku (około 50 procent) w czasie jego animacji (klip filmowy animacji wstępnej)

  1. Wybierz Actions/evaluate. W polu Expression wpisz:

this.gotoAndStop

(Math.floor ((_root._framesloaded/ _root._totalframes)* this._totalframes))

To wyrażenie wygląda dość skomplikowanie, ale okaże się proste, kiedy już raz je odczytasz. Oblicza ono ilość klatek załadowanych do głównej listwy czasowej, a następnie przeskakuje do odpowiedniej klatki na listwie czasowej animacji wstępnej. Spróbujmy przeanalizować kod. Po pierwsze, wewnętrzne wyrażenie

_root._framesloaded/_root. _totalframes

podaje ilość wczytanych klatek. Ta linia zostaje pomnożona przez wyrażenie this._totalframes, które określa ilość klatek w animacji wstępnej. Dalej używamy metody floor obiektu Math, zamieniającej dowolną wartość na liczbę całkowitą (i zaokrąglającej w dół). Wkrótce nauczysz się więcej o obiekcie Math; na razie wystarczy wiedzieć, że umożliwia on wykonywanie obliczeń matematycznych. Kiedy więc Flash ma już liczbę całkowitą (czyli taką, która nie zawiera ułamków lub części dziesiętnych), używa jej jako numeru ujęcia w wyrażeniu this.gotoAndStop (rys. 5.52).

  1. Przetestuj film za pomocą narzędzia Bandwidth Profiler w trybie Show Streaming (rys. 5.53).

0x08 graphic
Wskazówki

  • Wartość zwracana przez wyrażenie _framesloaded/_totalframes nie odpowiada dokładnie wskazaniom postępu wczytywania. Odpowiada ona procentowej ilości ujęć, ale niekoniecznie procentowej ilości danych. Jeśli twój film zawiera dane rozrzucone po różnych ujęciach, wartość wyrażenia _framesloaded/ _totalframes nie da ci obrazu ilości danych dotychczas załadowanych i ilości wciąż jeszcze oczekiwanej.

  • To tylko jeden z wielu sposobów na przygotowanie animacji wstępnej, obrazującej postęp wczytywania filmu. Jednak podstawowa idea działania tej funkcji jest jednakowa dla każdego z nich. Najpierw porównujesz właściwości _framesloaded oraz _totalframes. Potem sprawiasz, żeby twój klip filmowy animacji wstępnej odpowiadał w jakiś sposób rosnącej powoli wartości zwracanej przez wyrażenie _framesloaded/ _totalframes. W kolejnych rozdziałach nauczysz się, w jaki sposób szacować inne właściwości filmu, np. ich rozmiar lub krycie. Tak więc, zamiast odtwarzać niektóre tylko klatki, można - w zależności od postępu w ładowaniu - zwiększać rozmiar okna klipu filmowego lub jego krycie.

Rozdział 5.

148

147

Zarządzanie zasobami Flasha

5

Zarządzanie
zasobami Flasha

Nazwa klonu klipu filmowego

Obiekt Date

Obiekt klipu filmowego

Paleta akcji

Nazwa symbolu klipu filmowego

Klon przycisku

Klip filmowy smallClock (wewnątrz klipu bigClock)

Kliknij tę ikonę trójkąta...

... drzewko zostanie rozwinięte

Klip filmowy bigClock

Tryb Relative

Tryb Absolute

To jest klatka 2

Rys. 5.30. Ostateczna postać zagnieżdżonych wyrażeń z akcją with

Rys. 5.28. Akcja with (myEyes) została zagnieżdżona w akcji with (myFace)

Klip filmowy myMouth (wewnątrz klipu myFace)

Klip filmowy myEyes (wewnątrz klipu myFace)

Klip filmowy myFace

Rys. 5.27. Akcja gotoAndStop(2), jak również wszystkie inne akcje ujęte w wewnętrznych klamrach odnoszą się do obiektu myFace

Puste pierwsze ujęcie kluczowe

Akcja Stop

Ikona przycisku Insert a target path

Okno dialogowe Insert Target Path

Drzewo hierarchii plików

Dostępne listwy czasowe

Pole określania ścieżki dostępu

Klon klipu filmowego o nazwie bigClock

Przycisk

Klip filmowy secondClock

Klip Filmowy bigClock

Przycisk (wewnątrz klipu bigClock)

Rys. 5.29. Zaznaczenie zamykającej klamry daje pewność, że twoje następne wyrażenie zostanie wstawione wewnątrz akcji with (myFace), a nie akcji with (myEyes)

Klon klipu filmowego

Akcja stop

W czasie odtwarzania animacji wstępnej jednocześnie sprawdzany jest postęp we wczytywaniu

Po wczytaniu wszystkich klatek rozpoczyna się ich odtwarzanie, a klon animacji wstępnej jest usuwany z głównej listwy czasowej

Akcja stop

Klip filmowy animacji wstępnej

Ujęcia filmu, które zostaną wczytane

Przepustowość połączenia

Powoduje przerwy w odtwarzaniu

Klatka 10.

Aktualnie odtwarzane ujęcie

Wskaźnik postępu ładowania

Wskaźnik postępu ładowania

Zarządzanie zasobami Flasha

Nazywanie klonów

Ścieżki dostępu

Ścieżki dostępu

Ścieżki względne i bezwzględne

Ścieżki względne i bezwzględne

Ścieżki względne i bezwzględne

Używanie akcji with

Ukośnik i akcja Tell Target

Klipy filmowe jako pojemniki

Klipy filmowe jako pojemniki

Manipulatory klipów filmowych

Manipulatory klipów filmowych

Animacje wstępne

Animacje wstępne

Animacje wstępne

Nawigowanie klipów filmowych

Nazywanie klonów

Ścieżki dostępu

Ścieżki dostępu

Ścieżki względne i bezwzględne

Ścieżki względne i bezwzględne

Ścieżki względne i bezwzględne

Używanie akcji with

Ukośnik i akcja Tell Target

Klipy filmowe jako pojemniki

Manipulatory klipów filmowych

Manipulatory klipów filmowych

Animacje wstępne

Animacje wstępne

Animacje wstępne

Animacje wstępne



Wyszukiwarka

Podobne podstrony:
rB-04, Księgozbiór, Studia, Informatyka
r00-04, Księgozbiór, Studia, Informatyka
r04-04, Księgozbiór, Studia, Informatyka
Podz-04, Księgozbiór, Studia, Informatyka
rA-04, Księgozbiór, Studia, Informatyka
r09-04, Księgozbiór, Studia, Informatyka
r08-04, Księgozbiór, Studia, Informatyka
r11-04, Księgozbiór, Studia, Informatyka
r12-t, Księgozbiór, Studia, Informatyka
Metalurgia wyklad 04, Księgozbiór, Studia, Metalurgia
Informatyka-wyklady, Księgozbiór, Studia, Informatyka

więcej podobnych podstron