PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 3

Podobne dokumenty
FLEX ( ) Przygotowanie środowiska developerskiego Hello world w MXML Hello world w ActionScript

Audio i Video w HTML5

GRAFIKA ANIMACYJNA 1

Ćwiczenie 22 Dynamiczne wczytywanie tekstu z pliku.txt

Udostępnianie obrazu z kamer Sanyo HD na stronach WWW PORADNIK

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Wykład 03 JavaScript. Michał Drabik

INTERAKTYWNA KOMUNIKACJA WIZUALNA. Flash - podstawy

Dokumentacja imapliteapi

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Podstawy JavaScript ćwiczenia

Test przykładowy 2 PAI WSB Wrocław /06/2018

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

Wybrane działy Informatyki Stosowanej

Programowanie obiektowe

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

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Laboratorium 6 Tworzenie bloga w Zend Framework

Osadzenie pliku dźwiękowego na stronie www

Zdarzenia Zdarzenia onload i onunload

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Kurs WWW. Paweł Rajba.

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

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

Tworzenie Stron Internetowych. odcinek 10

Instytut Chemii Bioorganicznej PAN Poznańskie Centrum Superkomputerowo-Sieciowe

Zaawansowane aplikacje WWW - laboratorium

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Wybrane działy Informatyki Stosowanej

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Instrukcja laboratoryjna nr.4

Systemy operacyjne na platformach mobilnych

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Zdarzenia w JavaScript (Zajęcia r.)

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

XML extensible Markup Language. część 5

Laboratorium 7 Blog: dodawanie i edycja wpisów

Wstęp. Ale po co? Implementacja

Kurs programowania 2 - listy

Delphi podstawy programowania. Środowisko Delphi

Programowanie WEB Lista nr 10 (termin ) mgr inż. Adam Dudek

DOM (Document Object Model)

Współdziałanie przeglądarki i skryptów w pliku HTML (lub XML), oraz współdziałanie przeglądarki i ekranu ilustruje niżej położony rysunek.

Ćwiczenie 1 Galeria zdjęć

Specyfikacja techniczna kreacji HTML5

Celem ćwiczenia jest zapoznanie z językiem HTML i JavaScript, zasadami tworzenia stron WWW i umieszczania na nich skryptów w języku JavaScript.

Programowanie Komputerów

Multimedia w HTML5. Statyczne witryny internetowe 2TI/TOR. Marek Kwiatkowski

Programowanie obiektowe. Wykład 4

Programowanie w Javie

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

HTML (HyperText Markup Language) hipertekstowy język znaczników

Programowanie w JAVA Lab. 5 - Wątki. 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 7 x ) xy, 8,8

Multimedia i interfejsy. Ćwiczenie 5 HTML5

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

Dodanie nowej formy do projektu polega na:

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Przypomnienie o klasach i obiektach

KLASY, INTERFEJSY, ITP

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

Podstawy programowania GUI niskiego poziomu. APLETY.

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

PyX jest pakietem Pythona do grafiki wektorowej. Pozawala zatem tworzyd pliki EPS oraz PDF.

Instrukcja laboratoryjna cz.3

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Zajęcia 4 - Wprowadzenie do Javascript

PHP 5 język obiektowy

Lista wprowadzonych zmian w systemie Vario v. 3.3 od wydania do wydania

Metody dostępu do danych

Dokumentacja Skryptu Mapy ver.1.1

