FLASH AS3 如何在一个MovieClip removeChild和NULL另一个MovieClip?
展开全部
其实最好的方法就是自己做个remove的方法,然后用这个remove方法统一处理
var dis:Dictionary = new Dictionary;
//监听
addListener("mc1",mc1,Event.ENTER_FRAME,onEnterFunction1)
addListener("mc1",mc1,Event.ENTER_FRAME,onEnterFunction2)
/**名字,对象,监听类型,监听的方法*/
//为什么监听要这么麻烦呢,因为如果不把监听去掉,在内存里面还是会存在D,不行你可以注册个enterframe方法,就算 = null ,依然会运行。
function addListener(name:String,mc:DisplayObject,event:String,func:Function){
dis[name] = mc;
var listenerObj:Object = new Object;//存放方法的对象
listenerObj.event = event;
listenerObj.func = func;
if(!dis[name]["listener"]){//存放方法的数组
dis[name]["listener"] = []
}
var arr:Array = dis[name]["listener"];
dis[name]["listener"].push(listenerObj);
//监听
dis[name].addEventListener(arr[arr.length-1].event,arr[arr.length-1].func);
}
//移除的时候,只要把名字传进去就可以了。
function myRemoveChild(name:String){
if(dis[name].parent){//移除对象
dis[name].parent.removeChild(dis[name]);
}
if(dis[name]["listener"]){//移除监听
for each(var obj:Object in dis[name]["listener"]){
dis[name].removeEventListener(obj.event,obj.func);
}
}//清空
dis[name] = null;
}
这样就会比较干净。。
var dis:Dictionary = new Dictionary;
//监听
addListener("mc1",mc1,Event.ENTER_FRAME,onEnterFunction1)
addListener("mc1",mc1,Event.ENTER_FRAME,onEnterFunction2)
/**名字,对象,监听类型,监听的方法*/
//为什么监听要这么麻烦呢,因为如果不把监听去掉,在内存里面还是会存在D,不行你可以注册个enterframe方法,就算 = null ,依然会运行。
function addListener(name:String,mc:DisplayObject,event:String,func:Function){
dis[name] = mc;
var listenerObj:Object = new Object;//存放方法的对象
listenerObj.event = event;
listenerObj.func = func;
if(!dis[name]["listener"]){//存放方法的数组
dis[name]["listener"] = []
}
var arr:Array = dis[name]["listener"];
dis[name]["listener"].push(listenerObj);
//监听
dis[name].addEventListener(arr[arr.length-1].event,arr[arr.length-1].func);
}
//移除的时候,只要把名字传进去就可以了。
function myRemoveChild(name:String){
if(dis[name].parent){//移除对象
dis[name].parent.removeChild(dis[name]);
}
if(dis[name]["listener"]){//移除监听
for each(var obj:Object in dis[name]["listener"]){
dis[name].removeEventListener(obj.event,obj.func);
}
}//清空
dis[name] = null;
}
这样就会比较干净。。
参考资料: http://wenku.baidu.com/view/fc4d8575f242336c1eb95e69.html?st=1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询