2017-09-24 71 views
0

我试图将对象添加到显示列表,但对于我的项目,如果我可以运行一段代码,可以将5个对象中的1个放到屏幕上,那将会很好。目前,如果我将对象的名称放入代码中,代码将起作用,但如果我尝试通过变量为其指定类名,则代码将失败。有任何想法吗?使用变量向DisplayList添加对象

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; 

抛出这个错误:

1086:语法错误:LEFTBRACKET之前应有分号。

此代码的工作,但:

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

什么想法? 任何帮助表示赞赏。

回答

2

不能从阵列声明变量的东西,因为变量声明是一个编译时操作,而阵列项目在运行时可用,这是

另外,您不需要。只需把它声明为的DisplayObject,或不申报的话,那是不是强制性的,你没有义务,这将是罚款:

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); 
}