Syntax

Die Syntax einer Sprache definiert einen Regelsatz, der beim Schreiben von ausführbarem Code eingehalten werden muss.

Groß- und Kleinschreibung

ActionScript 3.0 unterscheidet zwischen Groß- und Kleinschreibung. Bezeichner, die sich in der Groß-/Kleinschreibung unterscheiden, werden als unterschiedliche Bezeichner angesehen. Im folgenden Code werden beispielsweise zwei verschiedene Variable erstellt:

var num1:int; 
var Num1:int;

Punktsyntax

Der Punktoperator (.) ermöglicht den Zugriff auf die Eigenschaften und Methoden eines Objekts. Mit der Punktsyntax können Sie mit einem Instanznamen, gefolgt vom Punktoperator und dem Namen der Methode oder Eigenschaft, auf eine Eigenschaft der Klasse oder Methode verweisen. Betrachten Sie die folgende Klassendefinition:

class DotExample 
{ 
    public var prop1:String; 
    public function method1():void {} 
}

Mit der Punktsyntax können Sie mit dem Instanznamen auf die prop1-Eigenschaft und die method1()-Methode zugreifen. Der Instanzname wird im folgenden Code erstellt:

var myDotEx:DotExample = new DotExample(); 
myDotEx.prop1 = "hello"; 
myDotEx.method1();

Sie können die Punktsyntax beim Definieren von Paketen verwenden. Sie können den Punktoperator für Verweise auf verschachtelte Pakete verwenden. Beispielsweise befindet sich die EventDispatcher-Klasse in einem Paket namens „events“, das wiederum in einem Paket namens „flash“ verschachtelt ist. Der Verweis auf das events-Paket erfolgt mit dem folgenden Ausdruck:

flash.events

Der Verweis auf die EventDispatcher-Klasse erfolgt mithilfe dieses Ausdrucks:

flash.events.EventDispatcher

Schrägstrichsyntax

Die Schrägstrichsyntax wird in ActionScript 3.0 nicht unterstützt. Sie wurde in früheren Versionen von ActionScript verwendet, um den Pfad eines Movieclips oder einer Variablen anzugeben.

Literale

Ein Literal ist ein Wert, der direkt im Code angezeigt wird. Bei den folgenden Beispielen handelt es sich um Literale:

17 
"hello" 
-3 
9.4 
null 
undefined 
true 
false

Literale können auch zu zusammengesetzten Literalen zusammengefasst werden. Array-Literale werden in eckige Klammern ([]) eingeschlossen. Zum Trennen mehrerer Array-Elemente wird ein Komma verwendet.

Ein Array-Literal kann zum Initialisieren eines Arrays verwendet werden. Die folgenden Beispiele zeigen zwei Arrays, die mit Array-Literalen initialisiert werden. Mit der new-Anweisung können Sie das zusammengesetzte Literal als Parameter an den Konstruktor der Array-Klasse übergeben. Es ist jedoch auch möglich, Literalwerte beim Erstellen von Instanzen der ActionScript-Hauptklassen (Object, Array, String, Number, int, uint, XML, XMLList und Boolean) direkt zuzuweisen.

// Use new statement. 
var myStrings:Array = new Array(["alpha", "beta", "gamma"]); 
var myNums:Array = new Array([1,2,3,5,8]); 
 
// Assign literal directly. 
var myStrings:Array = ["alpha", "beta", "gamma"]; 
var myNums:Array = [1,2,3,5,8];

Literale können auch zum Initialisieren generischer Objekte verwendet werden. Ein generisches Objekt ist eine Instanz der Object-Klasse. Objektliterale werden in geschweifte Klammern ({}) eingeschlossen. Zum Trennen mehrerer Objekteigenschaften wird ein Komma verwendet. Jede Eigenschaft wird mit einem Doppelpunkt (:) deklariert, der den Namen der Eigenschaft von ihrem Wert trennt.

