Klassendefinitionen

Für Klassendefinitionen in ActionScript 3.0 wird eine ähnliche Syntax wie für Klassendefinitionen in ActionScript 2.0 verwendet. Die richtige Syntax einer Klassendefinition umfasst zunächst das Schlüsselwort class, gefolgt vom Klassennamen. Dem Klassennamen folgt der in geschweifte Klammern ({}) eingeschlossene Klassenrumpf. Im folgenden Beispielcode wird eine neue Klasse namens „Shape" erstellt, die eine Variable namens visible enthält:

public class Shape
{
    var visible:Boolean = true;
}

Eine wichtige Syntaxänderung betrifft Klassendefinitionen, die sich in einem Paket befinden. In ActionScript 2.0 galt: wenn sich eine Klasse in einem Paket befindet, muss der Paketnamen in der Klassendeklaration enthalten sein. In ActionScript 3.0, mit dem die package-Anweisung eingeführt wird, muss sich der Paketnamen nicht mehr in der Klassen-, sondern in der Paketdeklaration befinden. Die folgenden Klassendeklarationen zeigen, wie die BitmapData-Klasse, die Teil des flash.display-Paket ist, in ActionScript 2.0 und ActionScript 3.0 definiert wird:

// ActionScript 2.0
class flash.display.BitmapData {}

// ActionScript 3.0
package flash.display
{
    public class BitmapData {}
}

Unterthemen

Klassenattribute
Klassenrumpf

Klassenattribute

Mit ActionScript 3.0 können Sie Klassendefinitionen mit einem der folgenden vier Attribute bearbeiten:

Attribut

Definition

dynamic

Ermöglicht zur Laufzeit das Hinzufügen von Eigenschaften zu Instanzen.

final

Kann nicht von einer anderen Klasse erweitert werden.

internal (Standard)

Sichtbar für Verweise innerhalb des aktuellen Pakets.

public

Sichtbar für alle Verweise.

Bei jedem dieser Attribute (außer bei internal) muss das Attribut explizit eingeschlossen sein, um das zugewiesene Verhalten zu erhalten. Wenn Sie beim Definieren einer Klasse das Attribut dynamic weglassen, können Sie der Klasseninstanz keine Eigenschaften zur Laufzeit hinzufügen. Ein Attribut wird explizit zugewiesen, indem Sie es am Anfang der Klassendefinition platzieren. Dies wird im folgenden Code gezeigt:

dynamic class Shape {}

Beachten Sie, dass die Liste kein Attribut namens abstract enthält, denn abstrakte Klassen werden in ActionScript 3.0 nicht unterstützt. Außerdem enthält die Liste keine Attribute mit den Bezeichnungen private und protected. Dieser Attribute sind nur innerhalb einer Klassendefinition von Bedeutung und können nicht auf Klassen selbst angewendet werden. Soll eine Klasse auch außerhalb eines Pakets öffentlich sichtbar sein, platzieren Sie die Klasse in einem Paket und weisen ihr dann das Attribut internal zu. Alternativ können Sie die beiden Attribute internal und public weglassen. In diesem Fall fügt der Compiler automatisch das Attribut internal hinzu. Wenn eine Klasse außerhalb der Quelldatei nicht sichtbar sein soll, in der sie definiert ist, platzieren Sie die Klasse am Ende der Quelldatei unter der schließenden geschweiften Klammer der Paketdefinition.

Klassenrumpf

Der in geschweiften Klammern eingeschlossene Klassenrumpf dient zum Definieren der Variablen, Konstanten und Methoden Ihrer Klasse. Im folgenden Beispiel ist die Deklaration der Accessibility-Klasse in der Adobe Flash Player-API dargestellt:

public final class Accessibility
{
    public static function get active():Boolean;
    public static function updateProperties():void;
}

Sie können auch einen Namespace in einem Klassenrumpf definieren. Im folgenden Beispielcode wird gezeigt, wie ein Namespace in einem Klassenrumpf definiert und als Attribut für eine Methode in dieser Klasse verwendet werden kann:

public class SampleClass
{
    public namespace sampleNamespace;
    sampleNamespace function doSomething():void;
}

Mit ActionScript 3.0 können Sie nicht nur Definitionen, sondern auch Anweisungen in einen Klassenrumpf aufnehmen. Anweisungen, die sich in einem Klassenrumpf, aber außerhalb einer Methodendefinition befinden, werden nur ein Mal ausgeführt - wenn die Klassendefinition das erste Mal auftritt und das zugewiesene Klassenobjekt erstellt wird. Der folgende Beispielcode enthält einen Aufruf der externen Funktion hello() und eine trace-Anweisung, die eine Bestätigungsmeldung ausgibt, wenn die Klasse definiert ist:

function hello():String
{
    trace("hola");
}
class SampleClass
{
    hello();
    trace("class created");
}
// Ausgabe, wenn die Klasse erstellt ist
hola
class created

Im Gegensatz zu früheren Versionen von ActionScript ist es in ActionScript 3.0 zulässig, eine statische Eigenschaft und eine Instanzeigenschaft mit dem gleichen Namen im gleichen Klassenrumpf zu definieren. Im folgenden Beispielcode wird eine statische Variable namens message und eine Instanzvariable mit dem gleichen Namen deklariert:

class StaticTest
{
    static var message:String = "static variable";
    var message:String = "instance variable";
}
// in Ihrem Skript
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // Ausgabe: statische Variable
trace(myST.message);       // Ausgabe: Instanzvariable

Flash CS3

 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000061.html