GRAFIKA ANIMACYJNA 1

Podobne dokumenty
GRAFIKA ANIMACYJNA 1

Ćwiczenie 11 Dynamiczne ładowanie treści wyświetlanych

Ćwiczenie 22 Dynamiczne wczytywanie tekstu z pliku.txt

INTERAKTYWNA KOMUNIKACJA WIZUALNA. Flash - podstawy

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Ćwiczenie 1 Galeria zdjęć

1 Podstawy c++ w pigułce.

Krótki kurs JavaScript

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Cw.12 JAVAScript w dokumentach HTML

Wykład 2 Składnia języka C# (cz. 1)

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

Tworzenie Stron Internetowych. odcinek 10

Podstawy Programowania C++

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

1 Podstawy c++ w pigułce.

Ćwiczenie 23 Praca z plikiem.psd

Podstawy programowania skrót z wykładów:

JAVAScript w dokumentach HTML (1)

Ćwiczenie 25 Działania matematyczne we Flashu

Programowanie w języku Python. Grażyna Koba

Odczyt danych z klawiatury Operatory w Javie

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Poznajemy język ACTIONSCRIPT 3.0

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Języki skryptowe w programie Plans

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Funkcje i instrukcje języka JavaScript

JAVAScript w dokumentach HTML - przypomnienie

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Umieszczanie kodu. kod skryptu

PHP: bloki kodu, tablice, obiekty i formularze

Adobe Flash CS6 i ActionScript 3.0 : interaktywne projekty od podstaw / Paweł Zakrzewski. Gliwice, cop Spis treści

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Materiały do laboratorium MS ACCESS BASIC

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy JavaScript ćwiczenia

Język ludzki kod maszynowy

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pascal - wprowadzenie

Programowanie obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Ćwiczenie 6 Animacja trójwymiarowa

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Dodanie nowej formy do projektu polega na:

Układy VLSI Bramki 1.0

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

7. Pętle for. Przykłady

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

XML extensible Markup Language. część 5

Spis treści. Wstęp...5 Co daje ActionScript... 5 Gdzie dołączać skrypty... 6 Prosta interaktywna animacja... 7

Platformy Programistyczne Podstawy języka Java

4. Funkcje. Przykłady

Języki programowania zasady ich tworzenia

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Podstawy Programowania Podstawowa składnia języka C++

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Programowanie obiektowe

Pętla for. Wynik działania programu:

Wprowadzenie do Scilab: podstawy języka Scilab

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Multimedia JAVA. Historia

Liczby losowe i pętla while w języku Python

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Modelowanie rynków finansowych z wykorzystaniem pakietu R

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Ćwiczenie 1 Automatyczna animacja ruchu

REKLAMA INTERNETOWA WYMAGANIA TECHNICZNE

JAVAScript w dokumentach HTML (2)

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawowe części projektu w Javie

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Specyfikacja reklamy tekstowej i bannerowej na portalu GoldenLine.pl

Podstawy programowania w języku C i C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Wykład 03 JavaScript. Michał Drabik

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Programowanie w języku C++ Grażyna Koba

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

LibreOffice Calc VBA

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Transkrypt:

1

Grafika Animacyjna opracowanie: dr Joanna Sekulska-Nalewajko Wykład dla Studiów Podyplomowych GRAFIKA KOMPUTEROWA I TECHNIKI MULTIMEDIALNE Rok akademicki 2011/2012 2

Adobe Flash Professional CS 5.5 Zmodyfikowany interfejs użytkownika Ulepszona praca z grafiką ActionScript 3.0 niskopoziomowy, obiektowy język programowania; szybciej wykonywany niż AS 2.0; nowa maszyna wirtualna AVM2; sygnalizacja większej liczby rodzajów błędów; Zgodność wersji 3

Zgodność z poprzednimi wersjami Flash Player gwarantuje pełną zgodność wstecz z dotychczas opublikowanymi treściami. Każda treść, która działała w poprzedniej wersji programu Flash Player, działa także w programie Flash Player 9 i jego późniejszych wersjach. 5

