Обычно я делаю две вещи:
1) В объекте обновляется active
bool.Когда вы вызываете функцию destroy()
или что-либо еще для очистки, установите active
на false
.В функции update()
проверьте при запуске.если active
равно false
, выйдите из системы.
2) Имейте свойство removeFromUpdate
, для которого установлено значение true, если вы хотите удалить свой объект.В вашем UpdateManager (или как называется update()
на ваших объектах) сделайте что-то вроде этого:
private function _update():void
{
// update our objects
var remove:Boolean = false;
var len:int = this.m_objects.length;
for( var i:int = 0; i < len; i++ )
{
this.m_objects[i].update();
if( this.m_objects[i].removeFromUpdate )
remove = true;
}
// if we don't have anything to remove, quit
if( !remove )
return;
// we have something to remove, so traverse the array
// backwards (so we don't have index problems)
for( i = len - 1; i >= 0; i-- )
{
if( this.m_objects[i].removeFromUpdate )
{
// you can optionally call the object's destroy() function
// here
// splice the array
this.m_objects.splice( i, 1 );
}
}
}
Это в значительной степени работает для меня.При желании вы можете сделать так, чтобы функция update()
объекта возвращала true, если она должна быть удалена, если вы хотите сохранить параметр