Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > ActionScript-Sprache und -Syntax > Datentypen > Dynamische Klassen | |||
Eine dynamische Klasse definiert ein Objekt, das zur Laufzeit durch das Hinzufügen oder Ändern von Eigenschaften und Methoden verändert werden kann. Eine nicht dynamische Klasse, wie z. B. die String-Klasse, wird als versiegelt bezeichnet. Einer versiegelten Klasse können keine Eigenschaften oder Methoden zur Laufzeit hinzugefügt werden.
Dynamische Klassen werden mit dem Attribut dynamic beim Deklarieren einer Klasse erstellt. Im folgenden Code wird eine dynamische Klasse namens Protean erstellt:
dynamic class Protean
{
private var privateGreeting:String = "hi";
public var publicGreeting:String = "hello";
function Protean()
{
trace("Protean instance created");
}
}
Wenn Sie später eine Instanz der Protean-Klasse instanziieren, können Sie dieser Instanz außerhalb der Klassendefinition Eigenschaften oder Methoden hinzufügen. Im folgenden Code wird beispielsweise eine Instanz der Protean-Klasse erstellt und der Instanz eine Eigenschaft namens aString sowie eine Eigenschaft namens aNumber hinzugefügt:
var myProtean:Protean = new Protean(); myProtean.aString = "testing"; myProtean.aNumber = 3; trace(myProtean.aString, myProtean.aNumber); // testing 3
Eigenschaften, die Sie der Instanz eine dynamische Klasse hinzufügen, sind Laufzeit-Entitäten, daher wird die Typüberprüfung zur Laufzeit durchgeführt. Einer auf diese Weise hinzugefügten Eigenschaft können Sie keine Typanmerkung hinzufügen.
Sie können der myProtean-Instanz auch eine Methode hinzufügen, indem Sie eine Funktion definieren und diese Funktion an eine Eigenschaft der myProtean-Instanz anhängen. Im folgenden Code wird die trace-Anweisung in eine Methode namens traceProtean() verschoben:
var myProtean:Protean = new Protean();
myProtean.aString = "testing";
myProtean.aNumber = 3;
myProtean.traceProtean = function ()
{
trace(this.aString, this.aNumber);
};
myProtean.traceProtean(); // testing 3
Auf diese Art erstellte Methoden haben jedoch keinen Zugriff auf private Eigenschaften oder Methoden der Protean-Klasse. Darüber hinaus müssen sogar Verweise auf öffentliche Eigenschaften oder Methoden der Protean-Klasse entweder durch das Schlüsselwort this oder durch den Klassennamen qualifiziert werden. Das folgende Beispiel zeigt, wie die traceProtean()-Methode versucht, auf die privaten und öffentlichen Variablen der Protean-Klasse zuzugreifen.
myProtean.traceProtean = function ()
{
trace(myProtean.privateGreeting); // undefined
trace(myProtean.publicGreeting); // hello
};
myProtean.traceProtean();
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/00000046.html