24 Ausblick auf ActionScript 3
Was gibt es Neues in ActionScripts dritter Generation?Sie werden lernen:
- Flash-Gerüchte für die Zukunft
- ECMAScript- plus XML-kompatibel programmieren
- Nicht mehr wegzudenken: Reguläre Ausdrücke
- Erste Details der neuen Version
Objektivität: Alles hat zwei Seiten. Aber erst wenn man erkennt, dass es drei sind, erfasst man die Sache. – Heimito von Doderer
Flash 8 wurde kurz nach der Veröffentlichung als »Zwischenschritt« bezeichnet. Hätte ja alles zu schön gepasst: Versionsnummer 8 für Flash und andere Studio-Produkte (unter anderem Dreamweaver), die offizielle Bekanntgabe erfolgte am 8.8.2005, um 8 Uhr früh (Ortszeit San Francisco, dem Hauptsitz von Macromedia). Doch die Neuerungen hielten sich eher in Grenzen, vor allem aus Entwicklersicht. Trotzdem war die Freude bald darauf recht groß, denn kurze Zeit später stellte Macromedia eine Vorabversion (Alpha) des Flash Player 8.5 zur Verfügung. Diese bietet eine Reihe von Neuerungen, insbesondere eine stark verbesserte Performance. Dafür ist die AVM2 zuständig. Das steht für ActionScript Virtual Machine 2. Die AVM1 ist die alte virtuelle Maschine, die für die Ausführung von altem ActionScript-Code zuständig ist. Wie bereits erwähnt, wird ActionScript-2-Code bei der Veröffentlichung eines Flash-Films in ActionScript 1 umgewandelt, denn die AVM1 »kann« nur ActionScript 1. Mit der AVM2 ändert sich das: Der Flash-Player wird größer (da AVM1 und AVM2 mitgeliefert werden), dafür unterstützt die AVM2 aber nur neuen ActionScript-Code. Das ermöglicht spezifische Optimierungen, so dass laut Angaben von Macromedia eine Steigerung der Geschwindigkeit um das Zehnfache möglich ist.
Was aber heißt »neuer ActionScript-Code«? Die AVM2 unterstützt die nächste Generation von ActionScript, nämlich ActionScript 3.0. Die neue Version bietet zahlreiche Neuerungen, von denen einige ausgewählte hier kurz vorgestellt werden. Gegen eine ausführlichere Behandlung sprechen freilich mehrere Gründe:
- ActionScript 3 ist noch im Alpha-Stadium, genau wie der Flash-Player 8.5. Es ist also gut möglich, dass sich hier noch einiges ändert, unter Umständen sogar noch bis zum Erscheinen dieses Buches.
- Flash 8 unterstützt noch kein ActionScript 3. Sie müssen also Code »von Hand« erstellen oder verwenden den Flex Builder 2 als Entwicklungsumgebung – die ebenfalls noch in der Alpha-Phase ist.
- Aufgrund des Alpha-Stadiums der diversen beteiligten Produkte kann kaum ein Endanwender Filme verwenden, die ActionScript 3 einsetzen.
Um ActionScript 3 zu verwenden, benötigen Sie zunächst den Flash Player 8.5, den es bei Redaktionsschluss noch nicht als Standalone-Produkt, sondern nur als Teil des Flex Builder 2 gab. Die (vorläufige) Homepage des Produkts ist http://labs.macromedia.com/technologies/flexbuilder2/, und unter http://www.macromedia.com/go/labs_flex2_downloads gibt es die Alpha-Version zum Download.
Abbildung 24.1 Den Flex Builder 2 gibt es bereits in der Alpha-Version.
24.1 E4X
Eine der praktischsten Neuerungen von ActionScript 3 ist die Unterstützung von E4X. Dieses Kürzel steht für ECMAScript for XML. Wie Sie wissen, ist ActionScript kompatibel zu ECMAScript (ECMA-262), und E4X ist ebenfalls ein ECMA-Standard. Unter http://www.ecma-international.org/publications/standards/Ecma-357.htm erfahren Sie mehr über ECMA-357, dem zu Grunde liegenden Standard. Der Hauptvorteil von E4X ist, dass XML Teil der Sprache wird. XML ist also nicht mehr irgendeine Klasse, die mehr oder minder mühsam verwendet werden muss (vergleiche Kapitel »XML« auf der Buch-CD-ROM), sondern in die Sprache als eigener Datentyp integriert. So ist es möglich, direkt XML zu verwenden. Der folgende Codeausschnitt verwendet das bereits bekannte XML-Beispiel:
var warenkorb:XML = <bestellungen> <posten> <marke>Space Clothing</marke> <artikel>Snowtech-Jacke</artikel> <farbe>rot</farbe> <groesse>M</groesse> <anzahl>1</anzahl> <datum>9.11.2005 9:42</datum> </posten> <posten> <marke>Space Clothing</marke> <artikel>Snowtech-Jacke</artikel> <farbe>rot</farbe> <groesse>XL</groesse> <anzahl>2</anzahl> <datum>9.11.2005 9:42</datum> </posten> </bestellungen>
Dann ist es möglich, direkt auf Elemente zuzugreifen, ohne mühsam DOM-Methoden verwenden zu müssen. Dieser simple Ansatz wird bereits von anderen Technologien unterstützt: »SimpleXML« gibt es sowohl unter Perl als auch unter PHP, um einfach auf XML-Daten zuzugreifen.
Das folgende Kommando gibt alle bestellten Größen aus:
trace(warenkorb.posten.groesse);
Und so sieht die Ausgabe aus:
<groesse>M</groesse> <groesse>XL</groesse>
Per Index in eckigen Klammern (also wie bei Arrays) ist es ebenfalls möglich, auf einzelne Werte zuzugreifen. Die Zählung beginnt wie üblich bei 0:
trace(warenkorb.posten[0].groesse);
Abkürzungen |
Wenn die Namen der Knoten eindeutig sind, gibt es noch eine Abkürzung, so dass Sie sich die Angabe des kompletten Pfades sparen können. Dazu setzen Sie zwei Punkte ein: trace(warenkorb..groesse[1]); Das würde XL ausgeben. |
Natürlich wird M ausgegeben, denn das ist die Größe im ersten Posten in der XML-Datei. Wenn Sie also auf ein spezifisches Element zugreifen, erhalten Sie dessen Wert; bei unspezifischem Zugriff (wie im vorherigen Beispiel) wird eine Liste zurückgeliefert.
Neu in ActionScript 3 ist das for-each-Statement, eine Abwandlung von for ... in. Damit können Sie unter anderem über XML-Knoten iterieren:
for each (var knoten:XML in warenkorb.posten.groesse) { trace(knoten); }
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.