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,但毕竟很容易出错,相信应该还有更好的设计。