ActionScript (kurz: AS) ist eine Programmiersprache des US-amerikanischen Softwareunternehmens Adobe Systems auf Basis des ECMAScript-Standards (ECMA-262) und dient zur Erstellung von Flash-Script-Anwendungen. Die Sprache wurde ursprünglich von Macromedia entwickelt, die im Dezember 2005 von Adobe Systems übernommen wurde.
Während Flash selbst anfangs zur Darstellung von Medieninhalten, wie Animationen und Filmen, diente, kam mit ActionScript die Möglichkeit interaktiver Anwendungen und Datenverarbeitung hinzu.
Funktion
Entwicklungsseitig ist die Sprache Teil der integrierten Entwicklungsumgebung (IDE) Adobe Flash, die sowohl Scriptentwicklung als auch deren Debuggen unterstützt. Anwendungsseitig wird sie vom Flash-Player, eigenständig oder als Browser-Plugin, beim Abspielen eines Flash-Scripts interpretiert. Laut einer Statistik von Macromedia verfügen über 97 % [1] aller Browser über ein Flash-Player-Plugin.
Mittlerweile gibt es auch eine Reihe kommerzieller sowie Open-Source-Werkzeuge von Drittherstellern, die es ebenfalls ermöglichen, Flash-Filme zu erzeugen; ein Beispiel im Open-Source-Bereich ist PHP Ming.
ActionScripts arbeiten stets ereignisorientiert. Sie werden also nur nach einem eingetretenem Ereignis ausgeführt. Dazu gehören etwa:
- Schlüsselbilder – sobald der Player ein bestimmtes Schlüsselbild abspielt
- Schaltflächen-Symbole – der Nutzer fährt mit der Maus über eine Schaltfläche oder klickt diese an
- MovieClip-Symbole – eingebettete MovieClips lösen selbst Ereignisse aus
- Interval-Impulse - Gestartete Intervalle (mit IRQs zu vergleichen) lösen den Aufruf aus
Konventionen/Syntax
ActionScript
Da ActionScript sowie auch JavaScript auf dem ECMAScript-Standard aufbaut, bestehen Ähnlichkeiten in der Syntax zwischen den beiden Sprachen. Trotzdem unterscheiden sich beide jedoch grundlegend: Während JavaScript hauptsächlich aus dem Browser-Umfeld bekannt ist und dort mit Fenster-, Dokument- und Formular-Objekten arbeitet, arbeitet ActionScript mit MovieClips, Textfeldern und Klängen.
ActionScript-1-Syntax
// Konstruktor-Funktion (in ActionScript 1.0 eine Art Klassenersatz) function SportTreiben () { trace ("ich treibe Sport"); this.aufwaermen (); } SportTreiben.prototype.aufwaermen = function () { trace ("ich wärme mich jetzt auf, mit " + this.addiere (1, 5) + " Liegestuetzen"); }; SportTreiben.prototype.trainiereGolf = function () { trace ("ich trainiere jetzt Golf"); }; SportTreiben.prototype.addiere = function (a1, a2) { return a1 + a2; };
// Ausführen var sport = new SportTreiben (); /* * Ausgabe im Ausgabefenster: * ich treibe Sport * ich wärme mich jetzt auf, mit 6 Liegestuetzen */ sport.trainiereGolf (); /* * Ausgabe im Ausgabefenster: * ich trainiere jetzt Golf */
ActionScript 2
Mit ActionScript 2 (AS2) gibt es seit Flash MX 2004 eine Java-ähnliche Programmiersprache, die sich an einem Entwurf für ECMAScript 4 [2] orientiert. AS2 wird ab der Flash-Player-Version 6.0.65.0 unterstützt.
Der Unterschied der beiden Skriptversionen liegt vor allem darin, dass AS2 ausschließlich in externen Dateien beschränkt ist, die von Flash automatisch erkannt werden. Innerhalb dieser ActionScript-Dateien darf jeweils nur eine Klasse definiert werden. Eine Mehrfach-Vererbung oder die Bildung von abstrakten Klassen ist in ActionScript 2.0 nicht möglich.
ActionScript-2-Syntax
// Adressierung der Klasse import tld.domain.projekt.*; class SportTreiben { function SportTreiben() { trace("ich treibe Sport"); // ein Aufruf einer internen Funktion aufwaermen(); } // ein Aufruf der nur innerhalb der Klasse gilt wird mit "private" gekennzeichnet private function aufwaermen():Void { trace("ich wärme mich jetzt auf, mit " + addiere (1, 5) + " Liegestuetzen"); } // ein Aufruf der auch von außerhalb erfolgen kann, wird mit "public" gekennzeichnet // Methoden ohne Rückgabewert sind vom Typ Void, auch leer bezeichnet public function trainiereGolf():Void { trace("ich trainiere jetzt Golf"); } // Parametertypen werden mittels : vom Parameternamen getrennt // der Rückgabetypus der Methode wird hinter der ) Klammer, ebenfalls nach einem : definiert private function addiere (a1:Number, a2:Number):Number { // der Rückgabewert vom Typ Number wird mittels return übergeben return a1 + a2; } }
Anwendung in der *.fla-Datei
// Importieren der Klasse var sport:SportTreiben = new SportTreiben(); /* * Ausgabe im Ausgabefenster: * ich treibe Sport * ich wärme mich jetzt auf, mit 6 Liegestuetzen */ sport.trainiereGolf(); /* * Ausgabe im Ausgabefenster: * ich trainiere jetzt Golf */
ActionScript 3
ActionScript 3.0 (kurz AS 3.0) ist eine objektorientierte Programmiersprache, die Verfahren für die Erstellung von Rich Internet Applications implementiert. Bereits frühere Versionen von ActionScript umfassten die nötige Funktionalität und Flexibilität für interaktive Web-Anwendungen. ActionScript 3.0 bietet zahlreiche Verbesserungen, darunter eine optimierte Performance und einen erweiterten Funktionsumfang, welcher die Programmierung hoch komplexer Anwendungen, größerer Datensatzgruppen und objektorientierter, wieder verwendbarer Standard-Code-Elemente vereinfachen soll. Die Skriptsprache beruht auf dem internationalen Standard ECMAScript und ist mit der Spezifikation für ECMAScript konform. Auf dieser Spezifikation aufbauend wurde, zur besseren XML-Verarbeitung, ECMAScript for XML (E4X) implementiert.
Zusätzlich wurde die grundlegend neue und überarbeitete, ActionScript Virtual Machine (kurz AVM2) eingeführt, die die Leistungsfähigkeit der Vorgängerversion AVM1 übertrifft. Code in ActionScript 3.0 wird bis zu zehn Mal schneller ausgeführt als in einer älteren Version.
Die neue AVM2 ist seit Flash Player 9 enthalten und wird als primäre Virtual Machine bei der Ausführung von ActionScript-Code eingesetzt. Auf Grund der Abwärtskompatibilität zu bestehenden Inhalten unterstützt der Flash Player weiterhin auch die bisher verwendete AVM1.
Neben der Verwendung in Adobe Flash kommt ActionScript ebenfalls in den Produkten Adobe Flex und Adobe AIR zum Einsatz.
--
Anwendung in der *.fla-Datei
var sport:SportTreiben = new SportTreiben(); /* * Ausgabe im Ausgabefenster: * ich treibe Sport * ich wärme mich jetzt auf, mit 6 Liegestuetzen */ sport.trainiereGolf(); /* * Ausgabe im Ausgabefenster: * ich trainiere jetzt Golf */
ActionScript-3-Syntax (Klassenerweiterung)
package { import flash.events.MouseEvent; import flash.display.MovieClip; public class Kugel extends MovieClip { public function Kugel() { trace("Kugel erzeugt: " + this.name); this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, clickListener); this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener); } private function clickListener(event:MouseEvent):void { trace("Sie haben die Kugel angeklickt!"); } public function mouseDownListener(event:MouseEvent):void { event.target.startDrag(); } public function mouseUpListener(event:MouseEvent):void { event.target.stopDrag(); } } }
Anwendung in der *.fla-Datei
var kugel1:Kugel = new Kugel(); addChild(kugel1);
Schreibweise
Funktionsnamen und Variablen sollten mit einem kleinen Buchstaben beginnen. Klassen sollten großgeschrieben werden. Der erste Buchstabe jedes Teilwortes sollte in beiden Fällen großgeschrieben werden.
Beispiele:
Anmerkung: Objekte (Instanzen) sind die Exemplare der Klassen. In diesem Fall ist etwa der Wert der Variablen rawXml ein Objekt der Klasse XML. siehe Instanzierung
Textvervollständigung
- Der ActionScript-Editor unterstützt Textvervollständigung – dies aber nur, wenn sich die Namen an ein bestimmtes Format halten:
- Durch die in AS 2.0 nötig gewordene Typisierung, kann auf die Suffixe verzichtet werden, da der AS-Editor die typisierten Namen interpretieren kann.
Objekt-Typ | Suffix | Beispiel |
---|---|---|
Array | _array | meinArray_array |
Button | _btn | meinButton_btn |
Camera | _cam | meineCamera_cam |
Color | _color | meinColor_color |
ContextMenu | _cm | meinContextMenu_cm |
ContextMenuItem | _cmi | meinContextMenuItem_cmi |
Date | _date | meinDate_date |
Error | _err | meinError_err |
LoadVars | _lv | meineVar_lv |
LoadConnection | _lc | meinConnection_lc |
Microphone | _mic | meinMicro_mic |
MovieClip | _mc | meinMovieClip_mc |
MovieClipLoader | _mcl | meinLoader_mcl |
PrintJob | _pj | meinPrint_pj |
NetConnection | _nc | meinConnection_nc |
NetStream | _ns | meinStream_ns |
SharedObject | _so | meinObject_so |
Sound | _sound | meinSound_sound |
String | _str | meinString_str |
TextField | _txt | meinTextField_txt |
TextFormat | _fmt | meinFormat_fmt |
Video | _video | meinVideo_video |
XML | _xml | meinXML_xml |
XMLNode | _xmlnode | meinNode_xmlnode |
XMLSocket | _xmlsocket | meinSocket_xmlsocket |
Kommentare
Schon während der Entwicklung werden meist Kommentare in den Code eingefügt, der die Funktionsweise beschreibt. Einem außenstehenden Entwickler soll damit ermöglicht werden, sich mithilfe der Kommentare schnell einzuarbeiten und den Code weiterzuentwickeln.
var clicks:Number = 0; // Dies ist ein einzeiliger Kommentar.
/* * Dies ist ein Kommentar, * der sich über mehrere Zeilen erstreckt. * */
Zugriff auf Variablen
this._parent.myVar.blah = 100; // Benutzen Sie relative Bezeichnungen wie diesen _root.myClip = 200; // Vermeiden Sie absolute Bezeichner wie diesen _global.myVar = 300; // _global-Variablen sind in allen Movies im Player verfügbar
Actions
Gängiges Vorgehen erfahrener Programmierer:
- Meist wird der Code an einer Stelle zusammengehalten – vorzugsweise im Frame 1 der Zeitleiste. Dies erleichtert dem Programmierer das spätere Debugging. Sollte ein Preloader verwendet werden, kann es dagegen notwendig sein, den Code erst in Frame 2 zu platzieren, da Flash oft Probleme hat den Code im ersten Frame rechtzeitig und korrekt auszuführen.
- Große Code-Blöcke werden mit Kommentaren in logische Teile unterteilt.
- Code wird nicht an MovieClips oder Buttons gebunden – hier stehen vielmehr nur Funktionsaufrufe. Die Funktionen als solche werden in einen Frame oder in eine ActionScript-Klasse (*.as-Datei) geschrieben.
// CODE IM BUTTON – nicht empfohlen on (release) { play(); }
// CODE IM FRAME – Empfehlung // (der Buttoninstanz muss dazu ein Instanzname gegeben werden // hier also: myButton_btn) myButton_btn.onRelease = function() { play(); }
Gängige Tools zur Programmierung in Actionscript sind neben dem eingebautem spartanischem Actionscript-Editor die Programme / Frameworks Eclipse und Flash.
Quellen
Die oben genannten Informationen stellen eine Zusammenfassung dieses Artikels dar:
- ActionScript-Programmierstil-Standards (PDF, englisch) von Macromedia
- ↑ (Verbreitungsstatistik)
- ↑ ECMAScript 4 - http://www.mozilla.org/js/language/es4/
Literatur
- Norbert Busche: Das Einsteigerseminar Macromedia Flash-MX-2004-Programmierung mit ActionScript 2.0. Vmi Buch, 2004, ISBN 3-8266-7277-1.
- Tobias Hauser: Einstieg in ActionScript. Galileo Press, 2006, ISBN 3-89842-774-9.
- Caroline und Matthias Kannengiesser: ActionScript Praxisbuch – Studienausgabe. Franzis, 2005, ISBN 3-7723-6645-7.
- Colin Moock: ActionScript für Flash MX – Die Referenz. O'Reilly Verlag, 2003, ISBN 3-89721-355-9.
- Colin Moock: ActionScript für Flash MX – Das Handbuch. O'Reilly Verlag, 2003, ISBN 3-89721-354-0.
- Colin Moock: Essential ActionScript 3. O'Reilly Verlag, 2007, ISBN 0-596-52694-6.
Siehe auch
- Adobe Flash
- Adobe Flex
- Gnash - freie Alternative zum Adobe Flash Player
- haXe (Programmiersprache) - alternative Sprache zum Einsatz in SWF-Dateien und Webanwendungen
- Flash Development Tools - Eclipse-Plugin zur Entwicklung von ActionScript
Weblinks
- ActionScript 2.0 Referenzhandbuch (von Macromedia)
- ECMAScript-Sprachspezifikation (englisch)
- Codeschnipsel- und Prototype-Archiv
- Visual Code - Actionscript für Gestaltung und Kunst
- Eine Vielzahl nützlicher Tutorials (von Macromedia) (englisch)
- MING: Open-Source-Bibliothek zur Erstellung von Flash und ActionScript (englisch)
- MTASC: Alternativer ActionScript-2-Compiler (englisch)
- FDT: Kommerzielle ActionScript IDE auf Eclipsebasis (englisch)
- Neuerungen von ActionScript 2 auf ActionScript 3