2017-09-24 3 views
0

En essayant d'ajouter des objets à la liste d'affichage, mais pour mon projet, il serait bon que je puisse exécuter un morceau de code qui pourrait placer 1 des 5 objets sur l'écran. Actuellement, le code fonctionne si je mets le nom de l'objet, mais échoue si j'essaie de lui donner le nom de la classe à travers une variable. Des idées?Ajouter des objets à DisplayList en utilisant la variable

var sides:Array = new Array(Edge, Edge, Edge, Edge, Edge, Edge); 

var side1:sides[0] = new sides[0](); 
centerHex.addChild(side1); 
side1.y = side1.y - 20; 

Lancers cette erreur:

1086: Erreur de syntaxe: attendre avant LEFTBRACKET virgule.

Ce code fonctionne bien:

var side1:Edge = new Edge(); 
centerHex.addChild(side1); 
side1.y = side1.y - 20; 

Des idées? Toute aide est appréciée.

Répondre

2

Vous ne pouvez pas déclarer la variable comme quelque chose de tableau, car la déclaration variable est une opération de compilation, alors que tableau articles sont disponibles à l'exécution, qui est plus tard.

De même, vous n'avez pas besoin de le faire. Il suffit de le déclarer comme DisplayObject ou ne déclarent pas du tout, ce n'est pas obligatoire, vous n'êtes pas obligé, et il sera bien:

var Sides:Array = [Edge, Edge, Edge, Edge, Edge, Edge]; 

for (var i:int = 0; i < Sides.length; i++) 
{ 
    var SideClass:Class = Sides[i]; 
    var aSide:DisplayObject = new SideClass; 

    var anAngle:Number = i * Math.PI/3; 

    aSide.x = 100 * Math.cos(anAngle); 
    aSide.y = 100 * Math.sin(anAngle); 
    aSide.rotation = anAngle * 180/Math.PI; 

    centerHex.addChild(aSide); 
}