Actionscript 3 从后台删除所有内容3

Actionscript 3 从后台删除所有内容3,actionscript-3,movieclip,Actionscript 3,Movieclip,所以,我想清理我的整个舞台。我已经在互联网上搜索过了,不幸的是,我的情况没有任何效果 基本上,我正在做的是一个有点复杂的迷宫生成器,在我创建一个新的生成器之前,我想去掉之前创建的所有东西。到目前为止,我听说将movieclips从舞台上移除的最佳方法是使用以下工具购买: while(numChildren > 0) removeChildAt(0); 然而,这只适用于我调用它的当前movieclip,它不包括我生成的迷宫。我只想彻底摆脱一切。 关于如何做到这一点有什么想法吗?您的

所以,我想清理我的整个舞台。我已经在互联网上搜索过了,不幸的是,我的情况没有任何效果

基本上,我正在做的是一个有点复杂的迷宫生成器,在我创建一个新的生成器之前,我想去掉之前创建的所有东西。到目前为止,我听说将movieclips从舞台上移除的最佳方法是使用以下工具购买:

while(numChildren > 0)
    removeChildAt(0);
然而,这只适用于我调用它的当前movieclip,它不包括我生成的迷宫。我只想彻底摆脱一切。
关于如何做到这一点有什么想法吗?

您的思路是正确的,您可以使用numChildren和removeChildAt,但您需要在舞台范围内调用它们:

while(stage.numChildren > 0)
{
  stage.removeChildAt(0);
}
stage.removeChildren();

要将其从舞台上移除,请执行以下操作:

while(stage.numChildren > 0)
{
  stage.removeChildAt(0);
}
stage.removeChildren();
仅仅从舞台上删除剪辑并不总是等同于从内存中删除剪辑

removeChildren、removeChild或RemoveChildata实际上并没有从内存中删除精灵或任何其他DisplayObject,它只是将其从displaylist中删除。这意味着,如果你创建1000个精灵并将它们添加到舞台显示列表中,然后使用removeChildren,它们可能永远存在于内存中。那么你有内存泄漏

要将其从内存中删除,所有与displayObject相关的对象都应设置为null。这包括事件侦听器和与非displaylist相关对象之间的关系

如果您想确保所有相关内容都已删除,只需将其设为空并检查以下内容:

使用removeChild或removeChildAt或removeChildren将其从显示列表中删除。注:这可以从舞台上完成 删除附加到剪辑的所有事件侦听器,或使用弱事件侦听器。 如果在数组、向量、字典或任何其他对象中使用引用,请将其从对象中删除,将其设置为null或使用Array.splice将其拼接 setTimeout/setInterval应该被清除 将对象设置为null
您可以使用Temple库或从Temple库配置内存。删除所有剪辑时,您应该会在一段时间后看到丢弃垃圾回收。删除多次后,内存指示器不应更高。

应该注意的是,这些天我们可以访问@PixelElephant。很抱歉,我找不到removeChildren。。。您可以共享正确的链接吗?需要注意的是,当当前MovieClip从stage中删除时,其stage属性将失效,因此必须首先通过var_stage:stage=this.stage存储它;并使用_stage作为参考。这是正确的链接,但您可能必须通过将鼠标悬停在屏幕左上角的运行时过滤器上来更改过滤器设置,并将Flash Player版本更改为11,因为之前的播放器版本无法访问removeChildren功能。