if ((_root.clickthru == undefined) && (_root.clicktag)) { _root.clickthru = _root.clicktag;

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Sieciowe Technologie Mobilne. Laboratorium 2

Wykład 6 Dziedziczenie cd., pliki

SPECYFIKACJA TECHNICZNA FORM REKLAMOWYCH - INTERNET

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

Multimedia JAVA. Historia

Specyfikacja techniczna formatów reklamowych w serwisach internetowych Wydawnictwa Te-Jot.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Specyfikacja techniczna form reklamowych do umieszczenia na stronie

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

JavaFX. Programowanie Obiektowe Mateusz Cicheński

Szybkie tworzenie grafiki w GcIde

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie obiektowe

Aktualizacja SMSFall v Data publikacji:

akademia androida Składowanie danych część VI

JavaScript obiektowość

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

Specyfikacja reklamy tekstowej i bannerowej na portalu GoldenLine.pl

JAVAScript tablice, przekazanie danych do funkcji, obiekty Date i window

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

CZYM JEST JAVASCRIPT?

Tworzenie i wykorzystanie usług

Unity 3D - własny ekran startowy i menu gry

Aplikacje RMI

Instrukcja obsługi platformy PROMEDIO Transmisje. wersja dla ucznia

Transkrypt:

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 3 Paweł Woszkowski SWSIM 2010 www.woszkowski.com

DICTIONARY Obiekt, którego nazwy zmiennych lub klucze mogą być zmiennymi var arr:array = new Array(); arr[0] = "wartosc"; var obj:object = new Object(); obj["variable"] = "wartosc"; var dict:dictionary = new Dictionary(); dict[arr] = "wartosc1"; dict[obj] = "wartosc2";

DICTIONARY PRZYKŁAD UŻYCIA var pa:point = new Point(); var pb:point = new Point(); var pc:point = new Point(); var nazwy:dictionary = new Dictionary(); nazwy[pa] = "A"; nazwy[pb] = "B"; nazwy[pc] = "C"; pa.x; // współrzędna x pa.y; // współrzędna y nazwy[pa]; // "A"

DISPLAY OBJECTS Display list - hierarchiczna lista wyświetlanych obiektów Aby obiekt był widoczny na scenie, należy dodać go do listy wyświetlania. kontener.addchild(obiekt); kontener.removechild(obiekt); Najważeniejsze obiekty: MovieClip Sprite Shape Bitmap Loader

DISPLAY OBJECTS WŁAŚCIWOŚCI Każdy obiekt wyświetlany na ekranie ma podstawowe, wspólne właściwości: x, y width, height scalex, scaley rotation alpha visible mousex, mousey parent

MOVIECLIP WŁAŚCIWOŚCI Właściwości obiektu MovieClip wg ActionScript 3.0 Language and Components Reference: currentframe currentlabel currentlabels currentscene enabled framesloaded scenes totalframes trackasmenu A gdzie x,y, itd.???

KLASA Klasa - definiuje obiekt, określa jego atrybuty (właściwości) oraz zachowania (metody). Struktura klasy: package class variable constant function variable constant

KLASA - SKŁADNIA package com.woszkowski.swsim { public class Wyklad3 { public var liczbastudentow:uint = 30; } } public function Wyklad3():void { trace(liczbastudentow); }

DZIEDZICZENIE public class Pojazd { public var kolor:string; public function ruszaj() { trace("ruszam"); } } public class Samochod extends Pojazd { public var typpaliwa:string; public function zatankuj() { trace("tankuję"); } } var auto:samochod = new Samochod(); auto.typpaliwa = "diesel"; auto.kolor = "czerwony"; auto.zatankuj(); // tankuję auto.ruszaj(); // ruszam

MOVIECLIP WŁAŚCIWOŚCI CD. MovieClip > Sprite > DisplayObjectContainer > InteractiveObject > DisplayObject > EventDispatcher > Object

PRZYKŁADOWA LISTA WYŚWIETLANIA

DISPLAY INDEX addchild(kolo); addchild(kwadrat); addchild(gwiazda); removechild(kwadrat); addchildat(kwadrat, 0);

LISTA OBIEKTÓW NOWY OBIEKT var nowysprite:sprite = new Sprite(); addchild(nowysprite); var nowymc:movieclip = new MovieClip(); addchild(nowymc);

LISTA OBIEKTÓW BIBLIOTEKA Dodawanie obiektów z biblioteki: obiekt w bibliotece -> Linkage var s:movieclip = new samochod(); addchild(s);

BITMAP Bitmap(bitmapData:BitmapData = null, pixelsnapping:string = "auto", smoothing:boolean = false) Obrazek w bibliotece var obraz:bitmapdata = new ObrazBiblioteka(0, 0); var bitmapa:bitmap = new Bitmap(obraz); addchild(bitmapa);

DISPLAY OBJECTS INNE METODY numchildren - liczba obiektów w obiekcie getchildat - referencja do obiektu wg indexu getchildbyname - referencja do obiektu wg nazwy getchildindex - odczyt indexu obiektu setchildindex - ustawianie indexu obiektu swapchildren - zamiana indexu obiektów wg referencji swapchildrenat - zamiana indexu obiektów wg indexu

GRAPHICS Wektorowe kształty możemy rysować z poziomu ActionScript w obiektach typu Graphics. Instancje klasy Graphics znajdują się jako właściwość "graphics" w następujących obiektach: Shape Sprite MovieClip

GRAPHICS DOSTĘPNE METODY linestyle linegradientstyle beginfill begingradientfill beginbitmapfill endfill clear moveto lineto curveto drawcircle drawellipse drawrect drawroundrect

GRAPHICS - PRZYKŁADY var s:sprite = new Sprite(); addchild(s); s.graphics.linestyle(3, 0xFF0000); s.graphics.beginfill(0x00ff00); s.graphics.moveto(100, 100); s.graphics.lineto(300, 100); s.graphics.lineto(100, 300); s.graphics.lineto(100, 100); s.graphics.endfill();

ZDARZENIA (EVENTS) Zdarzenia wywoływane są, gdy "coś" się stanie. Wirtualnie cały ActionScript działa na zasadzie zdarzeń. Niemal wszystko co się dzieje, generuje zdarzenia: kiedy klikniemy w przycisk kiedy zostanie załadowany plik kiedy zmienimy rozmiar flasha kiedy wyjedziemy myszką poza obszar flasha nawet kod umieszczony na timeline zostaje uruchamiany w wyniku zdarzenia oznajmiającego wyświetlenie zawartości tej klatki...

ZDARZENIA (EVENTS) Zdarzenia mogą generować tylko klasy dziedziczące z EventDispatcher. "Słuchanie" zdarzeń: obiekt.addeventlistener(nazwa_zdarzenia, metoda); Usuwanie reakcji na zdarzenie: obiekt.removeeventlistener(nazwa_zdarzenia, metoda); Generowanie zdarzeń: dispatchevent(new Event(nazwa_zdarzenia));

ZDARZENIA (EVENTS) Główną klasą odpowiedzialną za obsługą zdarzeń jest klasa Event. Różne rodzaje zdarzeń mają inne klasy, wszystkie dziedziczą jednak z klasy Event. Dlaczego nazwy zdarzeń definiowane są stałe w odpowiadającym ich klasach? przycisk.addeventlistener("clikc", metoda); // ok przycisk.addeventlistener(mouseevent.clikc, handler); // Error!

PRIORYTETY Do każdego zdarzenia może być przypisanych wiele metod: obiekt.addeventlistener(mouseevent.click, metoda1); obiekt.addeventlistener(mouseevent.click, metoda2); obiekt.addeventlistener(mouseevent.click, metoda3); Nasłuchującym metodom można nadawać priorytety: obiekt.addeventlistener(mouseevent.click, metoda1, false, 0); obiekt.addeventlistener(mouseevent.click, metoda2, false, 1); obiekt.addeventlistener(mouseevent.click, metoda3, false, 2);

ZDARZENIA - PRZYKŁADY var urlloader:urlloader = new URLLoader(); urlloader.addeventlistener(event.complete, completelistener); urlloader.load(new URLRequest("plik.txt")); function completelistener(e:event):void { trace("plik wczytany"); } przycisk.addeventlistener(mouseevent.click, clicklistener); private function clicklistener(e:mouseevent):void { trace("klik"); }

ZDARZENIA - PRZYKŁADY public class Game extends EventDispatcher { public static const GAME_OVER:String = "gameover"; private function endgame():void { dispatchevent(new Event(Game.GAME_OVER)); } } var gra:game = new Game(); gra.addeventlistener(game.game_over, koniecgry); private function koniecgry(e:event):void {... }

ZDARZENIA PRZEKAZYWANY OBIEKT function completelistener(e:event):void { } e.type - typ zdarzenia e.target - obiekt, który wywołał zdarzenie e.currenttarget - obiekt w którym wywołano addeventlistener var urlloader:urlloader = new URLLoader(); urlloader.addeventlistener(event.complete, completelistener); urlloader.load(new URLRequest("plik.xml")); function completelistener(e:event):void { var xml:xml = new XML(e.target.data); }

PROPAGACJA ZDARZEŃ Zdarzenia MouseEvent przenikają wgłąb listy wyświetlania i są wywoływane na kolejnych obiektach. Propagację można zatrzymać, ustawiając obiekt.mousechildren = false

ZDARZENIA GENEROWANE PRZEZ STAGE Funkcja obiektu stage nie ogranicza się wyłącznie do bycia kontenerem wyświetlanych obiektów. stage generuje i przyjmuje wiele zdarzeń. Przede wszystkim dotyczy to zdarzeń związanych z myszką i klawiaturą. obiekt.addeventlistener(mouseevent.mouse_down, zacznijprzesuwanie); stage.addeventlistener(mouseevent.mouse_up, zakonczprzesuwanie);

OSADZANIE PLIKÓW SWF NA STRONIE WWW osadzanie tradycyjne <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=6,0,29,0" width="600" height="400"> <param name="movie" value="plik.swf"> <param name="quality" value="high"> <embed src="plik.swf" quality="high" pluginspage="http:// www.macromedia.com/go/getflashplayer" type="application/xshockwave-flash" width="100%" height="100%"></embed> </object>

OSADZANIE PLIKÓW SWF NA STRONIE WWW osadzanie zgodne z xhtml <object type="application/x-shockwave-flash" data="plik.swf" width="600" height="400"> <param name="movie" value="plik.swf" /> <param name="menu" value="false" /> </object>

OSADZANIE PLIKÓW SWF NA STRONIE WWW osadzanie za pomocą SWFObject (zalecane!!!) <script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> var flashvars = { }; var params = { menu: "false" }; var attributes = { }; swfobject.embedswf("plik.swf", "flasha", "600", "400", "9.0.0","expressInstall.swf", flashvars, params, attributes); </script>

ATRYBUTY OBIEKTÓW OBJECT I EMBED width, height classid codebase (param), pluginspage (embed) movie (param), src (embed) id, name swliveconnect (dla fscommand) play, loop menu quality scale align, salign wmode bgcolor base flashvars

WMODE window (zalecane, jeżeli tylko jest taka możliwość) zawsze na wierzchu opaque pozwala na wyświetlanie innych obiektów nad flashem problemy z polskimi znakami w polu input i inne niespodzianki transparent opaque + przezroczystość problemy z polskimi znakami w polu input i inne niespodzianki

PRZEKAZYWANIE DANYCH DO FLASHA GET plik.swf?param1=val1&param2=val2&... FLASHVARS var flashvars = { param1:"val1", param2:"val2" }; <param name="flashvars" value="param1=val1&param2=val2"> NAMED ANCHORS http://www.mojastrona.pl/#osoba,jan_kowalski,13

PRZEKAZYWANIE DANYCH DO FLASHA GET i FLASHVARS var fvars:object = LoaderInfo(this.root.loaderInfo).parameters; trace(fvars.param1); // val1 trace(fvars.param2); // val2 NAMED ANCHORS var myhref:string = String(ExternalInterface.call("flashGetHref")); var anchors:array = myhref.split("#"); try { var params:array = anchors[1].split(","); var param2:string = params[1]; trace(param2); // Jan_Kowalski } catch(e:error) { }

POBIERANIE DANYCH Podstawową metodą pobierania danych jest wczytywanie plików tekstowych za pomocą klasy URLLoader. Podstawowe formaty wczytywanych danych: variables text xml json binary (ByteArray)

POBIERANIE DANYCH VARIABLES plik.txt: zmienna1=val1&zmienna2=val2 var loader:urlloader = new URLLoader(); loader.dataformat = URLLoaderDataFormat.VARIABLES; loader.addeventlistener(event.complete, completehandler); loader.load(new URLRequest("plik.txt")); private function completehandler(e:event):void { var loader:urlloader = URLLoader(e.target); trace(loader.data["zmienna1"]); // val1 trace(loader.data["zmienna2"]); // val2 }

POBIERANIE DANYCH XML dane.xml <?xml version="1.0" encoding="utf-8"?> <dane> <item id="1"> <foto>obrazek1.jpg</foto> <tytul>lorem ipsum dolor 1</tytul> <link>http://www.onet.pl</link> </item> <item id="2"> <foto>obrazek2.jpg</foto> <tytul>lorem ipsum dolor 2</tytul> <link>http://www.wp.pl</link> </item> </dane>

POBIERANIE DANYCH XML var loader:urlloader = new URLLoader(); loader.addeventlistener(event.complete, completehandler); loader.load(new URLRequest("dane.xml")); private function completehandler(e:event):void { var loader:urlloader = URLLoader(e.target); var mojedane:xml = new XML(loader.data); } trace(mojedane.item[0].link); // http://www.onet.pl trace(mojedane.item[1].@id); // 2

POBIERANIE DANYCH JSON JSON (JavaScript Object Notation) is a lightweight data-interchange format. http://json.org/ json.txt {"zmienna1":"val1","zmienna2":"val2"} import com.adobe.serialization.json.json; var a:object = new Object(); a.zmienna1 = "val1"; a.zmienna2 = "val2"; trace(json.encode(a));

POBIERANIE DANYCH JSON import com.adobe.serialization.json.json; var loader:urlloader = new URLLoader(); loader.addeventlistener(event.complete, completehandler); loader.load(new URLRequest("json.txt")); private function completehandler(e:event):void { var loader:urlloader = URLLoader(e.target); var a:object = JSON.decode(loader.data); } trace(a.zmienna1); trace(a.zmienna2); // val1 // val2

DŹWIĘK Najczęstsze czynności związane z dźwiękiem: - doładowywanie zewnętrznych plików mp3 - odtwarzanie, zatrzymywanie i pauzowanie - odtwarzanie strumienia dźwięku w czasie jego ładowania - kontrolowanie głośności i balansu - pobieranie tagów ID3 (mp3) - przechwytywanie dźwięku z mikrofonu

DŹWIĘK - KLASY flash.media.sound flash.media.soundchannel flash.media.soundloadercontext flash.media.soundmixer flash.media.soundtransform flash.media.id3info flash.media.microphone

DŹWIĘK - WCZYTYWANIE var s:sound = new Sound(); s.addeventlistener (Event.COMPLETE, onsoundloaded); s.load(new URLRequest("muzyka.mp3")); function onsoundloaded(event:event):void { var snd:sound = event.target as Sound; snd.play(); }

DŹWIĘK - WCZYTYWANIE Odtwarzanie z buforowaniem podczas wczytywania: var s:sound = new Sound(); var req:urlrequest = new URLRequest("muzyka.mp3"); var context:soundloadercontext = new SoundLoaderContext(8000, true); s.load(req, context); s.play();

DŹWIĘK KONTROLA ODTWARZANIA var snd:sound = new Sound(new URLRequest("muzyka.mp3")); var channel:soundchannel = snd.play(); // pauza / stop var pauseposition:int = channel.position; channel.stop(); // play channel = snd.play(pauseposition);

DŹWIĘK GŁOŚNOŚĆ I BALANS Na starcie: var snd:sound = new Sound(new URLRequest("muzyka.mp3")); var trans:soundtransform = new SoundTransform(0.6, -1); var channel:soundchannel = snd.play(0, 1, trans); Podczas odtwarzania: var snd:sound = new Sound(new URLRequest("muzyka.mp3")); var channel:soundchannel = snd.play(0, 1, trans); // gdzieś dalej var trans:soundtransform = new SoundTransform(0.6, -1); channel.soundtransform = trans;

VIDEO Najczęstsze czynności związane z video: wyświetlanie i kontrolowanie filmu video odtwarzanie filmów z zewnętrznych plików pobieranie meta danych oraz tzw. cue points przechwytywanie obrazu z kamery

VIDEO - ODTWARZANIE var nc:netconnection = new NetConnection(); nc.connect(null); var ns:netstream = new NetStream(nc); ns.addeventlistener(asyncerrorevent.async_error, ahand); ns.play("video.flv"); function ahand(event:asyncerrorevent):void { // ignoruj błąd } var vid:video = new Video(); vid.attachnetstream(ns); addchild(vid);

VIDEO - KONTROLOWANIE // play ns.play("video.flv"); //pauza ns.pause(); // stop ns.pause(); ns.seek(0); // play / pauza ns.togglepause();

DZIĘKUJĘ