Zgodność z poprzednimi wersjami Jednak wprowadzenie języka ActionScript 3.0 w wersji Flash Player 9 stwarza pewne utrudnienia we współdziałaniu między starymi a nowymi treściami działającymi w programie Flash Player 9 lub jego późniejszych wersjach. Dalej wymieniane są te utrudnienia mające związek ze zgodnością wersji: 6

Zgodność z poprzednimi wersjami Jeden plik nie może zawierać jednocześnie kodu w języku ActionScript 1.0 lub 2.0 i kodu w języku ActionScript 3.0. Kod ActionScript 3.0 może załadować plik SWF napisany w języku ActionScript 1.0 lub 2.0, ale nie ma dostępu do zmiennych i funkcji w takim pliku SWF. 7

Zgodność z poprzednimi wersjami Pliki SWF napisane w języku ActionScript 1.0 lub 2.0 nie mogą ładować plików SWF napisanych w języku ActionScript 3.0. Oznacza to, że pliki SWF stworzone w programie Flash 8, Flex Builder 1.5 lub wcześniejszych wersjach tych programów nie mogą ładować plików SWF napisanych w języku ActionScript 3.0. 8

Zgodność z poprzednimi wersjami Jedynym wyjątkiem od tej reguły jest sytuacja, w której plik SWF w języku ActionScript 2.0 sam zastępuje się plikiem SWF w języku ActionScript 3.0, a wersja pliku SWF w języku ActionScript 2.0 nie załadowała uprzednio żadnych treści (na żadnym poziomie). W języku AS 2.0 plik SWF może wykonać taką operację poprzez wywołanie metody loadmovienum() z zerową wartością parametru level (w nawiasie). 9

Zgodność z poprzednimi wersjami Co do zasady pliki SWF napisane w języku AS 1.0 lub 2.0 wymagają migracji, jeśli mają współdziałać z plikami SWF napisanymi w języku AS 3.0. Załóżmy, że stworzyliśmy odtwarzacz multimedialny w języku AS 2.0. Odtwarzacz ten ładuje różne treści utworzone w języku AS 2.0. Nie będzie możliwe załadowanie do odtwarzacza nowych treści utworzonych w języku AS 3.0. 10

Ograniczenia wersji Flash Player Obsługiwana funkcjonalność Flash Player 7 Flash Player 8 Flash Player 9 i 10 Może ładować SWF opublikowane dla wersji 7 i wcześniejszych 8 i wcześniejszych 9 (lub 10) i wcześniejszych Zawiera maszynę AVM AVM1 AVM1 AVM1 i AVM2 Wykonuje SWF napisane w języku ActionScript 1.0 i 2.0 1.0 i 2.0 1.0, 2.0 i 3.0 11

Import plików PSD Flash zezwala na importowanie plików PSD i zachowanie, a potem edycję istniejących tam warstw. Możemy więc przygotować całkowicie projekty graficzne w programie Adobe Photoshop, a potem we Flashu tylko dodać efekty animacji. 24

Photoshop vs Flash Projekt wykonany w Adobe Photoshop i zapisany jako plik PSD Importowanie projektu do środowiska Flash 25

Opcje wczytywania warstw 26

Opcje wczytywania warstw tekstowych 27

Opcje wczytywania warstw z grafiką 28

Projekt po wczytaniu do Flasha 29

ActionScript Język stworzony dla Flasha Bazuje na modelu języka skryptowego Ukształtowany do wersji 2.0 we Flash 5 Model obiektowy we Flash MX ActionScript 3.0 od Flash CS 30

Action Script Jest to język służący do dodawania do animacji wielu ciekawych elementów: Sterowania animacją Interakcji z użytkownikiem Linków i nawigacji Obliczeń Formularzy Tworzenia obiektów dynamicznych... 31

ActionScript 3.0 Większa dynamiczność projektów Lepsza obsługa zdarzeń Możliwość dynamicznego tworzenia przycisków Lepsza obsługa surowej grafiki Skrypty umieszczane na linii czasowej Nowe klasy AS (Sprite, Shape...) itd. 32

