将数组中的项目多次添加到舞台中

时间:2011-02-16 09:19:40

标签: actionscript-3

我有一个传递了11次的for循环:

private var currentItem:uint;
for(var i:uint = 0;i<10;i+){
    addChild(arr[currentItem]);
    currentItem++;
    if(currentItem == arr.length){
    currentItem = 0;
    }
}

所以问题是该数组只包含6个项目。因此,当涉及第6项时,currentItem重置,接下来要添加的4个项目再次是数组中的第4项。现在当我跟踪项目时,最后4个跟踪“null”。我的问题是,如何多次从数组中添加项而不会丢失其属性等?

1 个答案:

答案 0 :(得分:2)

你的循环没有任何内在错误。但是,DisplayObject只能位于显示列表上一次。它不能有多个父母或多次成为同一父母的孩子。这就是你的代码无效的原因。

更新

如果要从类列表中创建新实例,则可以执行此操作,但您当前的方法无法正常工作。这是你需要做的:

// the square bracket notation is shorthand for creating an array.
// fill the array with references to *classes* not instances
var classes:Array = [ MyClassOne, MyClassTwo, MyClassThree ];

// we run the loop much as you did, but we can make it much more compact
// by using the modulus operator
// since the array is full of classes, we can use the new operator to 
// create new instances of those classes and add them to the display-list
for(var i:uint = 0; i < 10; i++ ){
    addChild(new classes[i % classes.length]);
}