Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Grafika Animacyjna w Technice Flash semestr II

Podobne prezentacje


Prezentacja na temat: "Grafika Animacyjna w Technice Flash semestr II"— Zapis prezentacji:

1

2 Grafika Animacyjna w Technice Flash semestr II
opracowanie: dr Joanna Sekulska-Nalewajko Wykład dla Studiów Podyplomowych GRAFIKA KOMPUTEROWA I TECHNIKI MULTIMEDIALNE Rok akademicki 2013/2014

3 ActionScript Język wewnętrzny 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

4 ActionScript Służy do: Tworzenia i zarządzania grafiką,
Sterowania animacją, Interakcji z użytkownikiem, w tym rozpoznania i obsłużenia gestów dotyku w urządzeniach dotykowych, Dodawania linków i nawigacji w filmie, Obliczeń... i wzmocnienia efektów wizualnych, Tworzenia formularzy, odtwarzaczy dźwięku i wideo, Wczytywania i obsługi plików graficznych, tekstowych i multimedialnych

5 ActionScript 3.0 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, Loader...) Sprite to lekki element składowy, podobny do klasy MovieClip, ale lepiej przystosowany do użycia w charakterze podstawowego składników interfejsu (gdy nie potrzebujemy odrębnej listwy czasowej). Shape reprezentuje surowe kształty wektorowe.

6 ActionScript 3.0 Sercem języka ActionScript są obiekty i klasy
Obiekt jest typem danych, który wykorzystujemy do kontrolowania filmu. Obiektami są np: wartość liczbowa, (klasa Numer, int, uint) tekst, (klasa String) data, (klasa Date) tablica (zbiór danych) (klasa Array) dźwięk, (klasa Sound) grafika, (klasa Shape) klip filmowy, (klasa MovieClip) kontener (klasa Loader)

7 ActionScript 3.0 Wszystkie tworzone obiekty należą do większej zbiorczej grupy zwanej Klasą. Np. klasa Sound (obiekt „dźwięk”) klasa Video (obiekt „film”) klasa Array (obiekt „tablica”) klasa Math (obiekt „stała PI”) Obiekty tworzony w danej klasie jest egzemplarzem danej klasy.

8 ActionScript 3.0 Instancje (egzemplarze) klas można tworzyć za pomocą operatora new i w dowolnym momencie dynamicznie zmieniać ich zawartość i właściwości. Stąd ich nazwa „zmienne”. 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.

9 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...

10 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ę

11 ActionScript 3.0 Z obiektami związane są też zdarzenia, czyli działania które Flash potrafi rozpoznać. Zdarzenia są po to, aby w razie potrzeby na nie odpowiedzieć, czyli posłużyć się nimi do zarządzania filmem. jest do tego specjalny mechanizm zwany obsługą zdarzeń.

12 Zestaw właściwości klasy Sound
ActionScript® 3.0 — dokumentacja dla platformy Adobe® Flash®

13 Zestaw metod klasy Sound

14 Zestaw zdarzeń klasy Sound

15 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();

16 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; }

17 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.

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

19 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 = ; var roznica:Number = ;

20 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

21 Operatory multiplikatywne
var energy:Number = mass * speedOfLight * speedOfLight; E=mc2

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

23 Operatory jednorgumentowe
Operator przyrostkowy, inkrementacja lub dekrementacja jest wykonywana po zwróceniu wartości wyrażenia. Operator przedrostkowy - inkrementacja lub dekrementacja jest wykonywana przed zwróceniem wartości wyrażenia. var xNum:Number = 0; trace(xNum++); // 0 trace(xNum); // 1 var xNum:Number = 0; trace(++xNum); // 1 trace(xNum); // 1

24 Operatory jednorgumentowe

25 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.

26 Operatory porównania

27 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

28 Operatory relacyjne

29 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

30 Operatory podstawowe

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

32 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

33 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

34 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

35 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);

36 Konstruktor klasy Większość klas posiada metodę konstruktora, czyli specjalną funkcję, która tworzy egzemplarz danej klasy za pomocą operatora new. Głownie są to klasy, których instancje nie mają swojej reprezentacji wizualnej (nie da się utworzyć jego instancji poprzez umieszczenie elementu na stole montażowym programu Flash).

37 Operacje – przykład 1 Istnieje pole tekstowe na stole
montażowym (nazwa myTextBox_txt) Wynik:

