PDA

Просмотр полной версии : Бесконечное добавление мувиклипов в массив.


CHLameR
05.02.2010, 15:29
У меня следующая проблема: объект бесконечно добавляет себя в массив, постепенно засоряя тем самым память. Лаги появляются далеко не скоро, но все равно это непорядок, длина массива бесконечно увеличивается.


var boxes = [];
//каждая платформа при старте вызывает эту функцию и передаёт себя как параметр
function addBox(obj) {
boxes.push(obj);}
В мувиклипе я пишу

_parent.addBox(this);

Далее у меня каждый мувиклип в массиве некоторое количество раз копируется, у него меняется имя (добавляется id), но надо чтобы количество объектов в массиве не увеличивалось постоянно, а отражало действительность.
Получается что находясь в кадре, мувиклип бесконечно добавляется в массив. Как сделать, чтобы он добавлялся лишь один раз?

Я пробовал делать добавление в массив в первом кадре мувиклипа а потом на последнем кадре писал gotoAndPlay(2); чтобы повторно избегать первого кадра - это не работает, он простон е добавляется в массив.

Кроме того, известно что длина массива равна глобальной переменной и не может быть больше ее.
boxes.length=_global.counter; - но этот код неправилньый, по сути. То есть я хочу ограничить число объектов в массиве до реального числа объектов, находящихся на экране на данный момент.

Надеюсь на помощь.

Добавлено через 4 часа 12 минут
Если упростить - все сводится к этому:
Как сделать проверку, есть ли в массиве объект с таким именем или нет, и не добавлять его повторно?


Проблема решена.

yo3o
04.08.2011, 10:05
можете рассказать как вы решили проблему? очень нужно!

i.o.
04.08.2011, 16:27
Array#indexOf() вероятно. Или проход по элементам вручную :)

yo3o
04.08.2011, 17:32
а можно по точнее?

i.o.
04.08.2011, 21:14
Так устроит?

function pushToArray( arr:Array, elem ) : Boolean
{
var i:Number = arr.length;
while (i-- > 0 && arr[i] != elem)
{
}
if (i > -1)
return false;

arr.push(elem);
return true;
}

yo3o
08.08.2011, 09:27
можете мне помочь? у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?

Котяра
08.08.2011, 10:10
можете мне помочь? у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?
Как это относится к теме топика?

i.o.
08.08.2011, 10:21
yo3o, вы явно о чем-то сугубо своем...

yo3o
08.08.2011, 10:57
просто я думал что у автора топика была та же проблема. можете как можно отловить ошибку?

i.o.
08.08.2011, 11:08
У меня следующая проблема: объект бесконечно добавляет себя в массив, постепенно засоряя тем самым память. Лаги появляются далеко не скоро, но все равно это непорядок, длина массива бесконечно увеличивается.
и
у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?
Найдите 3 отличия.