Instruction dynamic

dynamic class className [ extends superClass ] [ implements interfaceName[, interfaceName... ] ] { // Définition de classe ici }

Spécifie que les objets basés sur la classe spécifiée peuvent ajouter des propriétés dynamiques et y accéder pendant l'exécution.

La vérification du type des classes dynamiques est moins stricte que pour les classes non dynamiques, dans la mesure où les membres sollicités au sein de la définition de classe et dans les occurrences de classe ne sont pas comparées à celles qui sont définies dans le domaine de la classe. Les fonctions des membres de la classe, cependant, peuvent toujours faire l'objet d'une vérification du type de renvoi ou de paramètre. Ce comportement est particulièrement utile lorsque vous travaillez avec des objets MovieClip, dans la mesure où il existe de nombreuses façons d'ajouter de façon dynamique des propriétés et des objets à un clip, telles que MovieClip.createEmptyMovieClip() et MovieClip.createTextField().

Les sous-classes des classes dynamiques sont également des classes dynamiques.

Disponibilité : ActionScript 2.0 ; Flash Lite 2.0

Exemple

Dans l'exemple suivant, la classe Person2 n'a pas encore été définie comme étant dynamique ; par conséquent, l'appel d'une fonction non déclarée sur celle-ci génère une erreur lors de la compilation :

class Person2 { 
 var name:String; 
 var age:Number; 
 function Person2(param_name:String, param_age:Number) { 
 trace ("anything"); 
 this.name = param_name; 
 this.age = param_age; 
 } 
}

Dans un fichier FLA ou AS qui se trouve dans le même répertoire, ajoutez le code ActionScript suivant à l'image 1 sur le scénario :

// Avant l'ajout de dynamic 
var craig:Person2 = new Person2("Craiggers", 32); 
for (i in craig) { 
 trace("craig." + i + " = " + craig[i]); 
} 
/* Renvoie :
craig.age = 32 
craig.name = Craiggers */

Si vous ajoutez une fonction non déclarée, dance, une erreur est générée, comme indiqué dans l'exemple suivant :

trace(""); 
craig.dance = true; 
for (i in craig) { 
 trace("craig." + i + " = " + craig[i]); 
} 
/* Renvoie : **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 14: There is no property with the name 'dance'. craig.dance = true; Total ActionScript Errors: 1 Reported Errors: 1 */

Ajoutez le mot-clé dynamic à la classe Person2, de manière à ce que la première ligne s'affiche comme suit :

dynamic class Person2 { 

Testez le code de nouveau ; vous obtenez le code suivant :

craig.dance = true craig.age = 32 craig.name = Craiggers

Voir aussi

Instruction class