永发信息网

flash 中removeChild();的问题

答案:2  悬赏:70  手机版
解决时间 2021-04-25 00:18
  • 提问者网友:浮克旳回音
  • 2021-04-24 14:13

请问在flash中用removeChild()完完全全清清楚楚真真正正的删除对象?

要简单点的方法,谢谢各位大虾!!

最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-04-24 14:41

假设通过addChild(mc)生成的几个MC:
var i:uint;
for (i=0; i<5; i++) {
var mc:MovieClip = new tempMc();
mc.name=String("mc"+i);
mc.txt.text=mc.name;
stage.addChild(mc);
}


然后在for外面全部删除新生成的MC:


var i:uint;
var mc_array:Array=new Array;
for (i=0; i<5; i++) {
var mc:MovieClip = new tempMc();
mc.name=String("mc"+i);
mc.txt.text=mc.name;
mc_array.push(mc);
stage.addChild(mc);
}
function removeMc() {
for each (var _p:MovieClip in mc_array) {
stage.removeChild(_p);
}
}
//执行函数,就删除刚才的那些MC
removeMc();


不过用removeChild()移除后的东西还会占内存的(这个没办法,当初就这么设计的,汗,因为removeChild只是将显示列表里面的引用 设置为null)~..如果想彻底移除的话..可以使用=null或者
removeMc(stage);
function removeMc(mc) {
while (mc.numChildren>0) {
mc.removeChildAt(0);
}
}
不过后者只是是删除了所有的显示对象,不是删除前面的程序生成的对象



所以按照你的要求应该是使用=null的方法,希望对你有帮助!


对了,貌似还有一种方法,不知道对不对,使用delete mc
不过在AS3以后的用途已经小了

全部回答
  • 1楼网友:怙棘
  • 2021-04-24 14:56

removeChild只是删除在显示列表的。缓存里还有地。

可以看下帮助的MovieClip类呀。F1

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