ActionScript - Google

ActionScript

Z Wikipedii

Skocz do: nawigacji, szukaj

ActionScript - oparty na ECMAScript obiektowy język programowania, używany w Adobe Flash do sterowania animacjami i aplikacjami. Zarówno ActionScript, jak i JavaScript są oparte na podobnej składni, więc można je łatwo przekładać. Jednak model kliencki w tych językach jest całkiem odmienny: JavaScript steruje oknami, czy też formularzami, natomiast ActionScript klipami, polami tekstowymi i dźwiękami.

Spis treści

[edytuj] Historia

ActionScript z obecnie stosowaną składnią pojawił się po raz pierwszy we Flash 5, który w pełni umożliwiał programowanie we Flashu. Ta wersja ActionScriptu została nazwana ActionScript 1.0. Flash 6 (MX) dalej rozszerzył użyteczność środowiska programistycznego przez dodanie wielu wbudowanych funkcji i lepszą programistyczną kontrolę nad klipami. Flash 7 (MX 2004) wprowadził wersję ActionScript 2.0, która dodała takie funkcjonalności i cechy obiektowe jak: typowanie sztywne (ang. strong typing), jawne deklaracje klas (ang. explicit class declarations), dziedziczenie, interfejsy, ścisłe typowanie danych (ang. Strict Data Typing).

  • Flash Player 2: pierwsza wersja z obsÅ‚ugÄ… skryptów (m.in. gotoAndPlay, gotoAndStop, nextFrame i nextScene)
  • Flash Player 3: rozszerzone możliwoÅ›ci jÄ™zyka skryptowego z funkcjÄ… Å‚adowania zewnÄ™trznych plików SWF (loadMovie)
  • Flash Player 4: pierwszy Flash Player z peÅ‚nÄ… implementacjÄ… skryptów (pod nazwÄ… Actions). JÄ™zyk skryptowy miaÅ‚ skÅ‚adniÄ™ w oparciu o ukoÅ›niki (ang. a slash based syntax) i obsÅ‚ugiwaÅ‚ pÄ™tle, konstrukcje warunkowe, zmienne i inne podstawowe cechy jÄ™zyków programowania
  • Flash Player 5: zawieraÅ‚ pierwszÄ… wersjÄ™ wÅ‚aÅ›ciwego ActionScriptu. Used Prototype-based programming based on ECMAScript, umożliwiaÅ‚ w peÅ‚ni programowanie w z użyciem paradygmatu proceduralnego i obiektowego
  • Flash Player 6: dodaÅ‚ miÄ™dzy innymi model sterowania zdarzeniami i konstrukcjÄ™ switch
  • Flash Player 7: pojawiÅ‚y siÄ™ nowe funkcje takie jak CSS text i usprawnienia wydajnoÅ›ci. Kompilatory Adobe Flash wydane z Flash Player 7 obsÅ‚ugujÄ… ActionScript 2.0, jednak ActionScript 2.0 można kompilować skroÅ›nie do ActionScript 1.0 byte-code, wiÄ™c można go odtwarzać w Flash Player 6
  • Flash Player 8: Dalsze udoskonalenia ActionScript 2.0 przez dodanie nowych bibliotek klas z API for control bitmap data at run-time i umożliwienie Å‚adowania plików (upload)
  • Flash Player 9 (wstÄ™pnie 8.5): wprowadzenie ActionScript 3.0 z nowÄ… maszyna wirtualnÄ… AVM2 (ActionScript Virtual Machine 2), która jest zgodna z poprzedniÄ… AVM1, dla zachowania zgodnoÅ›ci ze skryptami z poprzednich wersji. Ważnym celem dla tej wersji Flash Playera byÅ‚o również usprawnienie wydajnoÅ›ci.

W ActionScripcie 2.0, dodano funkcje obiektowe, takie jak deklaracje klas, dziedziczenie, enkapsulacja.

Kod ActionScript jest zwykle pisany w środowisku programistycznym Flasha, które oferuje dynamiczną pomoc i podświetlanie składni. Kod jest zapisywany razem z animacją, w pliku .fla. Nierzadko stosuje się też import kodu z plików tekstowych, za pomocą polecenia #include. Zwyczajowo pliki takie mają rozszerzenie .as, choć nie jest to powszechnie przyjęta konwencja.

W ActionScript 2.0 mogą istnieć klasy, a pozycje należące do biblioteki (klipy) mogą być wiązane z klasą. Klasy są zawsze pisane w zewnętrznych plikach tekstowych o rozszerzeniu .as. Do czasu wyadnia Flash 8 kompilator był znany ze swojej powolności - kompilacja 100 klas mogła zająć nawet kilka minut. Obecnie problem ten już nie występuje.

[edytuj] Przykłady

Oto przykład skryptu wyświetlający tekst "Witaj świecie!" w oknie debugera:

