Просто хочу дать совет при работе с экранными объектами, которые вы также поддерживаете в отдельных массивах.
Я вижу, что:
- Вы анализируете объекты (ящики или враги), используя созданные вами массивы.
- Вы удаляете их из соответствующих списков отображения, но не удаляете их из массивов.
Вы должны создать механизм, который бы также удалял их из массивов, если нет цели их хранения там. Например, такая функция:
function RemoveCrate(index) : void
{
crates[index].parent.removeChild(crates[index]); /// remove from display list
crates.splice(index, 1); /// remove reference from the array;
}
И я не проверял родителя, как вы специально, потому что я предполагаю, что у него должен быть родитель, а если нет, я хочу выдать ошибку, потому что это означает, что с остальным моим кодом что-то не так.
Также, если вы анализируете массив и удаляете элементы, не прерывая итерацию при удалении, вы также должны уменьшить итератор следующим образом:
for(var i:int = 0; i < crates.length; i++)
{
[....]
RemoveCrate(i);
i --; // not doing this after deletion will skip one element in the next iteration
[....]
}
Объединение массивов может быть не самым оптимальным решением (лучше использовать связанный список), но для небольших массивов (десятки или даже сотни) это не должно иметь значения.
И последнее: не удаляя объекты из массивов, вы сохраните ссылки на них, из-за чего сборщик мусора пропустит их
Надеюсь, это поможет.
-
Михню