首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex异常集合

2012-11-01 
Flex错误集合C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.2.0\frameworks\locale\en_US路径下

Flex错误集合



C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.2.0\frameworks\locale\en_US  路径下缺少*_rb文件 2 楼 csdn_zuoqiang 2010-10-08   强制转换类型失败:无法将 mx.managers::DragManagerImpl@7833851 转换为 mx.managers.

遇到了如下的错误:
TypeError: Error #1034: 强制转换类型失败:无法将 mx.managers::DragManagerImpl@7833851 转换为 mx.managers.IDragManager。
    at mx.managers::DragManager$/get impl()[C:\autobuild\3.3.0\frameworks\projects\framework\src\mx\managers\DragManager.as:152]
    at mx.managers::DragManager$/get isDragging()[C:\autobuild\3.3.0\frameworks\projects\framework\src\mx\managers\DragManager.as:187]
    at mx.controls.listClasses::ListBase/dragScroll()[C:\autobuild\3.3.0\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7154]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at SetIntervalTimer/onTimer()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()

加载卸载flex module触发的DragManager的错误,在主application里面声明了一个moduleLoader用来加载模块,放置了两个按钮来控制重复加载卸载,按下第一个按钮加载模块,按下另外一个按钮时卸载模块,加载使用moduleLoader的load方法,卸载使用 unloadModule()方法,模块里放置了一个list,测试过程中发现,当重新加载模块,也就是执行了一次unloadModule方法然后按第一个按钮重新加载模块,这个时候如果去点击list里面任何一行都会出现如上的错误,解决的办法很简单,就是在主应用里面加上如下两句:
import mx.managers.DragManager;
private var dragManager:DragManager;
转载另一个解决办法:

    这属于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, 讲得很详细

    第二个是答案是类似的:

    Hello following code in your main application

            import mx.Managers.*;
            private var _dragManager:DragManager;
            private var _historyManager:HistoryManager;
            private var _popupManager:PopUpManager;
    

    -reply by Pradip Jadhav

引用地址:http://uh.9ria.com/space.php?uid=778&do=blog&id=3429 3 楼 csdn_zuoqiang 2010-10-13   1037包不能嵌套

修改引用as文件的格式为:<mx:Script>import asFile.LoadModule.LoadBody</mx:Script>

热点排行