Nowe klasy w AS 3.0 Nowa klasa Sprite to lekki element składowy, podobny do klasy MovieClip, ale lepiej przystosowany do użycia w charakterze klasy bazowej składników interfejsu użytkownika. Nowa klasa Shape reprezentuje surowe kształty wektorowe. Instancje tych klas można tworzyć w sposób naturalny za pomocą operatora new i w dowolnym momencie dynamicznie zmieniać ich lokalizację w hierarchii dziedziczenia. 33

Obsługa danych i treści dynamicznych Język ActionScript 3.0 zawiera intuicyjne i spójne w całym interfejsie API mechanizmy służące do ładowania i obsługi zasobów oraz danych w aplikacji. Nowa klasa Loader udostępnia jednolity mechanizm ładowania plików SWF i obrazów oraz zapewnia dostęp do szczegółowych informacji o załadowanej treści. 34

Obsługa danych i treści dynamicznych Klasa URLLoader udostępnia odrębny mechanizm ładowania tekstu i danych binarnych w aplikacjach zorientowanych na manipulowanie danymi. Klasa Socket oferuje mechanizmy odczytywania i zapisywania danych binarnych w gniazdach serwera, w dowolnym formacie. 35

ActionScript 3.0 Sercem języka ActionScript są obiekty i klasy Obiekt jest typem danych, który wykorzystujemy do kontrolowania filmu. Obiektami są np: dźwięk, tekst, grafika, klip filmowy wartość liczbowa, data, tablica (zbiór danych) 36

ActionScript 3.0 Wszystkie tworzone obiekty należą do większej zbiorczej grupy zwanej Klasą. Np. klasa Sound klasa Video klasa Array klasa Math Obiekty tworzony w danej klasie jest egzemplarzem danej klasy. 37

ActionScript 3.0 Nauka programowania sprowadza się więc do poznania możliwości obiektów i ich klas oraz do wykorzystania ich do współdziałania i interakcji z użytkownikiem. 38

ActionScript 3.0 Obiekty z jednej klasy mogą różnić się między sobą właściwościami We Flashu każda z klas ma predefiniowany zestaw właściwości np. klasa Sound ma właściwość length określającą czas trwania dźwięku (w ms) klasa MovieClip ma właściwość height, width, x, y, rotation, które określają wymiary, położenie... 39

ActionScript 3.0 Obiekty mogą wykonywać też pewne czynności, które nazywa się metodami Każda klasa ma własny zestaw metod np.: klasa MovieClip posiada metodę gotoandstop(), która zmienia aktywną klatkę klasa Date posiada metodę getday(), która pobiera bieżący dzień tygodnia. Mówimy, że dana metoda jest wywoływana przez obiekt albo, że obiekt wywołuje metodę 40

ActionScript 3.0 Notacja kropkowa umożliwia łączenie obiektów, ich właściwości i metod w instrukcje: pierwszy_mc.width = 155; drugi_mc.rotation = 45; trzeci_mc.gotoandstop(10); czwarty_mc.scalex = 1.5; Mouse.hide(); 41

Znaki specjalne Znaki interpunkcyjne: ; - (średnik) kończy wiersz instrukcji { } - (nawias klamrowy) grupuje instrukcje, które mają być wykonane razem np. wewnątrz funkcji function dothis(event:mouseevent):void { pierwszy_mc.stop(); pierwszy_mc.rotation = 45; } 42

Znaki specjalne Znaki interpunkcyjne:, - (przecinek) oddziela parametry przekazywane do metod pierwszy_mc.gotoandstop( Scene 1,20); Wielkie i małe litery AS rozróżnia wielkość liter. 43

Komentarz // - komentuje jedną linie kodu /*... */ - komentuje fragment kodu /* function dothis(event:mouseevent):void { pierwszy_mc.stop(); pierwszy_mc.rotation = 45; } */ 44

Operatory Operatory to specjalne symbole (a niekiedy słowa) służące do wykonywania obliczeń. Używane są do wykonywania operacji matematycznych: Operator dodawania (+) Operator odejmowania(-) var sum:number = 23 + 32; var roznica:number = 43-32; 45

Operatory Operator dodawania (+) Jeśli oba operandy są ciągami znaków, operator dodawania zwraca ciąg znaków będący konkatenacją obu operandów. var liczba:string = 5 + 5 ; //55 46

