枫
Flex 多模块切换时1034 错误的处理版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://canyousee.blogbus.com/logs/30984959.html
在 主 application 里写入
import mx.managers.IPopUpManager;
private var ipopUpManager:IPopUpManager;或
加上moduleLoader.applicationDomain = ApplicationDomain.currentDomain;
目的就是为了让主程序载入缺少了类,避免module切换时类的丢失
这属于Module的共享代码问题(shared code),
当Module中使用managers时(如PopUpManager,DragManager, HistoryManager)容易出现这个问题,
manager的方法都是静态方法,整个应用程序中创建了一个该manager接口的singleton,
但module仅在自己的Application domain中使用该singleton, 当多个module使用同一个singleton且main
application没有使用时,就会出现这个空对象引用问题:首先引入某manager的module不能将该manager接口的singleton跟其
他module共享,其他module调用该Manager的方法时,应用程序不会再创建该manager接口的实例,这个module就无法引用到该manager接口的实例,就出现了空对象引用问题,可以参考Flex的源码。
默认情况下,Accordion和TabNavigator的 historyManagementEnabled =
true;而ViewStack的historyManagementEnabled = false;
所以使用TabNavigator和Accordion时要注意HistoryManager的共享代码问题。另,仅一个module使用HistoryManager时,卸载之后又加载该module也会出现该问题,说明第二次加载时相当于一个新的module了。
一个解决办法:
在main application 中引入相关manager,可以通过在main application中申明manager的引用即可,如:
import mx.managers.HistoryManager;
var historyManager:HistoryManager;
其他manager类似。
还可以将共享代码作为module加载到main applicaiton的application domain,具体讲解可以参考Alex
Harui的ppt:
http://blogs.adobe.com/aharui/presentations/ 下面关于module的presentation, 讲得很详细。
随机文章:
PureMVC胡诌 2008-08-01Flex中Script编写注意 2008-07-31Java序列化之注意点 2007-07-06meta属性 2006-10-30Domino 如何外载 Tomcat 2006-10-16
收藏到:Del.icio.us








