Flex4 加载模块Alert弹出框背景透明问题
来源:互联网 发布:三菱plc编程实例精解 编辑:程序博客网 时间:2024/06/05 08:16
先看下这篇文章
http://www.riadev.com/flex-thread-541-1-1.html
为什么在模块化应用中要让Application持有对PopUpManager的引用?
基本上做Flex模块化开发的朋友,都会碰到这个问题:如果你的Module处于Application当前域的子域,在Module中尝试使用PopUpManager,Menu,或Alert等被SystemManager顶级类管理的类(基本都是静态类,内部使用单例),那么会得到运行时错误。
如果你尝试去查找解决方案,那大部分人都会告诉你,需要让Application持有对这些管理类的引用,就是在Application中写下面的Hack Code:
这样做就可以消除错误,但我们会很好奇,产生这个错误的原因是什么呢?
官方API中对这个情况的解释很简单:对于PopUpManager这样的静态类所依赖的实例,如果先被Module调用,则Module就持有了这个实例,这样如果Application或其它Module尝试使用PopUpManager就会出错。
这里我们的疑问是,ApplicationDomain只是限制类定义的访问(父域不能访问子域的类定义),因为我们已经使用RSL机制,可以确保PopUpManager的相关类定义是被Application持有的,所以即使PopUpManager的实例存在于Module中,Application也是可以获取到的,那为什么PopUpManager还会报错呢?
真正的原因在这里:IFlexModuleFactory
- 对于Application,它的父容器是SystemManager,而SystemManager本身实现了IFlexModuleFactory接口,所以对于Application,moduleFactory指向了SystemManager
- 对于Module,如果未指定moduleFactory,则会使用自己的IFlexModuleFactory的一个实现类(这个类被编译器生成,比如[DashboardModule_mx_core_FlexModuleFactory]),也就是说,Module持有了自己的IFlexModuleFactory实现
然后就可以解释上面的那个问题,在Module使用PopUpManager时,如果PopUpManager还没有实例化,则基于自己的IFlexModuleFactory实现来实例化PopUpManager,也就是说,Module的IFlexModuleFactory实例持有了PopUpManager的实例;而当使用PopUpManager时,PopUpManager会尝试从SystemManager中获取PopUpManager的实例,注意SystemManager并不持有它的实例,于是返回为空,造成程序出错。
这样来看,API中的解释是正确的,但解释的不够深入,会造成我们的误解。希望本文能对存在此疑问的朋友有所帮助。
看完之后大家自己能解决吗?只要在你的主应用中加入Alert框的引用就可以了
private var myAlert:Alert;
- Flex4 加载模块Alert弹出框背景透明问题
- Flex4.5中Alert弹出框组建的基本应用
- android自定义dialog弹出框、透明背景
- 弹出框透明背景(超简单实现)
- JS alert() 弹出框乱码的问题
- Flex4中模块加载char
- React API模块之Alert弹出框详解及使用
- IE7下的浮动弹出框背景透明,背景为黑色改为透明
- android app最顶层弹出透明背景的弹框
- QWidget背景(透明)问题
- iframe背景透明问题
- QWidget背景(透明)问题
- iframe 背景透明问题
- QWidget背景(透明)问题
- 背景透明问题 rgba
- 自定义alert()弹出框
- Alert 弹出提示框
- flex 弹出框Alert
- [算法]学习算法之路
- 关于建站中CSS调用的问题
- python将excel数据导入到数据库中
- 高职高专计算机系列教材之一,根据教育部最新制定的《高职高专
- 黑马程序员---用类加载器的方式管理资源和配置文件
- Flex4 加载模块Alert弹出框背景透明问题
- 应该在什么时候使用Hadoop
- orcal sql分页
- 获得oracle存储过程以及函数的依赖对象
- usb server/虚拟化识别加密狗/集中管理加密狗/共享加密狗/远行连接加密狗
- 黑马程序员-java基础第3、4天-函数和数组
- 如何实现jQuery的Ajax文件上传
- vc 编译开关 使用详解
- MySQL外键约束