您的位置:首页 > 其它

flex偶尔监听不到事件的原因

2011-11-28 15:25 169 查看
首先明确一个原理:函数中的变量都是局部变量,会被GC垃圾回收

因此,在函数中给局部变量添加事件监听,会概率性的出现监听不到事件返回的情况。

近期在做flex批量文件上传时,在一个函数里遍历FileReferenceList中的FileReference,然后动态给FileReference添加Event.COMPLETE事件,结果发现在直接运行时根本不会进入到我添加的事件监听中,但是一步步DEBUG的话就可以。

代码如下:

/**
* 上传文件
*/
public function upload():void {
this.batch = UIDUtil.createUID();
var file:FileReference = this.fileList.fileList.shift() as FileReference;
file.addEventListener(Event.COMPLETE, completeHandler);
file.load();
waitUpload();
}


因为是通过局部变量file动态添加监听,所以会被GC垃圾回收,就监听不到了

定义一个私有变量,来进行监听即可了

/**
* 上传文件
*/
public function upload():void {
this.batch = UIDUtil.createUID();
this.currentFile = this.fileList.fileList.shift() as FileReference;
this.currentFile.addEventListener(Event.COMPLETE, completeHandler);
this.currentFile.load();
waitUpload();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: