25 août 2008
AS3 : Associer String et Classe
Un petit jeu de mot, bien vaseux je vous l’accorde, pour une astuce AS3 je l’espère bien moins vaseuse.

J’ai récemment découvert un moyen bien pratique d’associer une chaine de caractères (ou String dans un langage de développeur) à une Classe.
Alors pourquoi associer une classe à une chaine de caractères ? Cela peut s’avérer nécessaire lorsque vous possédez une Classe faisant office de librairie de constantes (de type String) et que vous voulez associer ces constantes à des Classes. Certes vous pouvez associer directement une Classe à une variable (une constante dans l’exemple qui suit) grâce au type Class avec le code suivant :
1 | var myClass : Class = MyClass; |
Mais dans certains cas vos constantes (ou variables) doivent rester des chaines de caractères, et c’est là qu’interviennent les deux méthodes registerClassAlias() et getClassByAlias().
La première permet d’associer une Classe à une chaine de caractères de la manière suivante :
1 | registerClassAlias("myString", myClass); |
Pour ensuite appeler une nouvelle instance de la classe, il suffit d’appeler la classe avec son alias :
1 | getClassByAlias("myString"); |
Ainsi admettons que nous possédons une classe myMovieClip qui étend la classe MovieClip, et, que, nous voulions stocker une instance de cette classe dans une variable myClip, en y faisant référence avec une chaine de caractères “myString” (que l’on pourrait récupérer d’un script par exemple).
1 2 3 4 5 6 | // Enregistrement de la classe registerClassAlias("myString", myMovieClip) ; // Instanciation var myClass : Class = getClassByAlias("myString"); var myClip : MovieClip = new myClass(); |
Evidement il est possible (c’est même l’intérêt de ces deux méthodes) d’associer des classes à des variables (ou constantes) de type String et d’instancier ces classes avec d’autres variables.

Commentaires
jesus - 5 avril 2011
c’est bien t’as découvert le design pattern factory en flash
Jour de pluie - 5 avril 2011
Ouah, grosse pertinence ce commentaire.
C’est sure, ce sont des gens comme toi qui font avancer la communauté et aide les débutants à progresser.
Aller, je le laisse pour montrer à quel point on peut être stupide.
max - 27 juin 2011
bonjour,
je suis justement en train de créer un librairie de scripts, mais plutôt que de déclarer directement les classes et leur noms dans différents registerClassAlias, je souhaite les écrire dans un xml et qu’une boucle crée les différents registerClassAlias; mais à chaque fois il me dit que la valeur de la class est null ou que la variable n’existe pas (avec getDefinitionByName).
Avez-vous une idée ?
Max
Bonne soirée
Laisser un commentaire