所以,我想要清除整个舞台。我已经在互联网上搜索过了,很遗憾没有任何东西对我的情况有用。
基本上,我正在做的是一个有点复杂的迷宫生成器,在我创建一个新的之前,我想摆脱之前创建的所有内容。到目前为止,我听说从舞台上删除动画片段的最佳方法是使用以下方式购买:
while(numChildren > 0)
removeChildAt(0);
然而,这仅适用于我称之为的当前动画片段,其中不包括我生成的迷宫。我只想摆脱绝对的一切。 关于如何做到这一点的任何想法?
答案 0 :(得分:6)
您正在思考正确的问题,您可以使用numChildren
和removeChildAt
但是您需要在舞台范围内调用它们:
while(stage.numChildren > 0)
{
stage.removeChildAt(0);
}
答案 1 :(得分:5)
要从舞台上删除它:
stage.removeChildren();
只是从舞台上删除剪辑并不总是等同于将它们从内存中移除
removeChildren,removeChild或者removeChildAt实际上并没有从内存中删除Sprite或任何其他DisplayObject,它只会从displaylist中删除它。这意味着如果你创建1000个精灵并将它们添加到舞台(displaylist),然后使用removeChildren它们仍然可以存在于内存中(永远)。然后你有内存泄漏。
要从内存中删除它,所有与displayObject有关系的对象都应设置为null。这包括事件监听器和/与非置换列表相关对象的关系。
如果你想确保所有相关内容都应该消失,只需将其置空并检查以下内容:
您可以使用Temple Library中的Mr Doob stats或performance stats来分析内存。删除所有剪辑后,您应该在一段时间后看到丢弃(垃圾收集)。多次删除后,内存指示灯不应该更高。