38 Operacje – przykład 2 Tworzymy pole tekstowe konstruktorem new

39 Proste typy danych Number – wartość liczbowa int – liczba całkowita
uint – dodatnia liczba całkowita var myTemp:Number = 98.6 var myScore:int = -100 var myCode:uint = Przypisanie wartości do zmiennej to jej inicjalizowanie

40 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;

41 Złożone typy danych Date – reprezentuje datę
Array – reprezentuje tablicę var myBirthday:Date = new Date(2006, 7, 9); var currentDate:Date = new Date(); var seasons:Array =["spring","summer","autumn","winter"];

42 Złożone typy danych Literalna wartość XML
(wartość zmiennej, czyli kod XML należy wpisać bezpośrednio): var employee:XML = <employee> <firstName>Harold</firstName> <lastName>Webster</lastName> </employee>;

43 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();

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

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

46 Funkcje parametryczne

47 Zdarzenia Obsługa zdarzeń to mechanizm składający się zarówno z nasłuchiwania zdarzeń obiektów jak i decydujący o tym, które instrukcje komputer wykona po wykryciu zdarzenia. Przykłady zdarzeń: wprowadzenie danych przez użytkownika ładowanie lub załadowanie obrazu kliknięcie przycisku odtwarzanie klatki.

48 Obsługa zdarzeń Pisząc kod obsługujący zdarzenia, musimy brać pod uwagę trzy elementy: (1) Źródło zdarzenia: na przykład przycisk lub Loader. (2) 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ń. (3) Reakcja: jakie operacje chcemy wykonać, gdy zajdzie zdarzenie? event source event type event response

49 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);

50 Obsługa zdarzeń function showHello(event:MouseEvent):void{
if (powitanie_mc.currentLabel=="goout"){ powitanie_mc.gotoAndPlay("goin");} } start_btn.addEventListener(MouseEvent.CLICK, showHello);

51 Przyciski interaktywne
function showHello(event:MouseEvent):void{ if (powitanie_mc.currentLabel=="goout"){ powitanie_mc.gotoAndPlay("goin");} } start_btn.addEventListener(MouseEvent.CLICK, showHello);

52 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

53 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

54 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);

55 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 .....

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

57 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.

58 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.

59 if...else if //błąd – brak nawiasów
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:

60 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.

61 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():

62 switch switch(dayNum){ case 0: trace("Sunday"); break;
var someDate:Date = new Date(); var dayNum:uint = someDate.getDay(); switch(dayNum){ case 0: trace("Sunday"); break; case 6: trace("Saturday"); default: trace("Out of range"); }

63 Pętle Instrukcje pętli umożliwiają wielokrotne wykonywanie określonego bloku kodu; 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ę,

64 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.

65 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); }

66 for..in Pętla 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

67 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

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

69 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

70 for each..in var myXML:XML = <users> <fname>Jane</fname> <fname>Susan</fname> <fname>John</fname> </users>; for each (var item in myXML.fname) { trace(item); } //Jane //Susan //John

71 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++; } var i:int; for (i = 0; i < 5; i++) { trace(i); }

72 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

73 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

74 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.

75 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.

76 Dynamiczne tworzenie grafiki
klasa Shape lub Sprite //kwadrat graphics.beginFill(0xFF0000); graphics.drawRect(50,50,100,100); graphics.endFill(); //koło graphics.beginFill(0xff4000); graphics.drawCircle(100,100,10);

77 Grafika do animacji import flash.display.Sprite;
var circle:Sprite = new Sprite(); circle.graphics.beginFill(0x990000); circle.graphics.drawCircle(50, 50, 50); circle.graphics.endFill(); addChild(circle); 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); import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent;

78 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)

79 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

80 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;

81 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

82 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

83 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);

84 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); pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded); function imgLoaded(event:Event):void{ container.addChild(pictLdr.content); } import flash.display.*; import flash.net.URLRequest; import flash.events.Event;

85 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.

86 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; }

87 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

88 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)+"%"; }

89 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);

90 Dynamiczne ładowanie tekstu

91 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.

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

93 Opcje wczytywania warstw

94 Opcje wczytywania warstw tekstowych

95 Opcje wczytywania warstw z grafiką

96 Projekt po wczytaniu do Flasha

97 KONIEC


Pobierz ppt "Grafika Animacyjna w Technice Flash semestr II"

Podobne prezentacje


Reklamy Google