所以,我想清理我的整个舞台。我已经在互联网上进行了搜索,不幸的是,我的情况没有任何效果。
基本上,我正在做的是一个有点复杂的迷宫生成器,在我创建一个新的迷宫生成器之前,我想摆脱之前创建的所有东西。到目前为止,我听说从舞台上删除影片剪辑的最佳方法是使用以下命令购买:
while(numChildren > 0)
removeChildAt(0);
然而,这只适用于我调用它的当前影片剪辑,其中不包括我生成的迷宫。我只想彻底摆脱一切。关于如何做到这一点的任何想法?
所以,我想清理我的整个舞台。我已经在互联网上进行了搜索,不幸的是,我的情况没有任何效果。
基本上,我正在做的是一个有点复杂的迷宫生成器,在我创建一个新的迷宫生成器之前,我想摆脱之前创建的所有东西。到目前为止,我听说从舞台上删除影片剪辑的最佳方法是使用以下命令购买:
while(numChildren > 0)
removeChildAt(0);
然而,这只适用于我调用它的当前影片剪辑,其中不包括我生成的迷宫。我只想彻底摆脱一切。关于如何做到这一点的任何想法?
您的思路是正确的,您可以使用numChildren
,removeChildAt
但是您需要在舞台范围内调用它们:
while(stage.numChildren > 0)
{
stage.removeChildAt(0);
}
只需将其从舞台上移除:
stage.removeChildren();
仅仅从舞台上删除剪辑并不总是等于从内存中删除它们
removeChildren
,removeChild
或者removeChildAt
实际上并没有从内存中删除 Sprite 或任何其他 DisplayObject ,它只是将其从displaylist
. 这意味着如果您创建 1000 个精灵并将它们添加到舞台(显示列表),然后使用removeChildren
它们仍然可以存在于内存中(永远)。然后你有一个内存泄漏。
要将其从内存中删除,与 有关系的所有对象displayObject
都应设置为空。这包括事件侦听器和来自/到non-displaylist
相关对象的关系。
如果您想确保所有相关的东西都应该消失,只需将其设为空并检查以下内容:
displaylist
usingremoveChild
或removeChildAt
removeChildren 中删除它。(注意这可以在舞台上完成)eventListeners
附加到剪辑的内容,或使用弱事件侦听器。setTimeout/setInterval
应该清除object = null
您可以使用来自 Temple Library 的Doob 先生统计数据或性能统计数据来分析内存。删除所有剪辑时,您应该会在一段时间后看到一个丢弃(垃圾收集)。多次删除后,内存指标不应该更高。