`
bzhang
  • 浏览: 254995 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

flex 装载多个module出现的问题

    博客分类:
  • FLEX
阅读更多
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;            
            
            
/*  Create dummy variables.  */
            
// 避免出现:无法将 mx.managers::PopUpManagerImpl@52a09a1 转换为 mx.managers.IPopUpManager 错误
             private  var dragManager : DragManager;
            
private  var popUpManager : 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范围内没有使用到的"木偶变量",从代码可读性上来说不是很好。有其他比较好的解决方案的同学麻烦请告之下,:)


posted on 2008-11-22 17:33 钩子 阅读(1118) 评论(1)  编辑  收藏 所属分类: jeeria工作笔记

<!---->

<noscript type="text/javascript"> //<![CDATA[ Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1')); Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90); //]]> </noscript>

Feedback

#   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().

在这里做个小记。  回复   更多评论

分享到:
评论

相关推荐

    Flex Module间通信

    Flex模块间通信是Adobe Flex应用程序开发中的一个重要概念,它允许不同模块之间共享数据、功能和服务。在大型项目中,模块化设计有助于代码组织和管理,提高代码复用性,同时降低复杂度。本示例将深入讲解如何在Flex...

    flex一个动态添加卸载Module的例子

    在这个例子中,我们将深入探讨如何在Flex中动态添加和卸载Module。 模块(Module)是Flex应用程序的一个重要组成部分,它允许我们将大项目分解为更小、更易于管理的部分。动态加载和卸载Module是优化应用程序性能和...

    Flex 基于Module模块的开发资料完整版

    - **多界面效果**:在 Flex 应用中,可以创建多个 Module 实现界面切换。主界面通常是一个 Application 类型的组件,包含一个或多个 ModuleLoader 组件,用于动态加载不同的界面模块。 3. **模块化的优点** - **...

    FlexModule_j2ee Flex JAVA

    不要以为我要5分很高,这个绝对是官网资源,其中包含各位最一直在寻找却找不到即使找到也不好用的 flex-bootstrap-jsp.jar flex-bootstrap.jar flex-webtier-jsp.jar flex-webtier.jar

    FlexModule_j2ee Flex 与JSP 整合用的.jar 文件

    FlexModule_j2ee 是一个专为整合Flex与JSP应用设计的组件库,它提供了一个.jar文件,使得在Java服务器端(JSP)与客户端的Adobe Flex之间建立交互变得更加便捷。Flex是一种强大的富互联网应用程序(RIA)开发技术,...

    flex中moduleLoader加载module时传递参数源代码

    在Flex开发中,`ModuleLoader` 是一个关键组件,它允许开发者动态地加载MX模块(即Flex模块,独立的SWF文件)。`ModuleLoader` 的主要功能是将模块的加载过程与应用程序的其余部分分离,这有助于实现代码的模块化和...

    Flex批量管理Modules

    在Flex工程中添加Module的方法是:在FlashBuilder中右键工程目录-&gt;Porperties-&gt;Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...

    FlexModule_j2ee.part1

    the Flex 3 compiler module for J2EE application servers.

    FlexModule_j2ee.zip

    FlexModule_j2ee.zip是一个压缩包,包含了将Flex前端技术集成到JSP(JavaServer Pages)和J2EE(Java 2 Platform, Enterprise Edition)后端环境中的示例工程。这个项目旨在展示如何在传统的Web应用中嵌入富互联网...

    flex module ppt

    Flex Module 是一种技术,它允许开发者将应用划分为多个模块,每个模块包含独立的功能或组件。这样做可以减少主应用程序的大小,使得加载和启动时间更短。同时,模块化还能促进代码的组织和维护,因为每个模块都有...

    flex dateFeild 显示选择多个不连续日期

    实用flex日期控件,原创,适用开发人员使用datefeild控件去除不需要日期时适用

    Adobe官方Flex3 Module模块设计经典资料(附源代码)

    在Flex3的Module模块程序设计中,在Google中进行了大量的资料查找,综合比较各个资源后,将我认为最有价值的资料放在这里(全英文的)。 下载包中包括: 1、Adobe Creating Mudule Application.pdf 2、相似例子的源...

    flex 多个聊天实例

    标题“flex 多个聊天实例”表明这是一篇关于使用Adobe Flex技术实现多个聊天实例的教程或案例分享。Flex是一种开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA),尤其适合创建动态和交互式的Web...

    10多个FLex 3 的源码(整理)

    在这个“10多个Flex 3 的源码(整理)”中,我们可以深入研究Flex 3的核心特性,以及如何在实际项目中应用它们。 首先,DataGrid组件是Flex 3中用于展示表格数据的关键组件,它允许用户以交互方式查看和操作大量...

    JSP嵌入一个或多个Flex

    "FlexModule_j2ee"可能是一个特定的库或者项目结构,它提供了在J2EE环境中集成Flex模块的方法。这通常包括Flex编译后的SWF文件、所需的ActionScript库以及与JSP通信的AMF(Action Message Format)服务。 3. **AMF...

    避免Flex RSL重复load 提高module加载性能的swc

    RSLs是一组预编译的库,包含了常见的Flex组件和类,允许多个应用程序共享这些资源,减少网络传输的数据量。然而,如果不正确地管理RSL加载,可能会导致重复加载,从而影响应用程序的启动速度和整体性能。本文将深入...

    Flex编译错误码总结

    Flex编译错误码总结 ...通过查阅这份资料,开发者可以更好地理解Flex开发中的常见问题,并提高问题解决的效率。在实际工作中,不断积累和学习这些错误码,将有助于提升Flex编程技能,减少开发过程中的困扰。

    Flex 加载 Module

    Flex加载Module是Adobe Flex框架中的一个关键特性,它允许开发者将大型应用程序分解为多个模块,每个模块都可以独立加载和卸载。这样的设计提高了应用程序的响应速度,降低了初始加载时间,并且使得用户能够在需要时...

    Flex使用问题汇总

    当Flex中的验证控件出现错误时,其默认样式可能不符合设计需求。要修改这个样式,可以在自定义的CSS文件中重写`.errorTip`类。例如,将默认的`fontSize`从9改为12,以便更好地显示中文字体: ```css .errorTip {...

    Flex动态装载单选树

    包中的文件1.RadioTree,2.SingleRadioTree, 3.RadioTreeNode,4.RadioTreeRenderer,1为支持联表查询的单选树(已封装),第一张表查询的为非叶子节点,第...用户只要配置后台java参数即可,有问题联系QQ:845359787,小陈

Global site tag (gtag.js) - Google Analytics