看起来您可能可以添加v
到显示列表中,而不是container[i]
. 你试过吗?
更新:实际上,我认为问题来自循环定义中的第二项。应该是i < allElements.length
,而不是allElements.length
。按照您设置它的方式,它运行的时间比它应该运行的多一倍。
下面是一些工作代码,基于您在上面发布的内容。如果我需要澄清一下,请给我留言(任何人 - 到目前为止,这是一个艰难的早晨......)。
var el1_spr:Sprite = new Sprite;
var el2_spr:Sprite = new Sprite;
var el3_spr:Sprite = new Sprite;
el1_spr.graphics.beginFill(0x0000FF);
el1_spr.graphics.moveTo(0,0);
el1_spr.graphics.lineTo(100,0);
el1_spr.graphics.lineTo(100,100);
el1_spr.graphics.lineTo(0,100);
el1_spr.graphics.lineTo(0,0);
el1_spr.graphics.endFill();
el2_spr.graphics.beginFill(0x00FF00);
el2_spr.graphics.moveTo(0,0);
el2_spr.graphics.lineTo(100,0);
el2_spr.graphics.lineTo(100,100);
el2_spr.graphics.lineTo(0,100);
el2_spr.graphics.lineTo(0,0);
el2_spr.graphics.endFill();
el3_spr.graphics.beginFill(0xFF0000);
el3_spr.graphics.moveTo(0,0);
el3_spr.graphics.lineTo(100,0);
el3_spr.graphics.lineTo(100,100);
el3_spr.graphics.lineTo(0,100);
el3_spr.graphics.lineTo(0,0);
el3_spr.graphics.endFill();
var elements:Array = new Array (el1_spr, el2_spr, el3_spr);
var container:Array = new Array();
for (var i:uint; i < elements.length; i++)
{
container.push(elements[i]);
var v:Sprite = (elements[i] as Sprite);
addChild(v);
//addChild(elements[i]); // this also works
//addChild(container[i]); // this also works
v.x += (100 * i);
//elements[i].x += (100 * i); // this also works
//container[i].x += (100 * i); // this also works
}
我不知道你的代码的上下文是什么,但为了它可能的价值,我添加了几行额外的行来表明你不一定需要container
数组,或者创建v
.
希望这会有所帮助。