两件事情我通常做:
1)有一个active
布尔对象中得到更新。当你打电话给你的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。
你可以发布代码吗?你如何穿过你的机器人集合?你是否保留一个数组,或者你是否在显示列表中循环显示了孩子? –
你如何浏览你的机器人系列? 它只是机器人 数组你保持一个数组或者是你在显示列表遍历的孩子吗? 我保留阵列是因为在“战地”容器中有其他不是Robot的元素。 我会后的代码后,我也许应该提到这是HAXE不过,我遇到其他基于Flash的框架,这个问题如科罗娜SDK(使用Lua) – wahyudinata
你让机器人管理器类叫做机器人来管理所有的机器人类实例。保持它的模块化和良好的OOP时尚封装。 –