查看完整版本: cs3中如何删除对象?

berg1 2008-7-6 16:54

cs3中如何删除对象?

cs3中如何删除对象?假如创建一个新对象,用addChild 加入到某个容器中,当删除它时,可以用removeChild 从容器中去除,但是并没有真正删除,如何才能删除它呢?
var aa:Sprite=new Sprite(); //新建一个容器对象AA;
var bb:Object=new Object(); //新建随便一个对象bb
aa.addChild(bb); //把bb加到容器aa中
aa.removeChold(bb); //从容器中去除;
aa.addChold(bb); //再次加入,仍然可以,对象bb仍然存在,我希望删除它。

Poshidon 2008-7-7 09:16

bb = null;
将bb所执对象的引用删除,等待垃圾站回收

berg1 2008-7-9 15:51

哦,自动回收

是否可以理解为,上面代码中,看起来“aa.addChold(bb); //再次加入,仍然可以,对象bb仍然存在”,这给了我们对象仍然存在的错误判断,正因为这句话的存在对象才存在,如果没有这句,对象就自动被作为垃圾回收了?不存在删除对象的问题?

Poshidon 2008-7-10 09:15

“aa.addChold(bb); //再次加入,仍然可以,对象bb仍然存在”,这句话只是起到将bb所引用的对象加入到aa所引用的对象的显示列表中,于删除对象与否毫无干系。
举个例子:
var aa:Sprite = new Sprite;//这里声明了一个变量aa,内存里面创建了一个Sprite对象A,变量aa持有对A的引用,通过操作aa,达到了操作A的目的。
aa = new Sprite;//这里创建另一个Sprite对象B,并且将aa所执有的引用指向B,那么原来指向A的引用就不存在了。如果gc检测到确实没有引用指向对象A,那么A就满足了回收的条件,在下次回收过程中将被回收。
as3的gc工作原理是:判断一个对象有没有指向它的引用,没有就回收。
页: [1]
查看完整版本: cs3中如何删除对象?