Ein generisches Objekt erstellen Sie mit der Anweisung new und übergeben das Objekt-Literal als Parameter an den Konstruktor der Object-Klasse. Es ist jedoch auch möglich, das Objekt-Literal der deklarierten Instanz direkt zuzuweisen. Im folgenden Beispiel werden zwei alternative Methoden veranschaulicht, um ein neues generisches Objekt zu erstellen und das Objekt mit drei Eigenschaften (propA, propB und propC) und den Werten 1, 2 und 3 zu initialisieren:

// Use new statement and add properties. 
var myObject:Object = new Object(); 
myObject.propA = 1; 
myObject.propB = 2; 
myObject.propC = 3; 
 
// Assign literal directly. 
var myObject:Object = {propA:1, propB:2, propC:3};

Semikola

Mit dem Semikolon (;) beenden Sie eine Anweisung. Wenn Sie das Semikolon weglassen, geht der Compiler davon aus, dass jede Codezeile eine einzelne Anweisung darstellt. Viele Programmierer haben sich angewöhnt, das Ende einer Anweisung mit einem Semikolon zu kennzeichnen. Ihr Code wird leichter lesbar, wenn Sie zum Beenden Ihrer Anweisungen konsistent Semikola verwenden.

Durch die Verwendung von Semikola können Sie zwar mehrere Anweisungen in eine Codezeile platzieren, jedoch wirkt sich dies meist negativ auf die Lesbarkeit des Codes aus.

Runde Klammern

Sie können runde Klammern (()) in ActionScript 3.0 auf drei Arten verwenden. Zum einen können Sie mithilfe von runden Klammern die Reihenfolge von Operationen in einer Anweisung ändern. Operationen, die zwischen runden Klammern gruppiert sind, werden immer zuerst ausgeführt. Runde Klammern können beispielsweise verwendet werden, um die Reihenfolge der Operationen im folgenden Code zu ändern:

trace(2 + 3 * 4); // 14 
trace((2 + 3) * 4); // 20

Dann können Sie mit runden Klammern und dem Kommaoperator (,) eine Reihe von Ausdrücken auswerten und das Ergebnis des endgültigen Ausdrucks zurückzugeben. Diese Anwendung wird im folgenden Beispiel gezeigt:

var a:int = 2; 
var b:int = 3; 
trace((a++, b++, a+b)); // 7

Schließlich können Sie mit runden Klammern einen oder mehrere Parameter an Funktionen oder Methoden übergeben. Diese Anwendung wird im folgenden Code vorgestellt, in dem ein Stringwert an die trace()-Funktion übergeben wird:

trace("hello"); // hello

Kommentare

ActionScript 3.0-Code unterstützt zwei Arten von Kommentaren: einzeilige und mehrzeilige Kommentare. Die Kommentarmechanismen ähneln denen in C++ und Java. Der Compiler ignoriert Text, der als Kommentar gekennzeichnet ist.

