добавление элементов из массива несколько раз на сцену - PullRequest
1 голос
/ 16 февраля 2011

У меня есть цикл for, который проходит 11 раз:

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 отслеживают «ноль».У меня вопрос, как я могу добавлять элементы из массива несколько раз, не теряя его свойств и т. Д.

1 Ответ

2 голосов
/ 16 февраля 2011

Нет ничего плохого в вашей петле. Однако объект 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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...