Syntax
Die Syntax einer Sprache definiert einen Regelsatz, der beim Schreiben von ausführbarem Code eingehalten werden muss.
Groß- und KleinschreibungActionScript 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;
PunktsyntaxDer 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ägstrichsyntaxDie 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.
LiteraleEin 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};
SemikolaMit 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 KlammernSie 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
KommentareActionScript 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örterReservierte 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
|
|
|
KonstantenActionScript 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";
...
}
}
|
|