摘自http://bzhang.javaeye.com/blog/322148
TypeError: Error #1034: 强制转换类型失败:无法将 Object@1aee90b1 转换为 mx.messaging.messages.IMessage。
需求背景 :
通过树形菜单加载多个不同的module。
问题现象 :module页面存在拖动,Popup,Alert或者colorpicker出现错误信息:
TypeError: Error #1034: 强制转换类型失败:无法将 mx.managers::PopUpManagerImpl@7155ac1 转换为 mx.managers.IPopUpManager。
解决方案 :
在Application加入如下代码引用:
<!----> < mx:Script >
<! [CDATA[
import mx.managers.DragManager;
import mx.managers.IPopUpManager;
/* Createdummyvariables. */
// 避免出现:无法将mx.managers::PopUpManagerImpl@52a09a1转换为mx.managers.IPopUpManager错误
private vardragManager:DragManager;
private varpopUpManager:IPopUpManager;
//process....
]]>
</mx:Script>
问题原因分析 :
属于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接口的实例,就出现了空对象引用问题.
参考资料:Flex sdk源码。
目前在Application创建了些Application范围内没有使用到的"木偶变量",从代码可读性上来说不是很好。有其他比较好的解决方案的同学麻烦请告之下,:)
<!---->
<noscript type="text/javascript"> //<![CDATA[ Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1')); Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90); //]]> </noscript>
# re: FLEX:multiple moduleloader occur #1034 error
2008-11-24 10:14 钩子
同事推荐了个更好的办法:
在ModuleLoader 的creationComplete方法中加入如下代码:
moduleLoader.applicationDomain = ApplicationDomain.currentDomain;
就可以在Application里切换多个module而不需要在Application里明文引用单例manager声明。比我上面所说的方法更好的能解决问题而且,代码可读性更好。
另外,推荐在moduleloader做切换的时候,加上:
moduleLoader.unloadModule再做moduleLoader.loadModule().
在这里做个小记。
分享到:
相关推荐
网上的方法很多,我看了好多,但是就是不管用,我的情况是,在程序没发布时,直接运行没错误,但是当发布时,访问就错了,提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 ...
### FLEX强制类型转换 在Flex开发中,类型转换是一个非常重要的概念,它涉及到如何将一个类型的对象转换为另一个类型的对象。特别是在ActionScript 3(AS3)中,强制类型转换是实现某些功能的关键手段之一。本文将...
在深入探讨Flex特效学习中的行为与特效类组件之前,我们先来理解一下Flex的基本概念。Flex是一种用于构建高性能、跨平台的RIA(Rich Internet Applications)的开源框架,它基于Adobe Flash平台,允许开发者创建出既...
解决此类问题需仔细检查方法签名,并理解Flex AS3数据类型与Fluorine数据类型之间的转换规则。 #### 4. HTTP Status 404 错误信息:“NetConnection.Call.Failed:HTTP:Status404:url:'虚拟主机的域名/子目录/...
要解决这个问题,开发者可以使用Flex SDK中的调试工具,如在`BindingManager.as`和`Binding.as`类中查找错误。通过设置断点和检查绑定对象的属性,可以发现导致绑定失败的原因。此外,`BindingManager`类的`...
此属性指定了 Flex Video 组件所使用的混合模式类型,例如 “normal”、“add” 或 “subtract”。 ##### 4. cacheAsBitmap: Boolean 如果设置为 true,则 Flex Video 组件将以位图形式缓存,以提高渲染性能。 ##...
### Flex 数据绑定详解 #### 一、数据绑定概念与重要性 数据绑定是Flex和Adobe AIR应用程序开发中的关键概念之一,其主要目的是实现不同对象之间的数据传输与同步更新。通过数据绑定,开发者能够轻松地在用户界面...
通过将--strict=true参数添加到编译命令中,可以启用严格的编译模式,这有助于捕获潜在的类型错误和其他编程问题。此外,--keep-generated-actionscript选项可用于保留编译过程中生成的ActionScript文件,这对于调试...
- **多界面效果**:在 Flex 应用中,可以创建多个 Module 实现界面切换。主界面通常是一个 Application 类型的组件,包含一个或多个 ModuleLoader 组件,用于动态加载不同的界面模块。 3. **模块化的优点** - **...
在这个例子中,我们将深入探讨如何在Flex中动态添加和卸载Module。 模块(Module)是Flex应用程序的一个重要组成部分,它允许我们将大项目分解为更小、更易于管理的部分。动态加载和卸载Module是优化应用程序性能和...
Flex模块间通信是Adobe Flex应用程序开发中的一个重要概念,它允许不同模块之间共享数据、功能和服务。在大型项目中,模块化设计有助于代码组织和管理,提高代码复用性,同时降低复杂度。本示例将深入讲解如何在Flex...
### 错误一:`/usr/include/gnu/stubs.h:7:27:error: gnu/stubs-32.h: No such file or directory` #### 解决方案: 此错误通常表明系统缺少i386架构的库文件支持。可以通过安装`libc6-dev-i386`来解决这一问题。 `...
当试图将一种类型转换为不相关的另一种类型时,会出现此错误。在进行类型转换时,确保类型之间有继承关系或使用适当的转换函数。 4. Error 1118: Invalid override 如果重写父类的方法时,签名不匹配或访问级别不...
FlexModule_j2ee 是一个专为整合Flex与JSP应用设计的组件库,它提供了一个.jar文件,使得在Java服务器端(JSP)与客户端的Adobe Flex之间建立交互变得更加便捷。Flex是一种强大的富互联网应用程序(RIA)开发技术,...
在Flex工程中添加Module的方法是:在FlashBuilder中右键工程目录->Porperties->Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...
- **书籍结构**:本书分为多个章节,每个章节都围绕着特定的主题展开,如Flex基础、ActionScript 3.0编程、BlazeDS集成等。 2. **Flex 3 概览** - **Flex简介**:介绍了Flex的发展历程、核心组件和架构,以及它...
接下来的错误代码涵盖了更多关于编译器、解释器、类型转换、作用域和方法调用等方面的问题。虽然这里没有详细列出每一个错误的具体描述,但我们可以总结一些通用的解决方案: 1. **仔细阅读错误消息**:大多数情况...
### 理解 Flex_itemRenderer #### 一、Flex_itemRenderer 概述 Flex_itemRenderer 是 Flex 框架中的一个重要概念,它主要用于定义列表、数据网格等控件中的每一项是如何呈现的。通过自定义 itemRenderer,开发者...
- **Flex 3**: Flex 3 是 Flex 框架的一个版本,引入了多项新特性和改进。 - **Flex Builder**: 一款基于 Eclipse 的集成开发环境(IDE),专为 Flex 和 Flash 开发设计。 - **安装步骤**: - 下载 Flex SDK 和 Flex...
在Flex中处理文件上传,特别是上传多个文件,是一个常见的需求,特别是在构建支持用户上传大量数据的应用程序时。 在Flex中实现多文件上传,首先需要理解FileReference类。FileReference是Flash Player提供的一个...