Aktionen
Paradigma | Multi-Paradigma: objektorientierter (Prototypbasiert), funktional, Imperativ, Scripting |
---|---|
Entworfen von | Gary Grossman |
Entwickler | Makromedia (jetzt aufgelöst in Adobe Systems) |
Erstmals erschienen | 1998 |
Stabile Version | 3.0 / 27. Juni 2006 |
Disziplin tippen | stark, statisch |
Webseite | adobe.com/devnet/actionscript/ |
Haupt Implementierungen | |
Adobe Flash Player, Adobe AIR, Apache Flex, ScaleForm GFX | |
Beeinflusst von | |
JavaScript, Java | |
Beeinflusst | |
Haxe |
Dateiname Erweiterung | .wie |
---|---|
Internet -Medientyp | Anwendung/ECMascript[1] |
Aktionen ist ein Objekt orientierte Programmierung Sprache ursprünglich entwickelt von Macromedia Inc. (später erworben von Adobe Systems). Es wird von beeinflusst von Hypertalkdie Skriptsprache für Hypercard.[2] Es ist jetzt eine Implementierung von ECMaskript (Das heißt, es ist ein Supersatz der Syntax und Semantik der Sprache, die weiterhin bekannt als JavaScript), obwohl es ursprünglich als Geschwister entstand, beide von beeinflusst von Hypertalk. Der ActionScript-Code wird normalerweise vom Compiler in das Byte-Code-Format konvertiert.
ActionScript wird hauptsächlich für die Entwicklung von Websites und Software verwendet, die auf die abzielen Adobe Flash Player Plattform, verwendet auf Webseiten in Form von eingebetteten SWF -Dateien.
ActionScript 3 wird auch mit verwendet Adobe AIR System zur Entwicklung von Desktop- und mobilen Anwendungen. Die Sprache selbst ist Open-Source, da ihre Spezifikation kostenlos angeboten wird[3] und beide ein Open -Source -Compiler (als Teil von Apache Flex) und virtuelle Open -Source -Maschine (Mozilla Tamarin) stehen zur Verfügung.
ActionScript wurde auch mit verwendet ScaleForm GFX Für die Entwicklung von 3D -Videospiel -Benutzeroberflächen und Huds.
Überblick
ActionScript wurde ursprünglich für die Kontrolle einfacher 2D -Vektoranimationen entwickelt in Adobe Flash (ehemals Makromedia -Blitz). Die frühen Versionen von Flash -Inhalten waren zunächst nur wenige Interaktivitätsfunktionen und hatten somit nur sehr begrenzte Skriptfunktionen. Spätere Versionen fügten Funktionen hinzu, die die Erstellung webbasierter Spiele ermöglichen und Reiche Webanwendungen mit Streaming -Medien (wie Video und Audio). Heute ist ActionScript für Desktop- und Mobile -Entwicklung über Adobe Air geeignet, in einigen Datenbankanwendungen und in grundlegenden Robotik wie bei der Robotik verwendet Controller Kit machen.
Flash MX 2004 Einführte ActionScript 2.0, a Skriptsprache besser für die Entwicklung von Flash -Anwendungen geeignet. Es ist oft möglich, Zeit zu sparen, indem es etwas skriptet, anstatt es zu animieren, was normalerweise auch eine höhere Flexibilität beim Bearbeiten ermöglicht.
Seit der Ankunft des Flash Player 9 Alpha (2006) wurde eine neuere Version von ActionScript veröffentlicht, ActionScript 3.0. Diese Version der Sprache soll zusammengestellt und auf einer Version der ausgeführt werden Virtuelle Maschine von ActionScript Das selbst wurde von Grund auf vollständig wieder geschrieben (genannt AVM2).[4] Aus diesem Grund ist der in ActionScript 3.0 geschriebene Code im Allgemeinen für den Flash -Player 9 und höher abgestimmt und funktioniert in früheren Versionen nicht. Gleichzeitig führt ActionScript 3.0 aufgrund des Just-in-Time-Compiler Verbesserungen.[5]
Flash -Bibliotheken können mit den XML -Funktionen des Browsers verwendet werden, um reichhaltige Inhalte im Browser zu rendern. Diese Technologie ist als asynchroner Flash und XML bekannt, ähnlich wie Ajax. Adobe bietet seine Flex -Produktlinie an, um die Nachfrage nach reichhaltigen Webanwendungen zu erfüllen, die auf der Flash -Laufzeit basieren. Verhaltensweisen und Programmierungen in ActionScript. ActionScript 3.0 bildet die Grundlage der Flex 2 -API.
Geschichte
ActionScript begann als ein Objekt orientierte Programmierung Sprache für MakromediaDas Flash -Authoring -Tool, das später von Adobe Systems als Adobe Flash entwickelt wurde. Die ersten drei Versionen des Flash Authoring -Tools lieferten begrenzte Interaktivitätsfunktionen. Frühe Flash -Entwickler könnten einen einfachen Befehl mit "Aktion" an eine Taste oder einen Rahmen anhängen. Die Aktionen waren grundlegende Navigationskontrollen mit Befehlen wie "Play", "Stop", "Geturl" und "Gotoandplay".
Mit der Veröffentlichung von Flash 4 im Jahr 1999 wurde diese einfache Reihe von Aktionen zu einer kleinen Skriptsprache. Neue Fähigkeiten, die für Flash 4 eingeführt wurden, enthalten Variablen, Ausdrücke, Betreiber, Wenn Aussagen, und Schleifen. Obwohl es intern als "ActionScript" bezeichnet wird, verwendeten das Flash 4 -Benutzerhandbuch und die Marketingdokumente weiterhin den Begriff "Aktionen", um diesen Befehlssatz zu beschreiben.
Timeline nach Spielerversion
- Flash Player 2: Die erste Version mit Skriptunterstützung. Zu den Aktionen gehörten Gotoandplay, Gotoandstop, NextFrame und NextScene für die Timeline -Kontrolle.
- Flash Player 3: Erweiterte grundlegende Skriptunterstützung mit der Fähigkeit, extern zu laden SWFS (LoadMovie).
- Flash Player 4: Erster Spieler mit einer vollständigen Skriptimplementierung (genannt Aktionen). Das Scripting war eine blitzbasierte Syntax und enthielt Unterstützung für Schleifen, Bedingungen, Variablen und andere grundlegende Sprachkonstrukte.
- Flash Player 5: Enthält die erste Version von ActionScript. Gebraucht Prototypbasierte Programmierung Basierend auf ECMascript,[6] und voll zugelassen Verfahrensprogrammierung und objektorientierte Programmierung. Designbasierte Entwicklung.
- Flash Player 6: Ein Ereignisbearbeitungsmodell, Barrierefreiheitskontrollen und Unterstützung für Ereignisbearbeitungen fügte hinzu Schalter. Die erste Version mit Unterstützung für die AMF und RTMP Protokolle, die ein Audio-/Video -Streaming auf Bedarf ermöglichten.
- Flash Player 7: Zu den Ergänzungen gehört das CSS -Styling für Text und Unterstützung für ActionScript 2.0, eine Programmiersprache, die auf dem ECMAScript 4 Netscape -Vorschlag basiert[7] mit Klasse-basierend Nachlass. ActionScript 2.0 kann jedoch Cross Compile zu actionScript 1.0 Byte-Code, damit es in Flash Player 6 ausgeführt werden kann.
- Flash Player 8: Weitere erweiterte ActionScript 1/ActionScript 2 Durch Hinzufügen neuer Klassenbibliotheken mit APIs zur Steuerung von Bitmap-Daten bei Laufzeit, Datei-Uploads und Live-Filtern für Unschärfe und Dropshadow.
- Flash Player 9 (ursprünglich 8.5 genannt): ActionScript 3.0 mit dem Aufkommen einer neuen virtuellen Maschine hinzugefügt, genannt ActionScript virtuelle Maschine 2 (AVM2), das mit dem vorherigen AVM1 zusammenfasst, um Legacy -Inhalte zu unterstützen. Die Leistungssteigerungen waren ein Hauptziel für diese Veröffentlichung des Spielers einschließlich eines neuen Jit Compiler. Unterstützung für binäre Steckdosen, E4X XML-Parsen, Vollbildmodus und reguläre Ausdrücke wurden hinzugefügt. Dies ist die erste Veröffentlichung des Spielers mit dem Titel Adobe Flash Player.[8]
- Flash Player 10 (ursprünglich Astro genannt): Basic hinzugefügt 3d Manipulation, wie das Drehen auf der X-, Y- und Z -Achse, eine 3D -Zeichnungs -API und Textur-Mapping. Fähigkeit, benutzerdefinierte Filter mithilfe von benutzerdefinierten Filtern zu erstellen Adobe Pixel Bender. Mehrere visuelle Verarbeitungsaufgaben werden jetzt an die abgeladen GPU Dies ergibt eine merkliche Verringerung der Renderzeit für jeden Frame, was zu höher führt Bildraten, insbesondere mit H.264 Video. Es gibt eine neue Sound -API, die eine benutzerdefinierte Erstellung von Audio in Flash ermöglicht, was noch nie möglich war.[9] Darüber hinaus unterstützt Flash Player 10 Peer to Peer (P2P) Kommunikation mit Echtzeit -Medienflussprotokoll (RTMFP).
- Flash Player 11: Die Hauptanwendung in dieser Version sind die Stage3d-Basierte fortschrittliche (Grafikkarte beschleunigte) 3D -Funktionen für Windows Desktop, Mac Desktop, iOS, Androidund andere wichtige Plattformen. Für die iOS-Plattform und andere Nicht-Desktop-Plattformen wurden erhebliche Kompatibilitätsverbesserungen hinzugefügt. Weitere Funktionen sind H.264 -Codierung für Kameras, native JSON Unterstützung, kubische Bézier -Kurven, ein sicherer Zufallszahlengenerator, Lzma Komprimierung für SWF -Dateien, Arbeiter, um eine Codeausführung in andere Prozessor -Threads, die Rendering der Grafikkartenbeschleunigungen, die Renderung von Speicher und die Leistungsanalyse sowie der ActionScript -Compiler 2.0 sowie einige andere kleinere Ergänzungen zu laden.[10]
- Flash Player 11.2: veröffentlicht im März 2012, das sich auf das Hinzufügen von Funktionen konzentriert, die für die Spiel- und Videopremärkte von entscheidender Bedeutung sind. Einige der Funktionen in der Veröffentlichung umfassen Folgendes: Maus-Lock-Unterstützung. Rechte und mittlere Mausklick-Unterstützung. Kontextmenü Deaktivierung. Hardware-beschleunigte Grafik/Stage 3D-Unterstützung für Apple iOS und Android über Adobe Air. Unterstützung für mehr hardwarebeschleunigte Grafikkarten (ab Januar 2008), um die Verfügbarkeit von hardwarebeschleunigten Inhalten zu erweitern. NEUE GROSSBOTTLE -Ereignis -API (Versandereignis, wenn Flash Player Drosseln, Pausen oder Inhalte wieder aufnimmt). Multithread -Video -Dekodierungspipeline auf PCs, die die Gesamtleistung von Video auf allen Desktop -Plattformen verbessert. Benachrichtigung über die Verwendung von Premium -Funktionen bei den Debug -Spielern; Inhalt läuft in den Release -Spielern uneingeschränkt.
- Flash Player 11.3: Veröffentlicht im Juni 2012, konzentriert sich auf die Aktivierung von Funktionen und Funktionen für den Gaming -Markt sowie auf die Befragung der beliebten Funktionsanfragen von Entwicklern. Einige der Funktionen in dieser Version umfassen Folgendes: Tastatureingangsunterstützung im Vollbildmodus. Verbesserte Audiounterstützung für die Arbeit mit Audio mit geringem Latenz. Fähigkeit, Texturen für den 3D -Inhalt der Stufe schrittweise zu streamen. Schutzmodus für Flash Player in Firefox. Frame -Label -Ereignisse. Unterstützung für die Komprimierung von Bitmapdata in JPEG- und PNG -Formaten. Unterstützung für Mac OS X App Store Application Sandboxing -Anforderungen. Text -Streaming -Unterstützung für Stage 3D. Erweiterte Informationen zu GPU -Treiberdetails. Bitmap -Ziehung mit hochwertiger API (neu). Freigabe außerhalb der Mausereignis -API. Flash Player Silent Update Support für Mac OS. Stiftunterstützung für Android 4.0 -Geräte (Adobe Air). USB -Debugging für iOS (Adobe Air). IOS -Simulatorunterstützung (Adobe Air).
- Flash Player 11.4: Veröffentlicht im August 2012, konzentriert sich auf die Ermöglichung von Funktionen und Funktionen, die für den Gaming -Markt von entscheidender Bedeutung sind, sowie auf die Befragung der beliebten Funktionsanfragen von Entwicklern. Einige der Funktionen in dieser Version enthalten Folgendes: ActionScript -Mitarbeiter (ermöglicht eine gleichzeitige Ausführung von Aktionen in getrennten Threads). Unterstützung für fortgeschrittene Profile. LZMA -Kompressionsunterstützung für Bytearray. Unterstützung für Hardware-Beschleunigungsgrafikkarten für Stage 3D, die auf 2006 erweitert wurde. Verbesserte Aktionskriptleistung bei der Ausrichtung von Apple iOS. Performance Index -API, um über die Leistungsfunktionen der aktuellen Umgebung zu informieren. Unterstützung für komprimierte Texturen mit Alpha -Unterstützung. Unterstützung für StageVideo.attachcamera api. Unterstützung für Push -Benachrichtigungen für iOS (Adobe Air).
- Flash Player 11.5: Veröffentlicht im November 2012, konzentriert sich auf Leistungsverbesserung und Stabilität. Einige der Funktionen dieser Version umfassen Folgendes: Shared Bytearray -Unterstützung für ActionScript -Mitarbeiter. Debuggen Stapelspur In Release -Builds von Flash Player. Verschiedene Fehlerbehebungen
- Flash Player 11.6: Im März 2013 veröffentlicht, konzentriert sich auf Leistungsverbesserungen, Sicherheitsverbesserungen und Stabilität. Einige der Funktionen in dieser Version umfassen Folgendes: Die Möglichkeit, Grafikvektordaten zur Laufzeit abzufragen. Dialogdialogin für Dialogfeld "Full-Screen" Benutzeroberfläche Verbesserungen. Möglichkeit, SWFs zur Laufzeit zu laden, wenn sie als Luftanwendung im AOT -Modus auf iOS bereitgestellt werden. Feinere körnige Kontrolle über unterstützte Anzeigeauflösung auf iOS -Geräten beim Bereitstellen als Luftanwendung. HIDPI -Unterstützung für Flash Professional. ActionScript 3 Zugriff auf schnelle Speicheroperationen/Intrinsics
- Flash Player 11.7: Veröffentlicht im Juni 2013, Code "Geary". Diese Version konzentriert sich auf Premium -Video, Spiele, Sicherheit und Stabilität. Einige der für diese Veröffentlichung geplanten Funktionen umfassen Folgendes: Android Captive Runtive Debugging. Unterstützung für die Ouya Regler. Remote -Hosting von SWF -Dateien auf iOS. Verhinderung der Sicherung gemeinsamer Objekte auf iOS für eine bessere iCloud -Unterstützung.
- Flash -Player 11.8 (Codename Harrison): Adobe plante, diese Version zu Beginn der zweiten Halbzeit des Jahres 2013 mit dem Namen "Harrison" zu veröffentlichen. Diese Veröffentlichung konzentrierte sich auf Premium -Video, Spiele, Sicherheit und Stabilität. Einige der Funktionen in dieser Version hätten Folgendes enthalten: rekursive Stopp -API auf MoveClips. Gamepad -Unterstützung auf Desktop -Browsern und Android
Timeline nach ActionScript -Version
2000–2004: ActionScript "1.0"
Mit der Veröffentlichung von Flash 5 im September 2000 wurden die "Aktionen" von Flash 4 erneut verbessert und zum ersten Mal "ActionScript" benannt.[11] Dies war die erste Version von ActionScript mit Einflüssen aus JavaScript und die ECMA-262 (Dritte Ausgabe) Standard, unterstützt das Objektmodell des Standards und viele seiner Kern Datentypen. Lokale Variablen können mit dem deklariert werden var Anweisung und benutzerdefinierte Funktionen mit Parameter Vorbeigehen und Rückkehr Werte können auch erstellt werden. Bemerkenswerterweise könnte ActionScript nun auch mit einem Texteditor eingegeben werden, anstatt durch die Auswahl von Aktionen aus Dropdown-Listen und Dialogfeldsteuerung zusammenzuführen zu werden. Mit der nächsten Veröffentlichung seines Authoring -Tools Flash MX und seinem entsprechenden Spieler, Flash Player 6Die Sprache blieb im Wesentlichen unverändert; Es gab nur geringfügige Veränderungen, wie die Zugabe der Schalter Aussage und die "strenge Gleichheit" (===) Betreiber, der es dem Sein näher brachte ECMA-262-konform. Zwei wichtige Merkmale von ActionScript, die es von späteren Versionen unterscheiden, sind sein loses Typsystem und sein Vertrauen in prototypbasierte basierte Versionen sind ein loses Typ. Nachlass. Lose Typierung bezieht sich auf die Fähigkeit von a Variable alle Datensorten halten. Dies ermöglicht eine schnelle Skriptentwicklung und eignet sich besonders gut für kleine Skriptprojekte. Prototypbasierte Vererbung ist der ActionScript 1.0-Mechanismus für die Wiederverwendung von Code und die objektorientierte Programmierung. Anstelle einer Klasse Schlüsselwort, das gemeinsame Eigenschaften von a definiert Klasse, ActionScript 1.0 verwendet ein spezielles Objekt, das als "Prototyp" für eine Klasse von Objekten dient. Alle häufigen Eigenschaften einer Klasse sind im Prototypobjekt der Klasse und alle definiert Beispiel dieser Klasse enthält einen Link zu diesem Prototypobjekt.
2003–2006: ActionScript 2.0
Die nächste große Überarbeitung der Sprache, ActionScript 2.0, wurde im September 2003 mit der Veröffentlichung von Flash MX 2004 und seinem entsprechenden Spieler eingeführt. Flash Player 7. Als Reaktion auf die Benutzerbedarf nach einer Sprache, die besser für größere und komplexere Anwendungen ausgestattet ist, zeigte ActionScript 2.0 die Kompilierungszeit Geben Sie die Überprüfung ein und klassenbasiert Syntax, wie die Schlüsselwörter Klasse und erweitert. (Dies ermöglichte zwar einen strukturierteren, objektorientierten Programmieransatz, der Code würde dennoch mit ActionScript 1.0 zusammengestellt werden Bytecode, so dass es auch für den vorhergehenden Flash -Player 6 verwendet werden kann. Mit anderen Worten, die Klassenbasierte Die Vererbungssyntax war eine Ebene über dem vorhandenen prototypbasierten System.) Mit ActionScript 2.0 konnten Entwickler einschränken Variablen zu einem bestimmten Typ durch Hinzufügen eines Typ -Annotations Kompilierungszeit. ActionScript 2.0 führte auch die klassenbasierte Vererbungssyntax ein, damit Entwickler Klassen und Schnittstellen erstellen können, so wie sie es in klassenbasierten Sprachen wie z. B. Java und C ++. Diese Version entsprach teilweise der ECMaskript Vierte Ausgabeentwurfspezifikation.
2006–2020: ActionScript 3.0
Im Juni 2006 debütierte ActionScript 3.0 mit Adobe Flex 2.0 und sein entsprechender Spieler, Flash Player 9. ActionScript 3.0 war eine grundlegende Umstrukturierung der Sprache, so dass sie einen völlig anderen verwendet virtuelle Maschine. Flash Player 9 enthält zwei virtuelle Maschinen, AVM1 für den Code, der in ActionScript 1.0 und 2.0 geschrieben wurde, und AVM2 für Inhalte, die in ActionScript 3.0 geschrieben wurden. ActionScript 3.0 wurde eingeschränkter Unterstützung für die Hardwarebeschleunigung hinzugefügt (DirectX, OpenGL).
Das Update der Sprache führte mehrere neue Funktionen vor:
- Kompilierungszeit und Laufzeit Typ Checking-Informationen finden Sie sowohl zur Kompilierungszeit als auch zur Laufzeit.
- Verbesserte Leistung durch ein klassenbasiertes Erbsystem, das vom prototypbasierten Vererbungssystem getrennt ist.
- Unterstützung für Pakete, Namespaces, und Reguläre Ausdrücke.
- Kompiliert eine völlig neue Art von Bytecode, inkompatibel mit ActionScript 1.0 und 2.0 Bytecode.
- Überarbeiteter Flash -Player API, organisiert in Pakete.
- Einheitlich Handhabung des Events System basierend auf dem DOM -Ereignishandhabung Standard.
- Integration von ECMascript für XML (E4x) für Zwecke von Xml wird bearbeitet.
- Direkter Zugriff auf den Blitz Laufzeit Anzeigen Sie die Liste an, um die vollständige Kontrolle darüber zu erhalten, was zur Laufzeit angezeigt wird.
- Vollständig konforme Implementierung der ECMaskript Vierte Ausgabeentwurfspezifikation.
- Begrenzte Unterstützung für dynamische 3D -Objekte. (X, Y, Z -Rotation und Texturzuordnung)
Flash Lite
- Flash Lite 1.0: Flash Lite ist die Flash -Technologie, die speziell für Mobiltelefone und Unterhaltungselektronikgeräte entwickelt wurde. Unterstützt Flash 4 ActionScript.
- Flash Lite 1.1: Flash 4 ActionScript -Unterstützung und zusätzliche Geräte -APIs hinzugefügt.
- Flash Lite 2.0 und 2.1: Unterstützung für Flash 7 ActionScript 2.0 und einige zusätzliche FSCommand2 -API hinzugefügt.
- Flash Lite 3: Unterstützung für Flash 8 ActionScript 2.0 und auch hinzugefügt Flv Video-Wiedergabe.
- Flash Lite 4: Unterstützung für Flash 10 ActionScript 3.0 als Browser -Plugin und auch Hardware -Grafikbeschleunigung.
LUFT
Adobe AIR Unterstützt ActionScript, zusätzlich zu einigen erweiterten Inhalten, beispielsweise der Stage3d Engine Adobe. Die Anzahl der Apis (Anwendungsprogrammierschnittstellen) verfügbar für ActionScript 3.0 ist ebenfalls dramatisch gestiegen.
Syntax
ActionScript -Code ist freie Form und kann damit mit welcher Menge oder dem Stil von Weißer erstellt werden, den der Autor wünscht. Die grundlegende Syntax wird abgeleitet von ECMaskript.
ActionScript 2.0
Der folgende Code, der in einem konformen Spieler funktioniert, erstellt ein Textfeld in der Tiefe 0 an Position (0, 0) auf dem Bildschirm (gemessen in Pixel), das 100 Pixel breit und hoch ist. Dann ist die Text
Der Parameter wird auf die "eingestellt"Hallo Welt"String, und es wird automatisch im Player angezeigt:
CreateTextfield("grüßen", 0, 0, 0, 100, 100); grüßen.Text = "Hallo Welt";
Beim Schreiben externer ActionScript 2.0 -Klassendateien kann das obige Beispiel in einer Datei mit dem Namen geschrieben werden Begrüßer.as wie folgt.
Klasse com.Beispiel.Begrüßer erweitert Filmausschnitt { Öffentlichkeit Funktion Begrüßer() { var txthello: Textfeld = Dies.CreateTextfield("Txthello", 0, 0, 0, 100, 100); txthello.Text = "Hallo Welt"; } }
ActionScript 3.0
ActionScript 3.0 hat eine ähnliche Syntax wie ActionScript 2.0, jedoch einen anderen Satz von APIs zum Erstellen von Objekten. Vergleichen Sie das folgende Skript mit der vorherigen ActionScript 2.0 -Version:
var txthello: Textfeld = Neu Textfeld(); txthello.Text = "Hallo Welt"; Dies.Addchild(txthello);
Minimal ActionScript 3.0 -Programme können aufgrund der erhöhten Trennung der Programmiersprache und der Flash -IDE etwas größer und komplizierter sein.
Nehmen Sie die folgende Datei an, um es zu sein Begrüßer.as:
Paket com.example { importieren flash.text.textfield; importieren flash.display.sprite; Öffentlichkeit Klasse Begrüßer erweitert Sprite { Öffentlichkeit Funktion Begrüßer() { var txthello: Textfeld = Neu Textfeld(); txthello.Text = "Hallo Welt"; Addparent3(txthello); } } }
ActionScript 2 kann auch in verwendet werden Mxml Dateien bei Verwendung Apache's Flex Rahmen:
xmlns: fx ="http://ns.adobe.com/mxml/2009" xmlns: s ="Bibliothek: //ns.adobe.com/flex/mx/polysylabi" xmlns: mx ="Bibliothek: //ns.adobe.com/flex/mx" Layout ="vertikal" CreationComplete ="initapp ()"> Öffentlichkeit Funktion initapp(): Leere { // druckt unsere "Hallo, Welt!" Nachricht in den Titel Titel.Text = "Hallo Welt!"; } ]]> id ="Titel" fontsize ="54" fontStyle ="Fett gedruckt" />
Datenstrukturen
Datentypen
ActionScript besteht hauptsächlich aus "grundlegenden" oder "einfachen" Datentypen, die zum Erstellen anderer Datentypen verwendet werden. Diese Datentypen sind sehr ähnlich zu Java Datentypen. Da ActionScript 3 ein vollständiges Umschreiben von ActionScript 2 war, haben sich die Datentypen und deren Erbschaften geändert.
ActionScript 2 Top -Level -Datentypen
- Keine Zeichenfolge + Eine Liste von Charakteren wie "Hello World"
- Nummer + Jeder numerische Wert
- Boolesche + Ein einfacher binärer Speicher, der nur "wahr" oder "falsch" sein kann.
- Objekt - Objekt ist der Datentyp, von dem alle komplexen Datentypen erben. Es ermöglicht die Gruppierung von Methoden, Funktionen, Parametern und anderen Objekten.
Aktionen 2 komplexe Datentypen
Es gibt zusätzliche "komplexe" Datentypen. Dies sind Prozessor- und Speicherintensiver und bestehen aus vielen "einfachen" Datentypen. Für AS2 sind einige dieser Datentypen:
- Filmausschnitt + Eine ActionScript -Erstellung, die eine einfache Verwendung sichtbarer Objekte ermöglicht.
- Textfeld + Ein einfaches Dynamik- oder Eingabetextfeld. Erbt den Movieclip -Typ.
- Taste + Eine einfache Taste mit 4 Frames (Staaten): Up, Over, Down und Drücken. Erbt den Movieclip -Typ.
- Datum + Ermöglicht den Zugriff auf Informationen zu einem bestimmten Zeitpunkt.
- Array + Ermöglicht die lineare Speicherung von Daten.
- Xml + Ein XML -Objekt
- Xmlnode + Ein XML -Knoten
- Loadvars + Ein Lastvariablenobjekt ermöglicht das Speichern und Senden von HTTP -Post und HTTP -Variablen
- Klang
- Netstream
- NetConnection
- MOVIECLIPLOADER
- EventListener
ActionScript 3 Primitive (Prime) Datentypen[12]
- Boolesche - Das Boolean Datentyp hat nur zwei mögliche Werte: True und False oder 1 und 0. Alle anderen Werte sind gültig.
- int + Der int -Datentyp ist eine 32 -Bit -Ganzzahl zwischen -2.147.483.648 und 2.147.483.647.
- Null - Der Null -Datentyp enthält nur einen Wert, booleschen. Dies ist der Standardwert für den String -Datentyp und alle Klassen, die komplexe Datentypen, einschließlich der Objektklasse, definieren.
- Nummer + Der Zahlendatentyp kann Ganzzahlen, nicht signierte Ganzzahlen und Schwimmpunktzahlen darstellen. Der Zahlendatentyp verwendet das 64-Bit-doppelte Präzisionsformat, wie vom IEEE-Standard für binäre Gleitkomma-Arithmetik (IEEE+754) angegeben. Werte zwischen -9.007.199.254.740.992 (-253) auf 9.007.199.254.740.992 (2)53) kann aufbewahrt werden.
- Saite -Der String-Datentyp repräsentiert eine Sequenz von 16-Bit-Zeichen. Saiten werden nicht intern als Unicode -Zeichen gespeichert, wobei die verwendet werden UTF-16 Format. Frühere Versionen von Flash verwendeten das UTF-8-Format.
- uint + Der Datentyp der Uint (unsigned Ganzzahl) ist eine 32-Bit-Ganzzahl zwischen 0 und 4.294.967.295.
- Leere - Der Datentyp enthält nur einen Wert, undefiniert. In früheren Versionen von ActionScript war undefiniert der Standardwert für Instanzen der Objektklasse. In ActionScript 3.0 ist der Standardwert für Objektinstanzen boolean.
ActionScript 3 Einige komplexe Datentypen[12]
- Array + Enthält eine Liste von Daten. Obwohl ActionScript 3 eine stark typisierte Sprache ist, kann der Inhalt eines Arrays von jedem Typ sein und Werte müssen nach dem Abrufen auf ihren ursprünglichen Typ zurückgegeben werden. (Die Unterstützung für typisierte Arrays wurde kürzlich mit der Vektorklasse hinzugefügt.)
- Datum - Ein Datumsobjekt, das die digitale Darstellung von Datum/Uhrzeit enthält.
- Fehler - Ein generischer Fehler ohne Objekt, das die Berichterstattung über den Laufzeitfehler ermöglicht, wenn sie als Ausnahme ausgeworfen werden.
- Flash.Display: Bitmap -Ein nicht animiertes oder animiertes Bitmap-Display-Objekt.
- Flash.Display: MovieClip - Animationsfilm Clip Display -Objekt; Die Flash -Zeitleiste ist standardmäßig ein MovieClip.
- Flash.Display: Form -Ein nicht animiertes Vektorformobjekt.
- Flash.Display: SimpleButton - Ein einfacher interaktiver Tastentyp, der "Up", "Over" und "Down" mit einem willkürlichen Trefferbereich unterstützt.
- Flash.Display: Sprite + Ein Display -Objektbehälter mit einer Zeitleiste.
- Flash.Media:Video - Ein Video -Wiedergabelobjekt, das direkte (progressive Download) oder Streaming (RTMP) unterstützt. Ab Version 9.0.15.0 wird das Hochdefinitions-Videoformat H.264/MP4 neben Standard-Flash-Video (FLV) -Halt (FLV) auch unterstützt.
- Flash.Text: TextField - Ein dynamisches, optional interaktives Textfeldobjekt.
- Flash.utils: Bytearray - Enthält eine Reihe von Binär -Byte -Daten.
- Flash.utils: Wörterbuch - Wörterbücher sind eine Variante des Objekts, die Tasten eines beliebigen Datentyps enthalten kann (während Objekt immer Zeichenfolgen für seine Schlüssel verwendet).
- Funktion - Die Kernklasse für alle Flash -Methodendefinitionen.
- Objekt - Der Objektdatentyp wird von der Objektklasse definiert. Die Objektklasse dient als Basisklasse für alle Klassendefinitionen in ActionScript. Objekte in ihrer grundlegenden Form können als verwendet werden assoziative Arrays Dies enthalten Schlüsselwertpaare, bei denen Schlüssel keine Zeichenfolgen und Werte sind.
- Regexp - Ein reguläres Ausdrucksobjekt für Zeichenfolgen.
- Vektor - Eine Variante von Array, die beim Veröffentlichen für Flash Player 7 oder höher unterstützt wird. Vektoren sind typisierte, dichte Arrays (Werte müssen definiert oder booleschen) festgelegt werden, die während des Abrufens festgelegt werden können. Vektoren sind nicht nur mehr Typen als Arrays, sondern auch schneller.
- Xml -ein überarbeitetes XML-Objekt basierend auf dem E4X (Standard ECMA-357); Knoten und Attribute werden unterschiedlich zugegriffen als das Objekt von ActionScript 2.0 (eine Legacy -Klasse mit dem Namen XMLDOCUMEN wird für die Abwärtskompatibilität bereitgestellt).
- Xmlllist -Ein Array-basiertes Objekt für verschiedene Inhaltssuche in der TXT-Klasse.
Verwenden von Datentypen
Die grundlegende Syntax ist:
var Variablennamen: Variabletyp = Neu Variabletyp(Param1, Param2, ..., Param);
Um ein leeres Objekt zu machen:
var myObject: Objekt = Neu Objekt();
Oder auf informelle Weise:
var myObject = {};
Einige Typen werden automatisch eingerichtet:
var Mystring: Saite = "Hallo Wikipedia!"; // Dies würde die Variable automatisch als Zeichenfolge festlegen. var meine Nummer: Nummer = 5; // Dies würde dasselbe für eine Zahl tun. var myObject: Objekt = { Param1: "Hi!", Param2: 76 }; // Dies schafft ein Objekt mit zwei Variablen. // param1 ist eine Zeichenfolge mit den Daten von "Hi!", // und Param2 ist eine Zahl mit den Daten von 76. // Dies ist die Syntax zum automatischen Erstellen eines Arrays. var myarray: Array = [5, "Hallo!", { a: 5, b: 7 }]; // Es erstellt ein Array mit 3 Variablen. // Die erste (0) ist eine Zahl mit dem Wert von 5, // Das zweite (1) ist eine Zeichenfolge mit dem Wert von "Hallo!",. // und das dritte (2) ist ein Objekt mit {a: 5, b: 7}.
Im Gegensatz zu einigen objektorientierten Sprachen unterscheidet ActionScript keine Unterscheidung zwischen Primitive Typen und Hinweis Typen. In ActionsScript sind alle Variablen Referenztypen. Objekte, die zu den primitiven Datentypen gehören, zu denen Boolesche, Anzahl, Int, Uint und String gehören, sind jedoch unveränderlich.[13]
Wenn also eine Variable eines angeblich primitiven Typs, z. Eine Ganzzahl wird an eine Funktion übergeben und diese Variable innerhalb der Funktion ändert nicht die ursprüngliche Variable, da ein neues INT -Objekt erstellt wird, wenn es in der Funktion ist. Wenn eine Variable eines anderen (nicht primitiven) Datentyps, z. XML wird an eine Funktion übergeben und verändert diese Variable innerhalb der Funktion auch die ursprüngliche Variable, da kein neues XML -Objekt erstellt wird.
Einige Datentypen können Werte mit zugewiesen werden Literale:
var Gegenstand 1: Saite = "ABC"; var Punkt2: Boolesche = Stimmt; var Punkt3: Nummer = 12; var Item4: Array = ["a", "b", "c"]; var Punkt5: Objekt = { Name: "ActionScript", Ausführung: "3.0" }; var Punkt6: Xml = <Knoten> <Kind /> </Knoten>; // Beachten Sie, dass der primitive XML nicht zitiert wird
Eine Referenz in ActionScript ist ein Zeiger auf eine Instanz einer Klasse. Eine Referenz speichert die Speicheradresse eines Objekts - Operationen gegen Referenzen folgen dem Wert des Verweiss auf die Speicheradresse des Objekts und führen die Operation auf diesem Objekt durch. Alle Objekte in Actionscript werden über Referenzen zugegriffen, anstatt direkt zugegriffen zu werden.
var Gegenstand 1: Xml = Neu Xml("<node> <kind /> < /node>"); var Punkt2: Xml = Gegenstand 1; Punkt2.erstes Kind.Attribute.Wert = 13; // Item1 ist jetzt gleich Artikel2, da Artikel2 einfach darauf hinweist, auf welchen Punkt 1 zeigt. // beide sind jetzt: // <node> <child value = "13"/> </node>
Es können nur Verweise auf ein Objekt unter Verwendung des Schlüsselworts "Löschen" entfernt werden. Das Entfernen der tatsächlichen Objekte und Daten erfolgt vom Flash Player -Müllsammler, der nach vorhandenen Referenzen im Flash -Speicherplatz prüft. Wenn keiner gefunden wird (es wird keine andere Referenz auf das verwaiste Objekt vorgenommen), wird es aus dem Speicher entfernt. Aus diesem Grund erfordert die Speicherverwaltung in ActionScript eine sorgfältige Planung der Anwendungsentwicklung.
var Gegenstand 1: Xml = Neu Xml("<node> <kind /> < /node>"); löschen Gegenstand 1; // Wenn kein anderer Verweis auf Element1 irgendwo anders in der Anwendung vorhanden ist, // Es wird am nächsten Pass des Müllsammlers entfernt
Codeschutz
Wie die meisten Bytecode Dateiformate, Flash SWF Dateien können sein zerlegt in ihren Quellcode und ihr Vermögen (ähnlich wie Microsoft .net Dateien können dekompiliert werden). Einige Dekompilierer sind in der Lage, die ursprüngliche Quelldatei bis hin zu dem tatsächlichen Code, der während der Erstellung verwendet wurde, nahezu voll zu rekonstruieren (obwohl die Ergebnisse von Fall zu Fall variieren).[14][15][16]
Im Gegensatz zu den Dekompilern Actioncript Verdrehter wurden eingeführt, die Code in ein Formular verwandeln, das die Dekompilierausgabe unterteilt und gleichzeitig die Funktionalität und Struktur des Programms erhalten. Häufiger Hebrikatoren implementieren lexikalische Transformationen wie Umbenennung von Identifikatoren, Kontrollflussumwandlung und Datenabstraktionsumwandlung, die es den Dekompilern gemeinsam erschweren, Ausgangsleistung zu generieren, das für einen Menschen wahrscheinlich nützlich ist. Weniger robuste Verschleiftatoren setzen Fallen für Dekompiler ein. Solche verschleiertes Verschleierung veranlassen entweder die Dekompiler -Software, unerwartet zu stürzen oder unverständlichen Quellcode zu generieren.
Das Folgende ist ein Beispiel für den ActionScript 3.0 -Code, der durch ein Dekompilerprogramm vor und nach der Verschleierung generiert wird.[Originalforschung?]
Code vor Verschleierung:
Privatgelände Funktion Getneighräunen(i: int, j: int): Array { var a: Array = Neu Array(); zum (var k = 0; k < 8; k++) { var ni = i + int(NACHBOUR_MAP[k][1]); var NJ = j + int(NACHBOUR_MAP[k][1]); wenn (ni < 0 || ni > = xsize || NJ < 0 || NJ > = ysize) fortsetzen; a.drücken(Zelle(Zellen[ni][NJ])); } Rückkehr a; }
Code nach Verschleierung:
Privatgelände Funktion Getneighräunen(_ARG1: int, _ARG2: int): Array { var _Local3: Array = -(((((Boolesche - !Boolesche!) % ~ (nicht definiert))); var _Local4: *; var _Local5: *; var _Local6: *; _Local3 = Array(); _Local4 = 1; zum (; //ungelöst springen , _ARG2 < 8;_Local4++) { _Local5 = (_ARG1 + int(!Boolesche!)); _Local6 = (_ARG2 + int(!Boolesche!)); wenn (Stimmt) { _ARG1 = ((//ungelöst NextValue oder NextName << !Boolesche!) + !Boolesche!) << definiert); _ARG1 = (! (!Boolesche!) ^ !Boolesche!); (!Boolesche! Instanz !Boolesche!); var _Local1 = (((!Boolesche! wie !Boolesche!) + !Boolesche!) == Dies); wenn (! (!Booean! == !Boolesche!)) { -(((Stimmt << !Boolesche!)).drücken(Zelle(Zellen[_Local5][_Local6])); } } wenn (!Stimmt) { (_Local6 < 1): (_Local6 < 1); (_Local5 < 1); } } Rückkehr (_Local6); }
Verweise
- ^ RFC 4329 (Begrenzen Sie mit ECMascript kompatibel)
- ^ "Apples verlorenes Jahrzehnt, Hypercard und was nicht gewesen wäre, wenn Apple dann wie Apple war.". Zdnet.com. 17. April 2011. Abgerufen 4. Dezember, 2014.
- ^ "ActionScript 3 Sprachspezifikation". Archiviert von das Original am 27. März 2017. Abgerufen 12. November, 2016.
- ^ Brimelow, Lee (18. August 2008). "Sechs Gründe für die Verwendung von ActionScript 3.0". Adobe Systems Incorporated. Abgerufen 18. Juni, 2010.
- ^ Grossman, Gary; Huang, Emmy (27. Juni 2006). "ActionScript 3.0 Übersicht". Adobe Systems Incorporated. Abgerufen 18. Juni, 2010.
- ^ "Standard ECMA-262". ECMA-international.org. Abgerufen 22. April, 2013.
- ^ Waldemar Horwat, hrsg. (30. Juni 2003). "ECMascript 4 Netscape -Vorschlag". Netscape. Archiviert von das Original Am 11. Juli 2007. Abgerufen 11. April, 2019.
- ^ "Flash Player | Adobe Flash Player 11 | Übersicht". Adobe.com. 9. April 2013. Abgerufen 22. April, 2013.
- ^ "Adobe Labs - Adobe Flash Player 10.1". Labs.adobe.com. Archiviert Aus dem Original am 5. Januar 2010. Abgerufen 17. Dezember, 2009.
- ^ "Flash Player 11 und Air 3 -Versionshinweise für Adobe Labs" (PDF). Archiviert von das Original (PDF) Am 14. Juli 2011.
- ^ "Flash Player 11, Air 3 Release -Notizen". helpx.adobe.com. Abgerufen 7. Oktober, 2016.
- ^ a b "Datentypbeschreibungen + Flash -CS3 -Dokumentation". Archiviert von das Original am 2. November 2007. Abgerufen 13. Juli, 2007.
- ^ "Flex 3 - Funktionsparameter". Livedocs.adobe.com. Archiviert von das Original am 12. Februar 2009. Abgerufen 17. Dezember, 2009.
- ^ "Drittanbieter Bewertung eines anderen Dekompilers". Flashmagazine.com. 21. Oktober 2007. archiviert von das Original am 20. Juni 2017. Abgerufen 22. April, 2013.
- ^ "Kunde Kommentare zu einem Flash -Dekompiler". Topshareware.com. Abgerufen 22. April, 2013.
- ^ Kundenkommentare zu einem anderen Flash -Produkt Archiviert 18. August 2006 bei der Wayback -Maschine
Externe Links
- ActionScript Technology Center
- ActionScript 2.0 Sprachreferenz
- ActionScript 3.0 Sprache und Komponentenreferenz
- Flex 3 Livedocs: Programmieraktionen 3.0
- Adobe - Flash Developer Center
- Adobe Flex SDK
- Warren, Tom (25. Juli 2017). "Adobe wird den Flash im Jahr 2020 endlich töten". Der Verge. Archiviert Aus dem Original am 25. Juli 2017. Abgerufen 16. Dezember, 2020.