在Flash AS3中我是否需要移除孩子,如果我将其删除了孩子?
如果我先删除子项,则删除父对象
OR
如果我只是删除父对象
闪存会占用相同的内存吗?
答案 0 :(得分:1)
好吧,如果子项不包含引用变量或者所有子引用变量都设置为null然后删除父项并将父引用设置为null,则也会从内存中删除子项。但是您必须手动删除附加到的侦听器他们。在大多数情况下使用弱事件侦听器是可以预防的,因为当垃圾收集器删除对象或影片剪辑时它们会被自动删除,因此您不必手动删除它们。 这里有一些例子帮助你理解
var obj = new MainContainer();
obj.addEventListener(MouseEvent.CLICK, MainContainer_Clicked)
addChild(Obj)
现在使用removeChild(obj)删除Obj将从舞台中删除它,但不会从内存中删除它。你必须设置obj=null
。对于MainContainer Children来说,这也是一样的。现在你必须以这种方式手动删除附加到obj的事件监听器
obj.removeEventListener(MouseEvent.CLICK, MainContainer_Clicked)
如果您不希望它像这样删除
,请使用弱事件侦听器obj.addEventListener(MouseEvent.CLICK, MainContainer_Clicked,false,0,true)
在这里阅读有关弱事件监听器的更多信息
http://gskinner.com/blog/archives/2006/07/as3_weakly_refe.html