trace("Witaj świecie!");

Następny przykład przypisany obiektowi MovieClip wewnątrz aplikacji Flash po jego załadowaniu ustawia jego przezroczystość na 70%, a następnie w każdej klatce filmu przesuwa jego położenie względem osi x o 2 piksele.

onClipEvent(load){
   this._alpha = 70;
}
onClipEvent(enterFrame){
   this._x += 2;
}

Ten sam kod dla obiektu MovieClip o nazwie movie_mc, napisany w ActionScript 3.0 będzie wyglądał tak:

movie_mc.alpha = .7;
movie_mc.addEventListener(Event.ENTER_FRAME, przesun);
function przesun(e:Event):void{
  movie_mc.x += 2;
}

Wynika to z dużej obiektowości programowania w tym języku.

[edytuj] ActionScript 3.0

Jest to najnowsza wersja języka programowania aplikacji Flash. Firma Adobe postawiła w tym przypadku na szybkość i wydajność, optymalizując do granic możliwości nową wersję tego języka. Co za tym idzie, wprowadzono nowe restrykcje, dotyczące głównie deklaracji zmiennych czy funkcji, przerzucono niemal wszystkie zdarzenia na tzw. obiekty nasłuchujące (EventListener), które w nowym wydaniu ActionScript nie są obiektami, ale funkcjami. Poniżej krótkie zestawienie podstawowych róznic pomiędzy AS2.0 oraz AS3.0.

//w AS2.0 niekonieczna jest deklaracja, jaki typ danych przechowuje zmienna:
var zmienna = "tutaj jestem łańcuchem tekstowym";
zmienna = 5; //tutaj już liczbą int
zmienna = -2.561 //tutaj liczbÄ… float

//w AS3.0 deklaracja musi się odbyć ze ścisłym określeniem typu danych:
var zmienna:String = "łańcuch znaków";
// zmienna = 5;  -  wywoła błąd!

dzięki takim deklaracjom kod jest o wiele bardziej wydajny bo FlashPlayer "wie" czego się spodziewać po określonych obszarach pamięci. Duże zmiany są także w odbieraniu zdarzeń. I znów porównanie:

/* Na scenie mamy umieszczony przycisk o nazwie przycisk_mc. 
Jednak przechwycenie jego kliknięcia odbiera się inaczej w AS2 i AS3*/

//AS2.0:
przycisk_mc.onRelease = function(){
   trace("Przycisk kliknięty");
}

//AS3.0:
przycisk_mc.addEventListener(MouseEvent.CLICK, przyciskKlikniety);
function przyciskKlikniety(event:Event):void{
   trace("Przycisk kliknięty");
}

Obie te funkcje wykonują to samo. Warto jednak zwrócić uwagę na bardzo precyzyjne określenie typu parametrów przyjmowanych do funkcji w AS3.0 (jest to jeden parametr event typu Event) oraz wartości przez nią zwracanych (w typ przypadku void - funkcja nie zwraca nic, przez co FlashPlayer nie oczekuje na rezultat). Takie restrykcje zdecydowanie przyspieszają działanie naszego filmu. Nawet jeżeli zmiany nie są widoczne przy jednym kliknięciu przycisku na scenie, to gdy funkcja taka jest wywoływana kilka tysięcy razy w pętli, różnicę zdecydowanie da się dostrzec.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


Zysk netto Cersanitu w I kw. wyniósł 20,7 mln zł, nieco poniżej konsensusu
Zysk netto grupy Cersanit w I kw. 2008 r. spadł do 20,7 mln zł z 28,9 mln zł przed rokiem i był nieco niższy od konsensusu na poziomie 27,8 mln zł.
Grad "płaci" za poparcie związkowcom PGNiG
Minister skarbu Aleksander Grad chce zrealizować przedwyborczą umowę między PO, a związkowcami PGNiG i dać im 15 procent akcji spółki. Tymczasem wicepremier Waldemar Pawlak zlecił analizy, które mają sprawdzić, czy plan Grada nie zagraża bezpieczeństwu energetycznemu Polski - pisze "Dziennik".
Podwyżki dla budżetówki: twarde stanowisko rządu
Osoby zatrudnione w sferze budżetowej nie mają co liczyć w przyszłym roku na wysokie podwyżki - pisze dziennik "Polska".
Rząd utrudni strajkowanie, na związki padł blady strach
Pracodawcy i rząd chcą utrudnić związkom zawodowym strajki. Za nielegalne okupowanie firm mogą im grozić milionowe odszkodowania - donosi piątkowa "Gazeta Wyborcza".
W ciągu dwóch tygodni propozycja oddłużenia szpitali
W ciągu najbliższych dwóch tygodni resort finansów ma przedstawić rządowi propozycję oddłużenia szpitali - informuje "Parkiet".
Linki: Strona g³ówna