Flex TypeError: Error #1034: 类型转换失败
来源:互联网 发布:法国帅哥知乎 编辑:程序博客网 时间:2024/05/21 11:28
TypeError: Error #1034: 強制型変換に失敗しました。jp.co.nec.necst.pi.ap2web::TestEvent@1645ee79 を jp.co.nec.necst.pi.ap2web.TestEvent に変換できません。
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:/dev/3.1.0/frameworks/projects/framework/src/mx/core/UIComponent.as:9156]
at UserDetail/navToUserSet()[D:/program/eclipse/workspace/netboard/flex_src/UserDetail.mxml:190]
at UserDetail/___UserDetail_Button3_click()[D:/program/eclipse/workspace/netboard/flex_src/UserDetail.mxml:305]
这两天做flex碰到上面这个问题,主要是Flex模块通过事件传值时发生了这个错误,调试了半天发现dispatchEvent(event)的时候出现,
但一直找不到解决办法,TestEvent是自己定义的事件,自己转换自己还转换不了,郁闷到挂!
后来无奈换了另一种方法传值,成功传值,但是点下拉框时又发生DragManagerImpl@12631a61转换为 mx.managers.IDragManager报错,上Google搜索了下,找到了解决办法,发现同我前一个问题类似,于是用同样
方法,一试果然成功。
以下是解决办法:
在主应用(Application)里面加上
import mx.managers.DragManager;
private var dragManager:DragManager;
这两句就可以解决问题。至于为什么会出现这样的情况,在网上找到别人的解释,以下是转自google一个flex 讨论组别人的回答(http: //groups.google.com/group/riadev/tree/browse_frm/month/2007-05/5eeebf64e4926c45? rnum=11&_done=%2Fgroup%2Friadev%2Fbrowse_frm%2Fmonth%2F2007-05%3F)
QUOTE:
这属于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
于是在主应用(Application)里面加上以下两句就OK了:
import jp.co.nec.necst.pi.ap2web.TestEvent;
private var testEvent:TestEvent;
为毛啊,为毛困扰了俺这么久的问题这么简单就能解决,为毛啊!
- Flex TypeError: Error #1034: 类型转换失败
- Flex加载多个Module时出现“TypeError: Error #1034: 强制转换类型失败”错误
- 【Flex】Flex装载多个Module时,出现“TypeError: Error #1034: 强制转换类型失败”的解决方法
- TypeError: Error #1034: 強制类型转换失败--解决之道
- TypeError: Error #1034: 强制转换类型失败:无法将 ...
- blazeds TypeError: Error #1034: 强制转换类型失败
- TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill。
- TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array。
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.utils::ObjectProxy@32b2c11 转换为 mx.collections.ArrayCollection。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::BitmapData@79aea11 转换为 flash.display.Bitmap
- TypeError: Error #1034: 强制转换类型失败:无法将 global@189ac0d1 转换为 mx.core.IFlexDisplayObject。
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.managers::HistoryManagerImpl@65a76c9 转换为 mx.managers.IHistor
- TypeError: Error #1034: 强制转换类型失败:无法将 Object@2555f679 转换为 mx.messaging.messages.IMessage。
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。
- flex 装载多个module出现的问题Error #1034: 强制转换类型失败
- Flex 强制转换类型失败:
- Flex程序TypeError: Error #1034: Type Coercion failed: cannot convert
- SQL Server 2000数据库 [置疑] 的解决方法
- java的原子操作和volatile
- 基础代码汇总整理 for NOIP 2009 修订版(下)
- flex外部自定义组件TitleWindow对话框与主程序之间的通信
- 大型网站架构演变和知识体系
- Flex TypeError: Error #1034: 类型转换失败
- api com 串口编程的函数资料
- ajax 我写的一段代码
- 构建高性能的MYSQL数据库(二) 把那些瓶颈给找出来
- org.hibernate.TransientObjectException: object references an unsaved transient instance
- 开通
- SMSC
- javascript XMLHttpRequest.send() 方法
- MySql 判断汉字、日期、数字的函数