ActionScript
aus Wikipedia, der freien Enzyklopädie
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 Adobe 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 97 % (Verbreitungsstatistik) aller Browser über ein Flash-Player-Plugin.
Adobe 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. PHP Ming als Ming Plugin von PHP, die es ebenfalls ermöglichen Flash-Filme zu erzeugen. Beispiele : Ming Projectleader Demos
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
Inhaltsverzeichnis |
[Bearbeiten] Konventionen/Syntax
[Bearbeiten] 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.
[Bearbeiten] 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 */
[Bearbeiten] 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.
[Bearbeiten] 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; } }
[Bearbeiten] 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 */
[Bearbeiten] 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.
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.
[Bearbeiten] ActionScript 3 Syntax
package { public class SportTreiben { public 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; } } }
[Bearbeiten] 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 */
[Bearbeiten] 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 angeclickt!"); } public function mouseDownListener(event:MouseEvent):void { this.startDrag(); } public function mouseUpListener(event:MouseEvent):void { this.stopDrag(); } } }
[Bearbeiten] Anwendung in der *.fla-Datei
var kugel1:Kugel = new Kugel(); addChild(kugel1);
[Bearbeiten] 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:
[Bearbeiten] 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 |
[Bearbeiten] 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. * */
[Bearbeiten] 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
[Bearbeiten] 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 platzieren). 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(); }
[Bearbeiten] Quellen
Die oben genannten Informationen stellen eine Zusammenfassung dieses Artikels dar:
- ActionScript-Programmierstil-Standards (PDF, englisch) von Macromedia
- ↑ ECMAScript 4 - http://www.mozilla.org/js/language/es4/
[Bearbeiten] 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-8984-2774-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.
[Bearbeiten] Siehe auch
Wikibooks: ActionScript – Lern- und Lehrmaterialien |
[Bearbeiten] Weblinks
- ActionScript 2.0 Referenzhandbuch (von Macromedia)
- ECMAScript-Sprachspezifikation (englisch)
- Codeschnipsel- und Prototype-Archiv
- 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)