我有一个传递了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”。我的问题是,如何多次从数组中添加项而不会丢失其属性等?
答案 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]);
}