永发信息网

as3.0怎样完全从内存中删除new MovieClip()的实例

答案:2  悬赏:10  手机版
解决时间 2021-11-09 15:28
as3.0怎样完全从内存中删除new MovieClip()的实例
最佳答案
removeChild只是移除出显示列表,如果要回收内存空间,需要

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,对象就可以显示出来了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
师门社群的社群管理是怎么样的?
350变压器有多少千瓦
如何晚上感恩祷告
变频器在运行时干扰伺服驱动器脉冲数,每次循
如何换算度数
诺贝能奶粉是不是荷兰原装进口
颖字怎么读
8x+0.8=8.8的解是( )? A 1.1 B 1 C x=1
2018年广东省考生优先投档线大概在省排多少名
现浇楼板浇筑完在室温20摄氏度下。 48小时后
咁我仲理你做咩啊 越语什么意思
在线瓷器鉴定:磁州窑系珍珠地划花罐
鲤鱼饵料腥香可以和薯香混一起吗
潍融E平台是哪里的平台?
动物骨多肽限什么使用百度知道
推荐资讯
118系列墙壁开关介绍
《西部畅想》的几个问题
产生雾霾的原因要求从地理方面分析
我想问下 at 怎么样用,不要复制答案啊 英语
欣利二手车办公地址在什么地方,我要处理点事
我们买房三年了教的全款现在房产证还没办该这
请教各位老师,辣椒这是怎么了?
男子撞死人为什么让兄顶包?
电路中20k中的k是什么意思
替别人买火新添加身份核验是啥意思
长春酒店用品市场哪有,
汕头卖壁画的店
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?