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()。
出现这种错误的原因在于 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()。
相关文章推荐
- 【Flex】Flex装载多个Module时,出现“TypeError: Error #1034: 强制转换类型失败”的解决方法
- flex 装载多个module出现: 强制转换类型失败
- flex 装载多个module出现的问题Error #1034: 强制转换类型失败
- TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill。
- blazeds TypeError: Error #1034: 强制转换类型失败
- TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::Event 转换为 MyEvent
- blazeds TypeError: Error #1034: 强制转换类型失败
- Flex TypeError: Error #1034: 类型转换失败
- TypeError: Error #1034: 强制转换类型失败:无法将 ...
- TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array。
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.managers::HistoryManagerImpl@65a76c9 转换为 mx.managers.IHistor
- TypeError: Error #1034: 强制转换类型失败:无法将 Object@2555f679 转换为 mx.messaging.messages.IMessage。
- Flash Professional 报错 TypeError: Error #1034: 强制转换类型失败:无法将 xxxx@zzzz 转换为 yyy
- TypeError: Error #1034: 强制转换类型失败:无法将 global@189ac0d1 转换为 mx.core.IFlexDisplayObject。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::BitmapData@79aea11 转换为 flash.display.Bitmap
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。