Operatory multiplikatywne E=mc 2 var energy:number = mass * speedoflight * speedoflight; 47

Operatory jednorgumentowe operator inkrementacji (++) operator dekrementacji (--) - przyjmują tylko jeden operand. zmienna1++ zmienna2 -- zmienna3 += 5 zmienna4 -=10 48

Operatory jednorgumentowe Gdy w większym wyrażeniu występuje operator przyrostkowy, wartość wyrażenia jest zwracana przed przetworzeniem operatora przyrostkowego. Poniższy kod demonstruje, że wartość wyrażenia xnum++ jest zwracana zanim dojdzie do inkrementacji. var xnum:number = 0; trace(xnum++); // 0 trace(xnum); // 1 var xnum:number = 0; trace(++xnum); // 1 trace(xnum); // 1 Operatory przedrostkowe - inkrementacja lub dekrementacja jest wykonywana przed zwróceniem wartości wyrażenia. 49

Operatory jednorgumentowe 50

Operatory porównania Operator równości (==) sprawdza, czy dwie wartości są równe, i daje w wyniku jedną wartość prawda albo fałsz (Boolean): if (dayofweek == "Wednesday"){ } takeouttrash(); operatory porównań najczęściej używane są z instrukcją if w celu ustalenia, czy określone instrukcje powinny być wykonane, czy nie. 51

Operatory porównania 52

Operatory relacyjne operator mniejszości(<) i większości (>) mają ten sam priorytet. Jeśli oba operatory zostaną użyte w tym samym wyrażeniu, operator po lewej stronie zostanie przetworzony jako pierwszy, ponieważ oba operatory są lewostronne. trace(3 > 2 < 1); // false trace((3 > 2) < 1); // false trace(3 > (2 < 1)); // true 53

Operatory relacyjne 54

Operatory logiczne Operatory logiczne mają dwa operandy i zwracają wynik typu Boolean. Operatory logiczne mają różne priorytety i zostały wymienione w poniższej tabeli w kolejności malejących priorytetów: Logiczne AND 55

Operatory podstawowe 56

Operatory przesunięcia bitowego mają dwa operandy i przesuwają bity pierwszego operandu o liczbę pozycji określoną przez drugi operand. 57

ActionScript 3.0 Dostęp do obiektów i operacje na nich wykonuje się za pomocą zmiennych. Zmienne można tworzyć, zmieniać ich wartość i usuwać w dowolnej chwili. Tworzenie zmiennej to jej deklarowanie: var mynumber:number; var somenumber:number = 6.33; var somenumber:number = new Number(6.33); var mybirthday:date = new Date(); var mymusic:sound = new Sound(); tworzymy zmienną, nadajemy jej nazwę i ustalamy typ danych, jakie przechowuje 58

Zasady nazewnictwa (zmienne, funkcje) Nie stosujemy spacji ani znaków interpunkcyjnych Nazwy nie mogą zaczynać się cyfrą. Dozwolone: mojazmienna2 moja_zmienna_3 Nie można stosować słów kluczowych (np. case, break, true, public, dynamic, final, return, static...) Nazwa powinna informować o obiekcie: var myscore var myvariable X Wewnątrz nazwy stosujemy wielkie litery, nigdy na początku 59

Zasady nazewnictwa (zmienne) Pomocne jest dodawanie do nazw zmiennych odpowiednich przyrostków, określających typ obiektu: mycliprotatedcircle_mc playbutton_btn Dzięki temu często Flash rozpoznaje typ danych i wyświetla podpowiedzi do kodu w oknie Operacje 60

Konstruktor klasy Tworzenie obiektu przy użyciu operatora new jest często nazywane wywołaniem konstruktora klasy. Operatora new można używać nawet do tworzenia instancji obiektów należących do typów danych, które dopuszczają tworzenie instancji na podstawie wyrażeń literałowych. var somenumber:number = 6.33; var somenumber:number = new Number(6.33); 61

Konstruktor klasy Jeśli chcemy utworzyć instancję jakiegokolwiek typu danych, który nie ma swojej reprezentacji wizualnej (nie da się utworzyć jego instancji poprzez umieszczenie elementu na stole montażowym programu Flash), to jedynym sposobem pozostaje utworzenie obiektu bezpośrednio w języku ActionScript za pomocą operatora new. 62

