Looks like you could probably add v
to the display list, rather than container[i]
. Have you tried that?
UPDATE: Actually, I think the problem comes from the second item in your loop definition. It should be i < allElements.length
, rather than allElements.length
. The way you've got it set up, it is running one time more than it should.
Below is some working code, based on what you posted, above. Hit me with a comment if I need to clarify (anyone - been a rough morning, so far...).
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
}
I don't know what the context of your code is, but for what it might be worth, I included a couple of extra lines to show that you don't necessarily need the container
Array, or to create v
.
Hope that's helpful.