打印

[AS3] removeChild后 mc中addEventListener会不会还在?

我库中制作了一个mc里面有按钮和相关代码  
...
btn.addEventListener(MouseEvent.CLICK,onClicks);
function onClicks....

我在某个类里面同过addChild加入这个mc类
然后removeChild  不知道 需不需要removeEventListener()
因为要进行多次addChild  removeChild
一般来说垃圾会自动回收的,如果没有了这个mc类的引用,这个mc被remove掉后会被自动回收掉,回收以后listener也会跟着失效的

但是垃圾回收有个时间滞后问题,一般不会马上被回收掉,没有被回收的时候这个listener还是存在的!
多谢了,既然这样那就 估计没问题
需要removeEventListener(),否则是不会被回收的
除非你用弱侦听btn.addEventListener(MouseEvent.CLICK,onClicks,false,0,true);

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
引用:
原帖由 kx1115 于 2008-5-27 08:36 发表
需要removeEventListener(),否则是不会被回收的
除非你用弱侦听btn.addEventListener(MouseEvent.CLICK,onClicks,false,0,true);
我赞同kx1115的说法,因为removeChild这个方法的功能,只是取消子元件和父元件之间的显示关系,而子元件还是存在内存当中的。

你可以做一个小测试
复制内容到剪贴板
代码:
import flash.display.*;
var shape:Shape = new Shape();
trace("create>>"+shape);
addChild(shape);
trace("add>>"+shape);
removeChild(shape);
trace("remove>>"+shape);
你看一下最后一个显示的是否为"undefined"或"null"
如果不是的话,那就表示shape就没有从内存中消失,这个对象还存在。
Kinglong 's Blog
专注研究Flash,FCS/FMS,CF,JS,AS,Java,C#等相关技术

TOP