ActionScript
ActionScript (kurz: AS) ist eine proprietäre Scriptsprache des US-amerikanischen Softwareunternehmen Adobe Systems auf Basis des ECMAScript-Standards (ECMA-262). (Ursprünglich von Firma Macromedia, welche jedoch im Dez. 2005 von Adobe Systems aufgekauft wurde.)
Es handelt sich hierbei um eine programminterne Sprache der Entwicklungsumgebung Macromedia Flash, die vom sogenannten Flash-Player (eigenständig oder als Browser-Plugin) beim Abspielen eines Films interpretiert wird. Der ActionScript-Code kann sowohl in die FLA-Dateien integriert werden, als auch als externe Textdatei bei Erstellung einer SWF-Datei nachgeladen werden. Laut einer Statistik von Macromedia verfügen über 95 % aller Browser über ein Flash-Player-Plugin.
Macromedia Flash enthält eine integrierte Entwicklungsumgebung (IDE), die sowohl Scriptentwicklung als auch deren Debuggen unterstützt. Mittlerweile gibt es auch eine Reihe kommerzieller Tools sowie Open-Source-Bibliotheken (z. B. Ming bei PHP), die es ebenfalls ermöglichen Flash-Filme mit ActionScript zu erzeugen.
ActionScripts arbeiten stets ereignisorientiert – werden also nur nach einem eingetretenem Ereignis ausgeführt.
Einige Ereignisse, die ausgewertet werden können:
- 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
Konventionen/Syntax
ActionScript
Da ActionScript sowie auch JavaScript auf dem ECMAScript-Standard aufbauen, 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 2
Mit ActionScript 2 (AS2) gibt es seit Flash MX 2004 eine Java-ähnliche Programmiersprache, die sich an einem Entwurf für ECMAScript 4 [1] 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 import tld.domain.project.* var sport:SportTreiben = new SportTreiben(); /* Ausgabe im Ausgabefenster: * ich treibe Sport * ich wärmen mich jetzt auf, mit 6 Liegestuetzen */ sport.trainiereGolf(); /* Ausgabe im Ausgabefenster: * ich trainiere jetzt Golf */
Schreibweise
Funktionsnamen und Variablen sollten mit einem kleinen Buchstaben beginnen. Objekte sollten großgeschrieben werden. Der erste Buchstabe jedes Teilwortes sollte in beiden Fällen großgeschrieben werden.
Beispiele:
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
Es wird allgemein empfohlen, schon während der Entwicklung genügend Kommentare in den Code einzufügen, der die Funktionsweise beschreibt. Ein außenstehender Entwickler sollte in der Lage sein, 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
- Wenn immer möglich, sollte der Code an einer Stelle zusammengehalten werden – vorzugsweise im Frame 1 der Zeitleiste (Sollte ein Preloader verwendet werden, kann es notwendig sein, den Code erst im Frame 2 zu plazieren). Dies macht das Wiederfinden und Debugging später einfacher.
- Große Code-Blöcke sollten in logische Teile mit Kommentaren segmentiert werden.
- Vermeiden Sie, Code an MovieClips oder Buttons zu binden – hier sollten nur Funktionsaufrufe stehen. Die Funktionen als solche können in einen Frame oder in eine ActionScript-Klasse (*.as-Datei) geschrieben werden.
// 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(); }
Quellen
Die oben genannten Informationen stellen eine Zusammenfassung dieses Artikels:
- ActionScript-Programmierstil-Standards (PDF, englisch) von Macromedia
- ↑ ECMAScript 4 - http://www.mozilla.org/js/language/es4/
Literatur
- Caroline und Matthias Kannengiesser: Durchstarten mit Flash 8 - HotStuff. Franzis, Deutschland 2006, ISBN 3-7723-7580-4
- Christian Dyadio und Bela Halasz: Flash 8 – Easy. Markt und Technik, Deutschland 2006, ISBN 3-8272-4040-9
- Caroline und Matthias Kannengiesser: ActionScript Praxisbuch – Studienausgabe. Franzis, Deutschland 2005, ISBN 3-7723-6645-7
- Caroline und Matthias Kannengiesser: Flash MX 2004 - Professional. Franzis, Deutschland 2005, ISBN 3-7723-7995-8
- Sascha Wolter und Marc Thiele: Flash MX 2004 - Standard- und Professional-Version Galileo Press, Deutschland 2004, ISBN 3-8984-2468-5
- Norbert Busche: Das Einsteigerseminar Macromedia Flash MX 2004 vmi, Deutschland 2004, ISBN 3-8266-7276-3
- Norbert Busche: Das Einsteigerseminar Macromedia Flash-MX-2004-Programmierung mit ActionScript 2.0, vmi, Deutschland 2004, ISBN 3-8266-7277-1
- Colin Moock: ActionScript für Flash MX - Das Handbuch O'Reilly Verlag 2003 ISBN 3-89721-354-0 (deutsche Übersetzung)
- Colin Moock: ActionScript für Flash MX - Die Referenz O'Reilly Verlag 2003 ISBN 3-89721-355-9 (deutsche Übersetzung)
Siehe auch
Weblinks
- ActionScript 2.0 Referenzhandbuch (von Macromedia) (deutsch)
- ActionScript Dokumentation (deutsch)
- ECMAScript-Sprachspezifikation (englisch)
- Codeschnipsel- und Prototype-Archiv (deutsch)
- Zahlreiche nützliche Beispiele und Tutorials (deutsch)
- 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)
- Flashforum: Das größte deutschsprachige Forum zu Flash und ActionScript (deutsch)