Package | Niveau supérieur |
Classe | public dynamic class Class |
Héritage | Class Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
.
Certaines méthodes, telles que flash.net.getClassByAlias()
, renvoient un objet de type Class. D’autres méthodes, telles que flash.net.registerClassAlias()
, disposent parfois d’un paramètre de type Class.
Le nom de classe renvoie à l’objet Class, comme illustré dans l’exemple ci-dessous :
class Foo { }
L’instruction class Foo{}
est la définition de classe qui créé l’objet Class Foo. En outre, l’instruction new Foo()
créera une occurrence de la classe Foo et le résultat sera de type Foo.
Utilisez l’instruction class
pour déclarer vos classes. Les objets Class s’avèrent utiles pour les techniques évoluées telles que l’affectation de classes à un objet existant lors de l’exécution, comme illustré à la section « Exemples » ci-dessous.
Les méthodes et propriétés statiques d’une classe sont héritées par l’objet Class de la classe. En retour, Class déclare prototype
.
En règle générale, il est inutile de déclarer ou de créer manuellement des variables de type Class. Cependant, dans le code ci-dessous, une propriété Class publique circleClass
est affectée à une classe et vous pouvez vous y référer en tant que propriété de la 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 autre fichier SWF peut charger le fichier Library.swf généré, puis instancier les objets de type Circle. L’exemple suivant illustre une façon d’accéder aux ressources d’un fichier SWF enfant (d’autres techniques font appel à flash.utils.getDefnitionByName()
ou importent des définitions souche (stub) du fichier SWF enfant).
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); } } }
ActionScript 3.0 vous permet de créer des classes intégrées destinées aux ressources externes (telles que les images, les sons ou les polices) qui sont compilées dans des fichiers SWF. Dans les versions antérieures d’ActionScript, vous associez ces ressources à la méthode MovieClip.attachMovie()
par le biais d’un ID de liaison. Dans ActionScript 3.0, chaque ressource intégrée est représentée par une classe de ressources intégrées unique. Vous pouvez de ce fait utiliser l’opérateur new
pour instancier la classe associée à la ressource et appeler des méthodes et des propriétés sur cette dernière.
Eléments de l’API associés
- Déclare deux classes,
ClassA
etClassB
. - Déclare une variable de type Class appelée
classToConstruct
et une autre de type Boolean appeléechooseClassA
, qui est définie surtrue
dans ce cas. Votre code pourrait également utiliser une expression de test personnalisée pour définir la valeur de cette variable.
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, 09:30 AM Z