Einzeilige Kommentare beginnen mit zwei Schrägstrichen (//) und werden dann bis zum Ende der Zeile fortgeführt. Der folgende Code enthält einen einzeiligen Kommentar:

var someNumber:Number = 3; // a single line comment

Mehrzeilige Kommentare beginnen mit einem Schrägstrich und einem Sternchen (/*) und enden mit einem Sternchen und einem Schrägstrich (*/).

/* This is multiline comment that can span 
more than one line of code. */

Schlüsselwörter und reservierte Wörter

Reservierte Wörter können im Code nicht als Bezeichner verwendet werden, da sie für die Verwendung durch ActionScript reserviert sind. Reservierte Wörter umfassen lexikalische Schlüsselwörter, die vom Compiler aus dem Namespace des Programms entfernt werden. Wenn Sie ein lexikalisches Schlüsselwort als Bezeichner verwenden, meldet der Compiler einen Fehler. In der folgenden Tabelle sind die lexikalischen Schlüsselwörter in ActionScript 3.0 aufgeführt:

as

break

case

catch

class

const

continue

default

delete

do

else

extends

false

finally

for

function

if

implements

import

in

instanceof

interface

internal

is

native

new

null

package

private

protected

public

return

super

switch

this

throw

to

true

try

typeof

use

var

void

while

with

     

Es gibt noch eine kleine Gruppe von Schlüsselwörtern, die so genannten syntaktischen Schlüsselwörter, die als Bezeichner verwendet werden können, in bestimmten Kontexten jedoch eine spezielle Bedeutung haben. In der folgenden Tabelle sind die syntaktischen Schlüsselwörter von ActionScript 3.0 aufgeführt:

each

get

set

namespace

include

dynamic

final

native

override

static

   

Darüber hinaus gibt es verschiedene Bezeichner, die manchmal als für zukünftige Verwendung reservierte Wörter bezeichnet werden. Diese Bezeichner sind zwar nicht durch ActionScript 3.0 reserviert, einige dieser Wörter können jedoch von Software, die ActionScript 3.0 integriert, als Schlüsselwörter behandelt werden. Zahlreiche dieser Bezeichnung können problemlos in Ihrem Code verwendet werden, Adobe rät jedoch von deren Verwendung ab, da sie in einer der nachfolgenden Versionen der Programmiersprache evtl. als Schlüsselwörter genutzt werden könnten.

abstract

boolean

byte

cast

char

debugger

double

enum

export

float

goto

intrinsic

long

prototype

short

synchronized

throws

to

transient

type

virtual

volatile

   

Konstanten

ActionScript 3.0 unterstützt die const-Anweisung, mit der Sie Konstanten erstellen können. Konstante sind Eigenschaften mit einem festen Wert, der nicht geändert werden kann. Einer Konstanten wird nur einmal ein Wert zugewiesen, und die Zuweisung muss in unmittelbarer Nähe zur Deklaration der Konstanten erfolgen. Wenn Sie eine Konstante beispielsweise als Mitglied einer Klasse deklarieren, können Sie der Konstanten einen Wert nur als Teil der Deklaration oder innerhalb des Klassenkonstruktors zuweisen.

Im folgenden Code werden zwei Konstanten deklariert. Der ersten Konstante (MINIMUM) wird als Teil der Deklarationsanweisung ein Wert zugewiesen. Der zweiten Konstante (MAXIMUM) wird im Konstruktor ein Wert zugewiesen. Beachten Sie, dass dieses Beispiel nur im Standardmodus kompiliert wird. Im strikten Modus kann der Wert einer Konstanten nur bei der Initialisierung zugewiesen werden.

class A 
{ 
    public const MINIMUM:int = 0; 
    public const MAXIMUM:int; 
 
    public function A() 
    { 
        MAXIMUM = 10; 
    } 
} 
 
var a:A = new A(); 
trace(a.MINIMUM); // 0 
trace(a.MAXIMUM); // 10

Der Versuch, einer Konstanten mit einem anderen Verfahren einen Ursprungswert zuzuweisen, führt zu einer Fehlermeldung. Wenn Sie beispielsweise versuchen, den Ursprungswert von MAXIMUM außerhalb der Klasse zuzuweisen, tritt ein Laufzeitfehler auf.

class A 
{ 
public const MINIMUM:int = 0; 
public const MAXIMUM:int; 
} 
 
var a:A = new A(); 
a["MAXIMUM"] = 10; // run-time error

ActionScript 3.0 definiert eine Vielzahl von Konstanten. Üblicherweise werden Konstanten in ActionScript in Großbuchstaben geschrieben, und einzelne Wörter werden durch einen Unterstrich (_) voneinander getrennt. Die MouseEvent-Klassendefinition verwendet beispielsweise diese Namenskonvention für ihre Konstanten. Dabei steht jede Konstante für ein Ereignis, das einer Mauseingabe zugeordnet ist:

package flash.events 
{ 
    public class MouseEvent extends Event 
    { 
    public static const CLICK:String = "click"; 
    public static const DOUBLE_CLICK:String = "doubleClick"; 
    public static const MOUSE_DOWN:String = "mouseDown"; 
    public static const MOUSE_MOVE:String = "mouseMove"; 
    ... 
    } 
}