Paket | Översta nivån |
Klass | public dynamic class Class |
Arv | Class Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
.
Vissa metoder, till exempel flash.net.getClassByAlias()
, returnerar ett objekt av typen Class. Andra metoder kan ha en parameter av typen Class, till exempel flash.net.registerClassAlias()
.
Klassnamnet är referensen till Class-objektet som visas i exemplet:
class Foo { }
Programsatsen class Foo{}
är den klassdefinition som skapar Class-objektet Foo. Programsatsen new Foo()
skapar även en ny instans av klassen Foo och resultatet blir av typen Foo.
Använd programsatsen class
när du deklarerar klasser. Class-objekt är användbara i avancerad teknik, till exempel när klasser tilldelas till ett befintligt instansobjekt vid körning, vilket visas under "Exempel" nedan.
Alla statiska egenskaper och metoder i en klass finns i klassens Class-objekt. Class deklarerar prototype
.
Oftast behöver du inte deklarera eller skapa variabler av typen Class manuellt. I följande kod tilldelas dock en klass som en publik Class-egenskap, circleClass
, och du kan hänvisa till den här Class-egenskapen som en egenskap i huvudklassen 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); } }
En annan SWF-fil kan läsa in den resulterande Library.swf-filen och sedan skapa ett objekt av typen Circle. I följande exempel visas ett sätt att få tillgång till en resurs i en underordnad SWF-fil. (En annan teknik är att använda flash.utils.getDefnitionByName()
eller importera stub-definitionerna i den underordnade SWF-filen.)
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); } } }
I ActionScript 3.0 kan du skapa inbäddade klasser för externa resurser (till exempel bilder, ljud eller teckensnitt) som är kompilerade till SWF-filer. I tidigare versioner av ActionScript associerade du till de resurserna genom att använda ett länk-ID med metoden MovieClip.attachMovie()
. I ActionScript 3.0 representeras varje inbäddad resurs av en unik inbäddad resursklass. Du kan därför använda operatorn new
när du skapar en instans av resursens associerade klass och anropar metoder och egenskaper på resursen.
Relaterade API-element
- Deklarera två klasser som
ClassA
ochClassB
. - Deklarera en variabel av typen Class med namnet
classToConstruct
och en variabel av typen Boolean med namnetchooseClassA
som ställs in påtrue
, i det här fallet. Du kan även använda ett eget testuttryck i koden som ställer in värdet på variabeln.
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, 01:40 PM Z