`
wzhelp
  • 浏览: 46398 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

flex模块加载问题

阅读更多
flex开发中将各个功能分解到模块中,但在加载各个模块的时候需要注意一下问题:
加载方法:
private function init():void
{
module = mx.modules.ModuleManager.getModule("UIModule/HR/Holiday/Config/frmHolidayMain.swf");
module.addEventListener(mx.events.ModuleEvent.READY,ready);
module.load();


// general=ModuleLoader(mx.managers.PopUpManager.createPopUp(this,ModuleLoader));
//
//           general.url="test3.swf";
//          
//           general.loadModule();
}
private function ready(e:ModuleEvent):void
{
var moduleInfo:IModuleInfo = e.target as IModuleInfo
var wind:MDIWindow = new MDIWindow();


wind.addChild(moduleInfo.factory.create() as DisplayObject);


testcanvas.windowManager.add(wind);

}
需要注意的一点是 module 对象的定义一定要定义为全局的否则ready事件是不能执行的。具体原因不知道,个人理解为到ready方法中无法找到module对象了


flex 装载多个module出现的问题Error #1034: 强制转换类型失败 收藏
摘自http://bzhang.iteye.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;           
           
             /*  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)  编辑  收藏 所属分类: jee 、ria 、工作笔记

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

在这里做个小记。

http://blog.csdn.net/yzsind/archive/2009/03/27/4031066.aspx
分享到:
评论
1 楼 cyl19880415 2010-09-05  
谢了!在你这里面让我找到了一点东西。

相关推荐

    Flex模块间的通讯和切换

    模块(Module)是创建大型Flex应用程序的一个解决方案,它允许你将你的用户接口分割成许多分散的有各自用途的小块。例如(下面出自Flex 2的文档),一个保险公司可能有数百个表单——针对于各个领域的,针对各种请求...

    Flex 加载 Module

    Flex 加载 Module 模块开发 利用客户端缓存 Module 降低交互时间 这是一个DEMO

    Flex4基于FluorineFx模块化系统框架

    使用最新vs2010、FlashBuilder4.5、FluorineFx搭建的web管理系统框架,实现了动态模块加载,FluorineFx数据交互。

    swfloader:swf加载器,用于在flex中加载swf文件。可用于组件模块化,加载然后反射得到相应类

    用于在flex中缓存加载swf文件。 可用于组件模块化加载。加载完成的组件,下次加载可直接从SWFCache中根据url获取相应内容,避免重复加载 单个加载方式 var item:SWFItem = new SWFItem(); item.url = "module/...

    FLEX3构建网络监控程序源码

    这是一个非常棒的flex3做的网络监控程序源码,实现自动全新排序 ESRIA网络监视器是一个演示应用程序,在多个视图中显示网络上的设备。 三个视图分别为网络拓扑,设备类型和网格。 每个设备显示实时数据使用 ...

    Flex企业应用开发实战源代码

    3.3.3 模块文件的加载 104 3.3.4 主应用和模块的交互 107 3.4 Flex库文件SWC 107 3.5 Flex编译模式、链接模式与RSL 109 3.5.1 使用系统RSL—Framework 110 3.5.2 其他的系统RSL 111 3.5.3 RSL的摘要 112 ...

    FLEX企业应用开发实战.part1

     3.3.3 模块文件的加载  3.3.4 主应用和模块的交互  3.4 Flex库文件SWC  3.5 Flex编译模式、链接模式与RSL  3.5.1 使用系统RSL—Framework  3.5.2 其他的系统RSL  3.5.3 RSL的摘要  3.5.4 使用私有...

    FLEX企业应用开发实战.part2

     3.3.3 模块文件的加载  3.3.4 主应用和模块的交互  3.4 Flex库文件SWC  3.5 Flex编译模式、链接模式与RSL  3.5.1 使用系统RSL—Framework  3.5.2 其他的系统RSL  3.5.3 RSL的摘要  3.5.4 使用私有...

    flex modules 中英文版

    模块(Module)是创建大型Flex应用程序的一个解决方案,它允许你将你的用户接口分割成许多分散的有各自用途的小块。例如(下面出自Flex 2的文档),一个保险公司可能有数百个表单——针对于各个领域的,针对各种请求...

    FLEX WebGame源码

    flex webgame源码 其中包括人物行走 地图动态加载等重要模块 非常适合FLEX WEBGAME 开发人员 提高技术 提高开发技巧 webgame的大概框架分层

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    move_base_flex:移动基础弹性

    提供了用于子模块计划,控制和恢复以及查询成本图的服务的操作。 该界面允许外部主管(例如SMACH或行为树)运行高度灵活和复杂的导航策略。 有关所有操作的综合结果和反馈信息,包括错误代码和来自已加载插件的...

    微信小程序-用小程序写的今日头条demo

    运行环境 开发工具:微信web开发者工具 版本: 微信web开发者工具 v0.12.130400 ...2、上啦加载更多,太过于灵敏,这个我猜测应该是小程序自身的问题。 3、新闻详情页面是一个网页,但是小程序不支持HT

    最新版vue前端面试题20230321整理

    10. 路路由的动态加载模块 11. 服务端渲染SSR 12. 介绍路路由的history 13. 介绍Redux数据流的流程 14. Redux如何实现多个组件之间的通信,多个组件使⽤用相同状态如何进⾏行行 管理理 15. 多个组件之间如何拆分各⾃...

    webgame网页游戏源码

    webgame源码 其中包括人物行走 地图动态加载等重要模块 非常适合FLEX WEBGAME 开发人员 提高技术 提高开发技巧 webgame的大概框架分层,是学习网页游戏开发非常好的资源!

    基于Vue 全家桶实现网易云音乐 WebApp

    基于 Vue(2.5) + vuex + vue-router + vue-axios +better-scroll + Scss + ES6 等开发一款移动端音乐 WebApp,UI 界面参考了安卓版的网易云音乐、flex 布局适配常见移动端。通过学习开发一个 Vue 全家桶项目,让自己...

    带文档的Cms v6.7.0源码20130702

    修正了弹出窗口时浏览器一直加载的问题 5.友情链接和投票调查增加了频道归属功能 2013-06-01(V6.6.0) 1.增加了搜索的排序功能 2.开通了修改邮箱的功能 3.整合了Discuz!NT 3.6.711双向同步 2013-04-28(V6.5.0) ...

    Css-Demo:css练习案例

    我的作品 PS:github pages加载网页有点慢,毕竟是免费的服务器,耐心等待个几秒哈!!!(移动端浏览) 桌游精灵3——一个完整的webApp,以bootstrap为基础满足更多不同的需求响应式的企业网站--demo展示1 响应式的...

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    ■基于FLex弹性布局重写前端(OA平台因要支持传统业务暂不涉及)。 ■提供全新的Bootstrap 4.0技术文档,并获得Bootstrap官方认同,访问http://code.z01.com/v4 ■前后端全面引入scss(sass)技术,与Bootstrap官方...

Global site tag (gtag.js) - Google Analytics