# ActionScript

ActionScript (AS) ist eine Programmiersprache des US-amerikanischen Softwareunternehmens Adobe Inc. auf Basis des ECMAScript-Standards (ECMA-262) für Programme, die für Adobe Flash, Flex oder Air entwickelt werden. Durch die Klassenbibliotheken von Adobe ermöglicht ActionScript einen programmierten Zugriff auf die grafischen und technischen Möglichkeiten der Flash-Umgebung. Es lassen sich Rich Internet Applications, Desktop-Anwendungen (Adobe Air) und Apps für Apple iOS, Android und Blackberry OS erstellen. Die Sprache wurde ursprünglich von Macromedia entwickelt, das im Dezember 2005 von Adobe Systems übernommen wurde.

## Funktion

Während ursprünglich Adobe Flash die einzige integrierte Entwicklungsumgebung (IDE) für die ActionScript-Programmierung darstellte, wird die Sprache mittlerweile von zahlreichen Entwicklungsumgebungen unterstützt. Zu ihnen zählen das frei verfügbare FlashDevelop sowie die proprietären Programme FDT und IntelliJ IDEA. Adobe bietet zur Entwicklung von ActionScript-basierten Applikationen Adobe Flash Builder an, welches auf Eclipse basiert und sowohl allein lauffähig ist, als auch mit einem Plugin ausgeliefert wird, das alternativ zur Benutzung des Programms selbst in eine bestehende Eclipse-Entwicklungsumgebung integriert werden kann. Anwendungen wie Ming und OpenLaszlo ermöglichen die serverseitige Erstellung von SWF-Dateien.

## Versionen
### ActionScript 1

    wurde 1999 in der Version 4 des Flash Players eingeführt, der damals von Macromedia entwickelt wurde. ActionScript 1 beherrschte nur rudimentäre Steuerungsfunktionen, um eine Präsentation interaktiv gestalten zu können. Objektorientierung ist in ActionScript 1 als prototypisierte Objektorientierung verfügbar.

### ActionScript 2

    ist eine zur Vorgängerversion kompatible objektorientiertere Erweiterung der Sprache, die mit Flash MX 2004 und dem Flash Player 7 vorgestellt wurde. Die prototypisierte Objektorientierung aus der ersten Version wurde mit einer neuen Syntax gekapselt, die Syntax- und Programmierparadigmen aus Java und C++ übernahm und klassenbasierte Entwicklung ermöglichte. Die Prototypkette ist jedoch erhalten geblieben und am Vererbungsmechanismus hat sich in dieser Version nichts geändert.
Seit der Einführung von ActionScript 3 wurde die API von ActionScript 1 und 2 nicht mehr weiterentwickelt, wird für die Abwärtskompatibilität jedoch auch noch in aktuellen Versionen des Flash Players unterstützt. Flex- und AIR-Anwendungen können ausschließlich in ActionScript 3 entwickelt werden.

### ActionScript 3

    wurde 2006 mit dem Flash Player 9 eingeführt und ermöglicht eine klassenbasierte Objektorientierung. Diese Version stellt somit eine große, nichtkompatible Erweiterung der Sprache dar, die auf Entwürfen zu ECMAScript 4 beruht. U. a. unterstützt AS3 die Typisierung zur Laufzeit. Gerade diese großen Änderungen führten zum Abbruch der Entwicklung von ECMAScript 4.0, sodass ActionScript 3 ein isolierter Vertreter dieses Sprachentwurfs ist.

## Erweiterbarkeit

Über die Objektorientierung kann auf Basis von ActionScript über quelloffene Klassenpakete und binäre Klassenbibliotheken erweiterte Funktionalität bereitgestellt werden. Diese können in Flash- oder Flex-Projekte eingebunden werden. Bei den Klassenbibliotheken handelt es sich um ZIP-Archive mit der Dateiendung SWC, die neben ActionScript-Code alle Datenformate enthalten können, die auch in SWFs eingebettet werden können. Auf diese Weise können in diesen Dateien neben ActionScript-Logik auch als Komponenten (konfigurierbare GUI-Elemente für Flash oder Flex) gestaltete Elemente weitergegeben werden.
Neben den umfangreichen Klassenbibliotheken, die Adobe mit dem proprietären Adobe Flash oder dem freien Flex SDK ausliefert, gibt es eine Vielzahl freier, kostenloser oder kommerzieller Angebote anderer Entwickler und Firmen. Sie erweitern den Funktionsumfang der Kernsprache zum Teil erheblich und stellen auf Basis der Grundfunktionen von Sprache und Plattform Features, wie z. B. Tweening- oder 3D-Funktionalitäten, zur Verfügung.

## Laufzeitumgebung

ActionScript 3 wird in der ActionScript Virtual Machine 2 (AVM2) ausgeführt, während die Vorgängerversionen in der AVM1 ausgeführt werden. Zwischen beiden virtuellen Maschinen ist keine nahtlose oder direkte Kommunikation möglich, so dass ActionScript 1 und 2 getrennt von ActionScript 3 laufen.