Здравствуйте!
Я в данный момент только начал изучать ActionScript и в учебных целях решил сделать игру аналогичную
вот этой.
У меня возникла проблема с генерацией "потолка" и "пола". Вот какой алгоритм я избрал:
1. У нас есть "кирпичик" в виде movieclip'а, из которого мы будем строить неровную поверхность.
2. В цикле Event.ENTER_FRAME:
- добавляем кирпичик на сцену и помещаем его в массив
- для последнего элемента массива устанавливаем положение на экране
- пробегаем по каждому элементу массива, где проверяем: если элемент массива вышел за пределы экрана, то удаляем его
То есть, по моему замыслу, существовать будут только те movieclip'ы, которые видны на экране, а уйдя за его пределы, они будут уничтожаться и всем будет хорошо.
Но в результате совсем не так, и я не понимаю, почему.
Вот кусочек кода, который за это отвечает:

Код AS3:
for (var i:uint = 0; i < wallArr.length; i++) {
if (wallArr[i].x < 0) {
trace(i+" is OUT!");
wallArr.splice(i,1);
}
}
Как видите, для проверки корректности работы я трейсом вывожу на экран элементы массива, которые удовлетворяют этому условию. Всё выводится правильно - как только movieclip'ы начинают выходить за пределы экрана, мы начинаем получать "0 is OUT!". Соответственно, если закомментировать "wallArr.splice(i,1);" то начинаем получать номера всех элементов массива, находящихся за пределами экрана. То есть, условие поставлено верно и, вроде бы, элементы массива даже удаляются.
Однако, если трейсить wallArr.length, то мы увидим, что массив абсолютно не уменьшается. И в результате, когда он разрастается до неимоверных пределов, всё начинает дико тормозить (что естественно).
И ещё, справедливы ли мои подозрения, что у меня неправильный подход, и удаление элемента из массива в данном случае не повлечёт за собой удаление movieclip'a со сцены?
Я, честно говоря, уже голову сломал над этой загадкой и был бы благодарен, если бы кто-то смог пролить хоть какой-то свет на неё. Искал уже не только в рунете, но и в зарубежном интернете подобные проблемы - ничего нет.
Кстати, сдаётся мне, что тут можно сделать всё проще, но я не знаю, как. Может, можно в AS3 как-то удалить со сцены все movieclip'ы, которые удовлетворяют тем или иным условиям (в данном случае выходят за пределы экрана)?