您的位置:首页 > 其它

Flex加载多个Module时出现“TypeError: Error #1034: 强制转换类型失败”错误

2010-06-13 11:06 453 查看
使用Accodian加载不同Module时,使用combobox时切换选项时,出现错误TypeError: Error #1034: 强制转换类型失败

出现这种错误的原因在于 ModuleLoader shared code problem 当Module中使用managers时(如PopUpManager,DragManager, HistoryManager等)则可能出现这个问题,

当application里在loader之前没有引入这些manager的引用时,manager的方法是静态方法,整个应用程序中创建了一个该manager接口的singleton实例, 但module仅在自己的 Application domain中使用该单例, 当多个module使用同一个单例manager且main application没有使用时,就会出现这个空对象引用问题。第一个引入某manager的module不能将该manager接口的 singleton跟其他module共享,其他module调用该Manager的方法时,应用程序不会再创建该manager接口的实例,这个 module就无法引用到该manager接口的实例,就出现了空对象引用问题.

解决方法:在ModuleLoader 的creationComplete方法中加入如下代码: moduleLoader.applicationDomain = ApplicationDomain.currentDomain; 就可以在Application里切换多个module而不需要在Application里明文引用单例manager声明。

另外,推荐在moduleloader做切换的时候,加上:moduleLoader.unloadModule再做moduleLoader.loadModule()。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