表现:
使用ModuleManager去加载一个Module的时候, 所有的事件都激发不了.
代码:
- var testModule:IModuleInfo = ModuleManager.getModule('modules/pub/User.swf');
- testModule.addEventListener(ModuleEvent.READY,onModuleReady);
- testModule.addEventListener(ModuleEvent.SETUP, onModuleSetup);
- testModule.addEventListener(ModuleEvent.PROGRESS,onModuleLoading);
- testModule.load();
打个赌,
ModuleEvent里所有的事件都不会被激发.
原因:
在
addEventListener之后, testModule的Event Listeners就可能被GC了.
解决:
不要声明局部IModuleInfo对象.
相关链接:
http://bugs.adobe.com/jira/browse/SDK-14021
https://bugs.adobe.com/jira/browse/SDK-11389
Gaurav Jain 同学说:
"References to IModuleInfo must be maintained to keep the event listeneres alive. If the IModuleInfo is defined in function local scope the event listeners may get garbage collected. "