FLEX:multiple moduleloader occur #1034 error

本文解决Flex应用中通过树形菜单加载多个不同模块时出现的TypeError#1034错误问题,涉及PopUpManager和DragManager等manager的使用,提供了解决方案并分析了问题原因。
需求背景
通过树形菜单加载多个不同的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仅在自己的Applicationdomain中使用该单例,当多个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 钩子 阅读(7279) 评论(1)   编辑   收藏 所属分类: jeeria工作笔记

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

在这里做个小记。   回复   更多评论
基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
### 常见错误分析与修复方法 “expected an expression” 错误通常表明编译器在代码中发现了一个不符合语法要求的地方,特别是在表达式或语句的构造不完整或使用了不正确的操作符时。以下是一些常见的原因和对应的解决方法。 #### 1. **缺少操作数的操作符** 在某些情况下,操作符没有对应的操作数会导致此错误。例如,在赋值过程中使用了未定义行为的操作符: ```c int x = 10; int y = +; // 缺少操作数 ``` 解决方法是确保每个操作符都有适当的操作数[^1]。例如,将上述代码修改为: ```c int x = 10; int y = +x; // 正确使用操作符 ``` #### 2. **函数调用参数不匹配** 如果函数调用时提供的参数与函数定义不匹配,也会导致类似的错误。例如,调用一个不存在的 `swap` 函数: ```c if(acnt == 2) swap(ans.size()-2, ans.size()-3); ``` 解决方法包括检查是否有声明或定义的 `swap` 函数,并且确认其参数类型和数量是否匹配[^3]。 #### 3. **结构体成员名称错误** 当访问结构体成员时拼写错误,也可能触发此类错误。例如: ```c struct stat *P; return P->st_blocksize*2; // 结构体中不存在 st_blocksize 成员 ``` 修正方法是核对结构体定义,确保成员名正确无误。在这个例子中,应该使用 `st_blksize` 而不是 `st_blocksize` [^2]。 #### 4. **预处理指令问题** 有时,宏定义或条件编译的问题也可能会导致预期表达式的错误。例如: ```c #if upper install occur error: _comp_initialize : command not found ``` 应检查所有预处理指令是否符合规范,避免非法字符或格式错误。 #### 5. **调试信息相关问题** 虽然不太常见,但在处理包含复杂调试信息的程序时,可能遇到特定工具链相关的错误。对于这类问题,可以尝试重新安装相关开发工具包以解决问题,如重新安装 `bash-completion` 或者使用专门工具查看 ELF 文件中的调试信息[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值