Operacje przykład 1 Istnieje pole tekstowe na stole montażowym (nazwa mytextbox_txt) Wynik: 63

Operacje przykład 2 Tworzymy pole tekstowe konstruktorem new 64

Proste typy danych Number wartość liczbowa int uint liczba całkowita dodatnia liczba całkowita var mytemp:number = 98.6 var myscore:int = -100 var mycode:uint = 123533 Przypisanie wartości do zmiennej to jej inicjalizowanie 65

Proste typy danych String ciąg liter lub symboli Boolean wartość prawda lub fałsz var myname:string = Joanna ; var mystatus:boolean = true; var yourstatus:boolean = false; 66

Złożone typy danych Date Array reprezentuje datę reprezentuje tablicę var mybirthday:date = new Date(2006, 7, 9); var currentdate:date = new Date(); var seasons:array =["spring","summer","autumn","winter"]; 67

Złożone typy danych Literalna wartość XML (kod XML należy wpisać bezpośrednio): var employee:xml = <employee> <firstname>harold</firstname> <lastname>webster</lastname> </employee>; 68

Złożone typy danych MovieClip symbol klipu filmowego; TextField dynamiczne lub wejściowe pole tekstowe; SimpleButton symbol przycisku; var racecar:movieclip = new MovieClip(); var mytextbox:textfield = new TextField(); 69

Funkcje grupują pokrewne instrukcje w celu wykonania określonego zadania 70

Funkcje parametryczne Zastosowanie funkcji eliminuje czynność ręcznego powielania fragmentów kodu: 71

Funkcje parametryczne 72

Zdarzenia Zdarzenia to mechanizm decydujący o tym, które instrukcje komputer wykonuje i kiedy je wykonuje. Przykłady zdarzeń: wprowadzenie danych przez użytkownika załadowanie obrazu kliknięcie przycisku odtwarzanie klatki. 73

Obsługa zdarzeń Pisząc kod obsługujący zdarzenia, musimy brać pod uwagę trzy ważne elementy: Źródło zdarzenia: na przykład, który przycisk zostanie kliknięty lub który obiekt Loader ładuje obraz. Zdarzenie: co takiego ma się stać i na co będziemy reagować? Identyfikacja zdarzenia jest ważna, ponieważ w wielu obiektach może zachodzić więcej niż jeden rodzaj zdarzeń. Reakcja: jakie operacje chcemy wykonać, gdy zajdzie zdarzenie? 74

