有关弱引用的应用
当注册事件时把函数的引用传递给addEventListener(),如果这个函数不存在任何引用,并且使用了弱引用
垃圾回收器就会把这个函数删除,根据这句话我做了以下一个验证:
this.traceMsg=function(e:Event):void
{
trace("事件类型="+e.type)
}
var sp:Sprite=new Sprite()
stage.addChild(sp)
sp.addEventListener(Event.ENTER_FRAME,this.traceMsg,false,0,true)//使用弱引用
my_btn.addEventListener(MouseEvent.CLICK,func)
function func(e:MouseEvent):void
{
trace(this.traceMsg)
sp.removeEventListener(Event.ENTER_FRAME,this.traceMsg)
trace(this.traceMsg)
}
输出结果为:
事件类型=enterFrame
事件类型=enterFrame
事件类型=enterFrame
事件类型=enterFrame
function Function() {}
function Function() {}
第二次trace(this.traceMsg)是函数还是存在了,这跟弱引用没有太大联系,而且弱引用不配removeEventListener也可以被回收。
只是你func这个始终都要执行完了才结束,你的removeEventListener根本不可能阻断后面的trace继续进行。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |