Цитата:
Сообщение от dmitry bond
Такая же проблемма была, исправил методом splice();
|
Чего-то у меня не
splice-ется, ни
shift-ается.
И вобще стоит чего-нибудь удалить из массива, как сразу все перестает работать. Я и не думал, что удалить элимент еще сложнее чем добавить. (когда не знаешь как).
Есть видь не один способ удалить элемент из массива, но все они заканчиваются крахом.
Работает только если заменить ненужную часть на
null. Но тогда Пустые индексы массива разрастаются до бесконечности. И получается на сцене 3-4 мувика а массив длиной аж под 1000!.
Стоит их убрать и все виснет.
Вот только в таком корявом виде кое-как работает.

Код AS3:
// Выше только мувики добавляются в массив и на сцену.
stage.addEventListener(Event.ENTER_FRAME, mov);
var t:int =0;
function mov(e:Event):void
{
for (var i:int = 0; i < сlips.length; i++)
{
if (сlips[i] != null) // Если аргумент не равен "0" если убрать то каюк
{
сlips[i].x = сlips[i].x - speed;
const all:Boolean = сlips[i].x < 20 && сlips[i].parent != null;
if (all)
{
сlips[i].parent.removeChild(сlips[i]);
// Вот с этого момента все перекашивает
сlips.splice(t, 1, null);
resultt = [сlips.filter( removeEmpty )];
t++;
}
}
}
}
function removeEmpty(a:Object,index:int, source:Array):Boolean {
if ( !a ) return false;
return true;
}
Вобщем может есть более-менее адекватный способ, что бы функция не "следила" и не "мусорила"?
result - получается замечательный. Вот только присвоить его
clips ни как не представляется возможным.