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 минут
Если упростить - все сводится к этому:
Как сделать проверку, есть ли в массиве объект с таким именем или нет, и не добавлять его повторно?
Проблема решена.
var boxes = [];
//каждая платформа при старте вызывает эту функцию и передаёт себя как параметр
function addBox(obj) {
boxes.push(obj);}
В мувиклипе я пишу
_parent.addBox(this);
Далее у меня каждый мувиклип в массиве некоторое количество раз копируется, у него меняется имя (добавляется id), но надо чтобы количество объектов в массиве не увеличивалось постоянно, а отражало действительность.
Получается что находясь в кадре, мувиклип бесконечно добавляется в массив. Как сделать, чтобы он добавлялся лишь один раз?
Я пробовал делать добавление в массив в первом кадре мувиклипа а потом на последнем кадре писал gotoAndPlay(2); чтобы повторно избегать первого кадра - это не работает, он простон е добавляется в массив.
Кроме того, известно что длина массива равна глобальной переменной и не может быть больше ее.
boxes.length=_global.counter; - но этот код неправилньый, по сути. То есть я хочу ограничить число объектов в массиве до реального числа объектов, находящихся на экране на данный момент.
Надеюсь на помощь.
Добавлено через 4 часа 12 минут
Если упростить - все сводится к этому:
Как сделать проверку, есть ли в массиве объект с таким именем или нет, и не добавлять его повторно?
Проблема решена.