2015-08-12 1 views
0

Cette requête est assez simple. J'ai un tas de MovieClips dans la bibliothèque, mis à exporter pour ActionScript comme suit:AS3 - Association dynamique d'une classe à l'aide de la variable

Overlay_1 
Overlay_2 
Overlay_3 
... 
... 
... 

Il peut y avoir plus et leur nom peut être quelque chose (par exemple, pas numériquement croissant).

Actuellement, d'ajouter un de ces MovieClips au stade j'utiliser le script suivant:

var overlay_1:Overlay_1 = new Overlay_1(); 
addChild(overlay_1); 

Le problème avec ce que je veux définir une variable avec une chaîne, disons « Overlay_6 » puis ajoutez le MovieClip de la bibliothèque qui a ce nom d'exportation à la scène.

Par exemple:

var overlayToAdd:String = "Overlay_6"; 

var overlayCotent:this[overlayToAdd] = new this[overlayToAdd+"()"]; 
addChild(overlayCotent); 

Le résultat final étant que ce que jamais la chaîne I Affecte la variable « overlayToAdd » est ce qui est à choisi de la bibliothèque et ajouté à la scène.

Si quelqu'un pouvait vous aider, soyez reconnaissant! Je serai alors libre de définir la variable 'overlayToAdd' à des valeurs de tableaux ou de tout ce que je veux!

Dans l'ancien temps (AS2), j'aurais juste utilisé une fonction eval mais c'est parti maintenant.

+0

double possible de [Puis-je créer une instance d'une classe de AS3 juste connaître son nom?] (Http://stackoverflow.com/questions/7597343/can-i-create-an-instance-of -a-class-from-as3-juste-connaître-son-nom) – null

Répondre

0

Je l'ai résolu! Bon, alors ma solution est la suivante, j'espère que cela aidera les autres!

var overlayName:String; 
var overlayClass:Class; 
var overlaySprite:Sprite; 
overlayName="Overlay_1"; //This can be set by pretty much anything like an array value etc. 
overlayClass=getDefinitionByName(overlayName) as Class; 
overlaySprite=new overlayClass(); 
addChild(overlaySprite);