【问题标题】:Destroy Flash Objects Completely完全销毁 Flash 对象
【发布时间】:2010-01-07 19:32:17
【问题描述】:

当我销毁舞台上的物品时。我通常只是 removeChild(this) 并删除对象的事件侦听器。这就是我需要做的一切来完全移除对象吗??

【问题讨论】:

    标签: flash actionscript-3 actionscript


    【解决方案1】:

    是的……有点。

    在 AS3 中,您不能销毁对象。您所能做的就是删除对它们的所有引用,从而使它们可用于垃圾收集。下次运行 GC 时,它将销毁它们如果它们可用。这是一个相当大的主题,但基本上,请始终记住删除所有引用,您将朝着正确的方向前进。

    还要记住,代码仍然可以在可用于 GC 的对象中执行,这有点奇怪,但需要注意的是。

    【讨论】:

    • 所以我应该为显示对象删除它们。然后将它们归零??
    • 尽你所能删除所有引用。这包括将它们从显示对象中移除。如果您想详细了解它的工作原理,请查看gskinner.com/blog/archives/2006/06/as3_resource_ma.html
    • Alan 发布了一个很棒的链接,请查看。但是,是的,一定要从显示列表中删除,并清除所有引用。确保您停止和计时器,并删除事件侦听器!
    • 为了清楚起见,通用答案是“删除对对象的所有引用”。附带的答案是,如果一个对象在显示列表中,它的父对象会保留对它的引用,因此必须从显示列表中删除它以删除对它的所有引用。
    【解决方案2】:

    这取决于你在你使用的类中拥有什么,如果它是一个加载的类,你必须卸载它,如果你有对其他 DisplayObject 的引用的变量,你应该将它们设为空,等等......

    【讨论】:

    • 从舞台上移除,并将它们设置为空。是否也会删除事件监听器
    • 不,你必须删除事件监听器
    • 尽管您可以使用弱引用创建事件侦听器,从而允许在事件侦听器是对象的最后一次保留时对对象进行垃圾收集。
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2013-03-21
    相关资源
    最近更新 更多