flex偶尔监听不到事件的原因
发布时间:2020-12-15 01:02:19 所属栏目:百科 来源:网络整理
导读:首先明确一个原理:函数中的变量都是局部变量,会被GC垃圾回收 因此,在函数中给局部变量添加事件监听,会概率性的出现监听不到事件返回的情况。 近期在做flex批量文件上传时,在一个函数里遍历FileReferenceList中的FileReference,然后动态给FileReference
首先明确一个原理:函数中的变量都是局部变量,会被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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |