Pacchetto | Primo livello |
Classe | public dynamic class Class |
Ereditarietà | Class Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
.
Alcuni metodi, ad esempio flash.net.getClassByAlias()
, restituiscono un oggetto di tipo Class. Altri metodi possono avere un parametro di tipo Class, ad esempio flash.net.registerClassAlias()
.
Il nome della classe è il riferimento all'oggetto Class, come mostra l'esempio seguente:
class Foo { }
L'istruzione class Foo{}
è la definizione di classe che crea l'oggetto Class Foo. Inoltre, l'istruzione new Foo()
crea una nuova istanza della classe Foo e il risultato è di tipo Foo.
Utilizzate l'istruzione class
per dichiarare le classi. Gli oggetti Class sono utili per tecniche avanzate quali l'assegnazione delle classi a un oggetto istanza esistente in fase di runtime, come mostrato nella sezione "Esempi" più avanti.
Tutte le proprietà statiche e i metodi di una classe si trovano nell'oggetto Class della classe. Class dichiara prototype
.
In genere, non è necessario dichiarare o creare le variabili di tipo Class manualmente. Tuttavia, nel codice seguente una classe viene assegnata come proprietà Class pubblica circleClass
e potete fare riferimento a questa proprietà Class come proprietà della classe Library principale:
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); } }
Un altro file SWF può caricare il file Library.swf risultante e successivamente creare le istanze degli oggetti di tipo Circle. L'esempio seguente mostra un modo per ottenere l'accesso alle risorse di un file SWF secondario. In alternativa, è possibile utilizzare flash.utils.getDefnitionByName()
o importare le definizioni stub del file SWF secondario.
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, potete creare delle classi incorporate per le risorse esterne (quali immagini, suoni o caratteri) che vengono compilate nei file SWF. Nelle precedenti versioni di ActionScript, tali risorse venivano assegnate mediante un identificatore di concatenamento con il metodo MovieClip.attachMovie()
. In ActionScript 3.0, ogni risorsa incorporata è rappresentata da una classe di risorsa incorporata univoca. Pertanto, potete utilizzare l'operatore new
per creare le istanze della classe associata della risorsa e chiamare i metodi e le proprietà sulla risorsa.
Elementi API correlati
- Dichiarate due classi come
ClassA
eClassB
. - Dichiarate una variabile di tipo Class denominata
classToConstruct
e una di tipo BooleanchooseClassA
che in questo caso è impostata sutrue
, ma il cui valore potrebbe essere impostato nel codice mediante un'espressione di test personalizzata.
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, 02:44 PM Z