Pakiet | Najwyższy poziom |
Klasa | public dynamic class Class |
Dziedziczenie | Class Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
powoduje utworzenie instancji klasy.
Niektóre metody, jak np. flash.net.getClassByAlias()
zwracają obiekt typu Class. Inne metody, jak np. flash.net.registerClassAlias()
mogą zawierać parametr typu Class.
Nazwa klasy stanowi odwołanie do obiektu Class, jak pokazano w poniższym przykładzie:
class Foo { }
Za pomocą instrukcji class Foo{}
, która definiuje klasę, tworzony jest obiekt Class Foo. Ponadto, wykorzystując funkcję new Foo()
, można utworzyć nową instancję klasy Foo, a wynik będzie typu Foo.
Aby zadeklarować określone klasy, należy użyć instrukcji class
. Obiekty Class wykorzystuje się w przypadku technik zaawansowanych, jak np. przypisywanie klas do istniejących już obiektów instancji w czasie wykonywania, jak pokazano poniżej w sekcji „Przykłady”.
Statyczne właściwości oraz metody klasy zawarte są w obiekcie Class klasy. Klasa deklaruje prototyp
.
W zasadzie nie ma potrzeby deklarowania lub ręcznego tworzenia zmiennych typu Class. Jednakże, w poniższym kodzie, klasie została przypisana publiczna właściwość Class, circleClass
. Z tego względu do tej właściwości Class można odwoływać się jak do głównej klasy Library:
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); } }
Za pomocą kolejnego pliku SWF można załadować wynikowy plik Library.swf, a następnie utworzyć instancję dla obiektów typu Circle. Poniższy przykład ilustruje jeden ze sposobów uzyskania dostępu do zasobów podrzędnego pliku SWF. (Do innych sposobów należą: użycie metody flash.utils.getDefnitionByName()
lub import definicji pośrednich dla podrzędnego pliku SWF).
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); } } }
W narzędziu ActionScript 3.0 dla zewnętrznych zasobów (jak np. zdjęcia, dźwięk czy czcionki), które są umieszczane w plikach SWF, można tworzyć osadzone klasy. We wcześniejszych wersjach narzędzia ActionScript zasoby te można było za pomocą identyfikatora powiązania kojarzyć z metodą MovieClip.attachMovie()
. W narzędziu ActionScript 3.0 każdy osadzony zasób jest reprezentowany przez unikalną klasę zasobów osadzonych. Z tego względu możliwe jest użycie operatora new
do tworzenia instancji klasy skojarzonej z zasobem i wywołania dla tego zasobu metod oraz właściwości.
Powiązane elementy interfejsu API
- Należy zadeklarować dwie klasy jako
ClassA
iClassB
. - Należy zadeklarować zmienną typu Class o nazwie
classToConstruct
i jedną typu Boolean (chooseClassA
), która w tym przypadku jest ustawiona na wartośćtrue
. W kodzie można również zastosować niestandardowe wyrażenie testowe celem ustawienia wartości tej zmiennej.
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, 12:06 PM Z