Flex自动回收导致监听不到ModuleEvent.READY事件

Flex中可以动态载入模块,以达到延迟加载,减小主程序体积的效果。通常可以使用如下代码:

var iminfo:IModuleInfo = ModuleManager.getModule("****.swf"); 
 //    _moduleInfo=iminfo;
     iminfo.addEventListener( ModuleEvent.READY,onModuleLoad);

  iminfo.load(ApplicationDomain.currentDomain);

很多人会发现无法捕获onModuleLoad事件,无法触发onModuleLoad。今天就遇到了这个奇怪的问题,第一次load无法触发,但第二次load可以。所幸在网上找到了答案,原来是iminfo对象是局部变量,被回收了。

解决方法是定义一个类变量_moduleInfo,引用iminfo,这样iminfo就不会被释放了。

虽说这不算是FLEX API的bug,但毕竟很容易出错,相信应该还有更好的设计。

上一篇:《C++ Primer Plus》第16章 string类和标准模板库 学习笔记


下一篇:PHP 实现精确统计在线人数功能