as3.0怎样完全从内存中删除new MovieClip()的实例
我用removeChild(mc);后用trace(mc.x,mc.y);还能访问到它,。。用侦听还能检测到它,这是怎么回事啊????mc=null;方法我用过了,可是我...
我用removeChild(mc);后用trace(mc.x,mc.y);还能访问到它,。。用侦听还能检测到它,这是怎么回事啊????
mc=null; 方法我用过了,可是我想让继承mc的类创建的(实例),自己完全消失。
就如parent.removeChild(this); //从显示列表 移除,一样的 自己完成内存回收。。。
跪求,能详细点吗?? 就是在类里面建立一个自己完全从内存消失的方法。。
还有,从显示列表中用removeChild()移除的东西能再显示出来吗???怎么显示??? 展开
mc=null; 方法我用过了,可是我想让继承mc的类创建的(实例),自己完全消失。
就如parent.removeChild(this); //从显示列表 移除,一样的 自己完成内存回收。。。
跪求,能详细点吗?? 就是在类里面建立一个自己完全从内存消失的方法。。
还有,从显示列表中用removeChild()移除的东西能再显示出来吗???怎么显示??? 展开
展开全部
removeChild只是移除出显示列表,如果要回收内存空间,需要
mc = null;
就可以了
----------------------------------
当一个对象没有任何引用指向它时,AS的垃圾回收机制会自动回收它的内存地址。
所以,如果这个mc没有其他地方用到它了,那么在parent.removeChild(this)后,mc就被回收了,但是一定要是没有任何地方用到它了才行,所以建议手动置空回收比较好。
同理,如果要让被removeChild的对象重新显示,那么只需要弄一个容器来存储它,保证有对它的引用时刻存在就可以了。
比如建立一个数组,将mc放在数组里,那么在removeChild之后,还可以通过addChild(arr[i])让它重新显示。
mc = null;
就可以了
----------------------------------
当一个对象没有任何引用指向它时,AS的垃圾回收机制会自动回收它的内存地址。
所以,如果这个mc没有其他地方用到它了,那么在parent.removeChild(this)后,mc就被回收了,但是一定要是没有任何地方用到它了才行,所以建议手动置空回收比较好。
同理,如果要让被removeChild的对象重新显示,那么只需要弄一个容器来存储它,保证有对它的引用时刻存在就可以了。
比如建立一个数组,将mc放在数组里,那么在removeChild之后,还可以通过addChild(arr[i])让它重新显示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
解决第一个问题:
在类中建立一个引用列表,当其他对象引用自身时,把引用者对它的引用属性当参数传进来,释放时,遍历该表将所有的引用置空,也就实现了对自己的释放,说起来很别扭,举个例子。
mc是一个剪辑类
mcuse对其进行实例化,实例对象为mc1
构建mc1时一般是,var mc1:mc=new mc();
现在,我需要将mcuse对它的引用当参数传进来,那么:
var mc1:mc=new mc(mcuse.mc1);
这意味着,当mc1被创建时,同时自身也得到了对mc1的引用,那么,当你需要释放mc1的内存时,将这个引用置空,也就完成了对引用的删除。
第二个问题
被remove掉的显示对象,只是从显示列表中清除,也就是从你的显存中清除,但并没有从你的内存中清除。所以,在addChild时,把显示对象压入一个数组,removeChild后,显示列表中不在了,但数组还保存对这个对象的引用,此时,再addChild,对象就可以显示出来了。
在类中建立一个引用列表,当其他对象引用自身时,把引用者对它的引用属性当参数传进来,释放时,遍历该表将所有的引用置空,也就实现了对自己的释放,说起来很别扭,举个例子。
mc是一个剪辑类
mcuse对其进行实例化,实例对象为mc1
构建mc1时一般是,var mc1:mc=new mc();
现在,我需要将mcuse对它的引用当参数传进来,那么:
var mc1:mc=new mc(mcuse.mc1);
这意味着,当mc1被创建时,同时自身也得到了对mc1的引用,那么,当你需要释放mc1的内存时,将这个引用置空,也就完成了对引用的删除。
第二个问题
被remove掉的显示对象,只是从显示列表中清除,也就是从你的显存中清除,但并没有从你的内存中清除。所以,在addChild时,把显示对象压入一个数组,removeChild后,显示列表中不在了,但数组还保存对这个对象的引用,此时,再addChild,对象就可以显示出来了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询