Paket | Oberste Ebene |
Klasse | public dynamic class Class |
Vererbung | Class Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
erstellt worden ist.
Einige Methoden, wie etwa flash.net.getClassByAlias()
geben ein Objekt vom Class-Typ zurück. Andere Methoden haben einen Parameter vom Class-Typ, z. B. flash.net.registerClassAlias()
.
Der Name der Klasse ist der Verweis auf das Class-Objekt, wie das folgende Beispiel veranschaulicht:
class Foo { }
Die Anweisung class Foo{}
ist die Klassendefinition, die dass Class-Objekt Foo erstellt. Außerdem wird die Anwendung new Foo()
eine neue Instanz der Foo-Klasse erstellen, und das Ergebnis wird vom Typ Foo sein.
Verwenden Sie die Anwendung class
, um Ihre Klasse zu deklarieren. Class-Objekte sind nützlich für fortgeschrittene Techniken wie das Zuweisen von Klassen zu einem vorhandenen Instanzobjekt während der Laufzeit (vgl. den Abschnitt „Beispiele“ weiter unten).
Statische Eigenschaften und Methoden einer Klasse befinden sich im Class-Objekt einer Klasse. „Class“ selbst deklariert prototype
.
Im Allgemeinen müssen Sie Variablen vom Typ Class nicht manuell deklarieren. Im nachfolgenden Code jedoch wird eine Klasse als öffentliche Class-Eigenschaft circleClass
zugewiesen, und Sie können auf diese Class-Eigenschaft als eine Eigenschaft der Hauptklasse Library verweisen.
package { import flash.display.Sprite; public class Library extends Sprite { public var circleClass:Class = Circle; public function Library() { } } } import flash.display.Shape; class Circle extends Shape { public function Circle(color:uint = 0xFFCC00, radius:Number = 10) { graphics.beginFill(color); graphics.drawCircle(radius, radius, radius); } }
Eine andere SWF-Datei kann die resultierende Datei „Library.swf“ laden und dann Objekte vom Typ Circle instanziieren. Das folgende Beispiel zeigt eine Möglichkeit, auf die Bestände einer untergeordneten SWF-Datei zuzugreifen. (Andere mögliche Verfahren sind die Verwendung von flash.utils.getDefnitionByName()
oder das Importieren von Teildefinitionen aus der untergeordneten SWF-Datei.)
package { import flash.display.Sprite; import flash.display.Shape; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class LibaryLoader extends Sprite { public function LibaryLoader() { var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Library.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); } private function loaded(event:Event):void { var library:Object = event.target.content; var circle:Shape = new library.circleClass(); addChild(circle); } } }
In ActionScript 3.0 können Sie für externe Bestände (wie Grafiken, Sounds oder Schriften) eingebettete Klassen erstellen, die in SWF-Dateien kompiliert werden. In früheren ActionScript-Versionen haben Sie diese Bestände verknüpft, indem Sie in der Methode MovieClip.attachMovie()
eine Verknüpfungs-ID verwendet haben. In ActionScript 3.0 wird jeder eingebettete Bestand durch eine einmalige eingebettete Bestandklasse repräsentiert. Daher können Sie die mit dem Bestand verbundene Klasse mithilfe des Operators new
instanziieren und für diesen Bestandsartikel Methoden und Eigenschaft aufrufen.
Verwandte API-Elemente
- Deklarieren Sie zwei Klassen:
ClassA
undClassB
. - Deklarieren Sie eine Variablen vom Typ Class mit dem Namen
classToConstruct
und eine vom Typ BooleanchooseClassA
, die in diesem Fall auftrue
gesetzt ist. Sie können den Wert dieser Variablen jedoch auch mit einen benutzerdefinierten Test-Ausdruck festlegen.
package { import flash.display.Sprite; public class ClassExample extends Sprite { public function ClassExample() { var classToConstruct:Class; var classInstance:Object; classToConstruct = ClassA; classInstance = new classToConstruct(); trace(classInstance); // [object ClassA] classToConstruct = ClassB; classInstance = new classToConstruct(); trace(classInstance); // [object ClassB] } } } class ClassA { } class ClassB { }
Tue Jun 12 2018, 10:04 AM Z