请问在flash中用removeChild()完完全全清清楚楚真真正正的删除对象?
要简单点的方法,谢谢各位大虾!!
请问在flash中用removeChild()完完全全清清楚楚真真正正的删除对象?
要简单点的方法,谢谢各位大虾!!
假设通过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以后的用途已经小了
removeChild只是删除在显示列表的。缓存里还有地。
可以看下帮助的MovieClip类呀。F1