Obsługa zdarzeń Kod obsługi zdarzeń w języku ActionScript zawsze będzie zawierał wymienione wyżej trzy elementy. Oto podstawowa struktura takiego kodu: function eventresponse(eventobject:eventtype):void { // Actions performed in response to the event go here. } eventsource.addeventlistener(eventtype.event_name, eventresponse); 75

Obsługa zdarzeń function showhello(event:mouseevent):void{ if (powitanie_mc.currentlabel=="goout"){ powitanie_mc.gotoandplay("goin");} } start_btn.addeventlistener(mouseevent.click, showhello); 76

Przyciski interaktywne function showhello(event:mouseevent):void{ if (powitanie_mc.currentlabel=="goout"){ powitanie_mc.gotoandplay("goin");} } start_btn.addeventlistener(mouseevent.click, showhello); 77

Zdarzenia myszy Zdarzenia myszy obsługiwane przez klasę obiektów MouseEvent: MOUSE_OVER kursor myszy nad obiektem MOUSE_DOWN przycisk myszy jest wciśnięty MOUSE_UP przycisk myszy nie jest wciśnięty MOUSE_MOVE przesunięcie myszy kursora po ekranie MOUSE_OUT kursor opuszcza obszar obiektu docelowego MOUSE_WHEEL kółko myszy obraca się CLICK naciśnięcie i zwolnienie przycisku myszy DOUBLE_CLICK szybkie dwukrotne naciśnięcie i zwolnienie przycisku myszy 78

Odbiorniki zdarzeń myszy Flash może nasłuchiwać zdarzeń myszy w obrębie każdego obiektu należącego do klasy InteractiveObject: przyciski pola tekstowe obiekty z klasy Loader obiekty z klasy Sprite klipy filmowe scena filmu 79

Zdarzenia filmu i obiektów ENTER_FRAME każdy obiekt wyświetlany zawiera to zdarzenie wywoływane zgodnie z liczbą klatek na sekundę pliku SWF jedno zdarzenie na jedną klatkę sposób na powtarzanie określonych operacji w czasie this.addeventlistener(event.enter_frame, onenterframe); 80

Zdarzenia pól tekstowych var mytextbox:textfield = new TextField(); var myoutputbox:textfield = new TextField(); var mytext:string = "Type your text here."; function capturetext():void{ mytextbox.type = TextFieldType.INPUT; mytextbox.background = true; addchild(mytextbox); mytextbox.text = mytext; } mytextbox.addeventlistener(textevent.text_input, textinputcapture); function textinputcapture(event:textevent):void{ var str:string = mytextbox.text; createoutputbox(str); } function createoutputbox(str:string):void... 81

Dynamiczność projektów Dynamiczne tworzenie grafiki, instancji klipów, przycisków i pól tekstowych Dynamiczne tworzenie masek Dynamiczne animacje Dynamiczne wprowadzanie tekstu Dynamiczne ładowanie treści graficznych (obrazów rastrowych i plików.swf) Dynamiczne ładowanie filmów i dźwięków Obliczenia matematyczne na zmiennych liczbowych inne działania na zmiennych 82

Dynamiczne tworzenie grafiki //kwadrat klasa Shape lub Sprite graphics.beginfill(0xff0000); graphics.drawrect(50,50,100,100); graphics.endfill(); //koło graphics.beginfill(0xff4000); graphics.drawcircle(100,100,10); graphics.endfill(); 83

Grafika do animacji var circle:sprite = new Sprite(); circle.graphics.beginfill(0x990000); circle.graphics.drawcircle(50, 50, 50); circle.graphics.endfill(); addchild(circle); import flash.display.sprite; import flash.events.event; import flash.events.mouseevent; function fadecircle(event:event):void{ circle.alpha -=.05; if (circle.alpha <= 0){ circle.removeeventlistener(event.enter_frame, fadecircle);} } function startanimation(event:mouseevent):void{ circle.addeventlistener(event.enter_frame, fadecircle);} circle.addeventlistener(mouseevent.click, startanimation); 84

Dynamiczne tworzenie przycisku Przycisk można utworzyć za pomocą ActionScript. Należy w tym celu: posłużyć się konstruktorem obiektu klasy SimpleButton() zdefiniować cztery klatki kluczowe przycisku za pomocą właściwości: upstate, overstate, downstate, oraz hitteststate przechwycić grafikę do stanów przycisku (może być to dowolny obraz, klip, dynamicznie stworzona grafika klasy Shape lub Sprite, pole tekstowe) 85

Dynamiczne tworzenie przycisku Importowanie klas tworzonych obiektów Zdefiniowanie grafiki dla stanu Up przycisku Zdefiniowanie grafiki dla stanu Over przycisku Konstruktor nowego obiektu typu przycisk Zdefiniowanie zawartości klatek kluczowych przycisku Dodanie przycisku do listy wyświetlania 86

Dynamiczne tworzenie klipów Klip można utworzyć z poziomu ActionScript w klasie MovieClip lub Sprite: var myclip:movieclip = new MovieClip();...//definiowanie grafiki lub inne czynności var mymask:sprite = new Sprite();...//definiowanie grafiki addchild(myclip); addchild(mymask); myclip.alpha = 50; mymask.buttonmode = true; 87

Dynamiczne ładowanie treści Do aplikacji Flash można załadować dynamicznie: Plik SWF utworzony w języku ActionScript 3.0 Plik SWF zapisany w języku ActionScript 1.0 lub 2.0. Plik obrazu JPG, PNG i GIF. tekst film dźwięk zmienne 88

Dynamiczne ładowanie obrazów Do ładowania plików graficznych oraz plików.swf służy klasa Loader. Plik będący kontenerem, zawiera kod AS ładujący plik SWF Zewnętrzny plik SWF ładowany do kontenera 89

Dynamiczne ładowanie obrazów należy stworzyć obiekt Loader, wskazać podrzędny obiekt wyświetlany (np. plik.swf), a następnie dodać obiekt Loader do listy wyświetlania: var movieloader:loader = new Loader(); var movieurl:string = "galeria.swf"; var movieurlreq:urlrequest = new URLRequest(movieURL); movieloader.load(movieurlreq); this.addchild(movieloader); 90

Przenoszenie załadowanej treści Po załadowaniu pliku SWF lub obrazu możliwe jest przesunięcie załadowanego obiektu wyświetlanego do innego kontenera: var container:sprite = new Sprite(); addchild(container); var pictldr:loader = new Loader(); var picturl:string = "banana.jpg" var picturlreq:urlrequest = new URLRequest(pictURL); pictldr.load(picturlreq); import flash.display.*; import flash.net.urlrequest; import flash.events.event; pictldr.contentloaderinfo.addeventlistener(event.complete, imgloaded); function imgloaded(event:event):void{ } container.addchild(pictldr.content); 91

Monitorowanie postępu ładowania Po rozpoczęciu ładowania pliku następuje utworzenie obiektu LoaderInfo. Obiekt ten zawiera informacje, takie jak: postęp ładowania, adresy URL modułu ładującego adresy URL treści ładowanej, sumaryczna liczba bajtów dla nośnika, a także nominalna wysokość i szerokość nośnika. Obiekt LoaderInfo wywołuje również zdarzenia dla monitorowania postępu ładowania. 92

Monitorowanie postępu ładowania W celu uzyskania dostępu do ładowanej treści należy dodać do obiektu LoaderInfo detektor zdarzeń var ldr:loader = new Loader(); var urlreq:urlrequest = new URLRequest("Circle.swf"); ldr.load(urlreq); ldr.contentloaderinfo.addeventlistener(event.complete, loaded); addchild(ldr); function loaded(event:event):void{ var content:sprite = event.target.content; content.scalex = 2; } 93

Monitorowanie postępu ładowania Właściwość loaderinfo załadowanego obiektu wyświetlanego dotyczy tego samego obiektu LoaderInfo, co właściwość contentloaderinfo obiektu Loader 94

Monitorowanie postępu ładowania movieloader.contentloaderinfo.addeventlistener(progressevent.progress, progresshandler); function progresshandler(myevent:progressevent):void{ var myprogress:number= myevent.target.bytesloaded/myevent.target.bytestotal; bar_mc.scalex = myprogress; mytextfield_txt.text=math.round(myprogress*100)+"%"; } 95

Dynamiczne ładowanie tekstu Do ładowania tekstu i zmiennych z zewnętrznych plików tekstowych służy klasa URLLoader: var textloader:urlloader = new URLLoader(); var texturlrequest:urlrequest = new URLRequest("mapa.txt"); textloader.load(texturlrequest); textloader.addeventlistener(event.complete, dataok); var mytextfield:textfield=new TextField(); addchild(mytextfield); 96

Dynamiczne ładowanie tekstu 97

Instrukcje warunkowe W ActionScript 3.0 istnieją trzy instrukcje warunkowe if...else if...else if switch 98

if...else Instrukcja warunkowa if..else umożliwia sprawdzenie warunku i wykonanie jednego bloku kodu, jeśli warunek jest spełniony, albo innego bloku kodu, jeśli warunek nie jest spełniony. if (x > 20){ trace("x is > 20");} else{ trace("x is <= 20");} Jeśli nie chcemy wykonywać alternatywnego bloku kodu, możemy użyć instrukcji if bez instrukcji else. 99

if...else if Korzystając z instrukcji warunkowej if..else if, można sprawdzać więcej niż jeden warunek. if (x > 20){ trace("x is > 20");} else if (x < 0){ trace("x is negative");} Jeśli po instrukcji if lub else następuje tylko jedna instrukcja, nie trzeba jej ujmować w nawiasy sześcienne. 100

if...else if //błąd var x:int; var positivenums:int = 0; if (x > 0) trace("x is positive"); positivenums++; trace(positivenums); // 1 Jeśli nie użyjemy nawiasów przy większej niż jedna liniach instrukcji błąd ten może doprowadzić do nieoczekiwanego zachowania programu. W przykładzie wartość positivenums jest zwiększana o 1 niezależnie od tego, czy wartością warunku jest true: 101

switch Instrukcja switch jest użyteczna, jeśli mamy kilka możliwych ścieżek wykonania, a wybór jednej z nich zależy od wartości tego samego wyrażenia warunkowego. Oferuje ona funkcjonalność podobną do długiego szeregu instrukcji if..else if, ale jest nieco bardziej czytelna. Zamiast sprawdzać wartość logiczną warunku, instrukcja switch oblicza wartość wyrażenia i na podstawie wyniku wybiera jeden z bloków kodu do wykonania. 102

switch Bloki kodu rozpoczynają się od instrukcji case i kończą instrukcją break. Poniższa instrukcja switch wyświetla nazwę dnia tygodnia na podstawie numeru dnia zwróconego przez metodą Date.getDay(): 103

switch var somedate:date = new Date(); var daynum:uint = somedate.getday(); switch(daynum){ case 0: trace("sunday"); break;... case 6: trace("saturday"); break; default: trace("out of range"); break; } 104

Pętle Instrukcje pętli umożliwiają wielokrotne wykonywanie określonego bloku kodu z różnymi wartościami lub zmiennymi. Zaleca się, aby zawsze ujmować blok kodu w nawiasy sześcienne ({ }). Mimo że nawiasy te można pominąć, jeśli kod zawiera tylko jedną instrukcję, 105

For Pętla for umożliwia iteracyjną zmianę wartości zmiennej w ramach określonego przedziału wartości. W instrukcji for należy podać trzy wyrażenia: zmienną z przypisaną wartością początkową, instrukcję warunkową, która decyduje o zakończeniu pętli, wyrażenie zmieniające wartość zmiennej w każdej iteracji. 106

For pętla jest wykonywana pięć razy. Zmienna i ma na początku wartość 0, a na końcu wartość 4; wynikiem wykonania pętli będą liczby od 0 do 4 var i:int; for (i = 0; i < 5; i++) { trace(i); } 107

for..in Pętla for..in iteracyjnie przegląda właściwości obiektu. (jednak właściwości obiektu nie są przechowywane w żadnym z góry określonym porządku, dlatego mogą pojawiać się w pętli w pozornie przypadkowej kolejności): var myobj:object = {x:20, y:30}; for (var i:string in myobj){ trace(i + ": " + myobj[i]); } // x: 20 // y: 30 108

for..in Możliwe jest także iteracyjne przeglądanie elementów tablicy: var myarray:array = ["one", "two", "three"]; for (var i:string in myarray) { trace(myarray[i]); } // one // two // three 109

for each..in Pętla for each..in iteracyjne przegląda elementy kolekcji, które mogą być znacznikami w obiekcie XML lub XMLList, wartościami zapisanymi we właściwościach obiektu lub elementami tablicy. 110

for each..in inaczej niż w pętli for..in, zmienna sterująca pętli for each..in zawiera wartość przechowywaną we właściwości, a nie nazwę właściwości: var myobj:object = {x:20, y:30}; for each (var num in myobj) { trace(num); } // 20 // 30 111

var myxml:xml = <users> <fname>jane</fname> <fname>susan</fname> <fname>john</fname> </users>; GRAFIKA ANIMACYJNA for each..in for each (var item in myxml.fname) { trace(item); } //Jane //Susan //John 112

while Pętla while działa jak instrukcja if powtarzana tak długo, jak długo warunek jest spełniony (true). Poniższy przykładowy kod generuje te same wyniki, co wcześniejszy przykład z pętlą for: var i:int = 0; while (i < 5) { trace(i); i++; } 113

do...while Pętla do..while jest to pętla while, w której blok kodu zostanie zawsze wykonany co najmniej jeden raz, ponieważ warunek jest sprawdzany po wykonaniu bloku kodu. var i:int = 5; do { trace(i); i++; } while (i < 5); // output: 5 114

KONIEC 115