ActionScript – oparty na ECMAScripcie obiektowy język programowania, używany w Adobe Flashu 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 Flashu 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 ActionScripcie 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 wydania 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. = 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óżnic 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