flex偶尔监听不到事件的原因
2011-11-28 15:25
169 查看
首先明确一个原理:函数中的变量都是局部变量,会被GC垃圾回收
因此,在函数中给局部变量添加事件监听,会概率性的出现监听不到事件返回的情况。
近期在做flex批量文件上传时,在一个函数里遍历FileReferenceList中的FileReference,然后动态给FileReference添加Event.COMPLETE事件,结果发现在直接运行时根本不会进入到我添加的事件监听中,但是一步步DEBUG的话就可以。
代码如下:
因为是通过局部变量file动态添加监听,所以会被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(); }
相关文章推荐
- flex 添加带参数的监听事件
- as3.0 监听不到事件的问题
- backbone页面重绘事件监听不到解决方案 | Jquery Ajax动态加载模版 backbone监听不到事件
- SurfaceView监听不到MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP事件的解决办法
- Flex中的数据绑定(Data Binding)3:change事件及监听
- Flex 按钮同时监听单击和双击事件
- Flex编程注意之自动获取焦点、监听全局键盘事件
- flex键盘监听事件
- flex事件监听会叠加
- Flex编程注意之自动获取焦点、监听全局键盘事件
- Flex之旅:第一部分:flex必备基础知识积累(1)---监听键盘事件的注意事项
- flex 事件 一处分发,任意监听
- Android 给view 设置setSystemUiVisibility 之后,每次点击事件监听不到
- [置顶] flex4事件监听与自定义事件分发(三)
- Flex 自动获取焦点 监听全局键盘事件
- Flex学习--为一个事件建立多个监听
- FLEX实践—模拟Application与Module间的事件监听
- Pushlet 客户端监听不到事件
- ViewPager 丢失监听事件的原因之一
- 修改Dialog属性后监听不到onBackPress事件