加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 中的ChartItemEvent 与TabNavigator的IndexChangeEvent异常

发布时间:2020-12-15 03:47:10 所属栏目:百科 来源:网络整理
导读:主要是代码结构如下: mx:TabNavigator change ="tabChanged(event)" ??????????s:NavigatorContent? ??????????????? mx:ColumnChart? selectionMode="single" itemRollOverColor="green" showDataTips="true" ????????????????.....???????? ...... ??????

主要是代码结构如下:

<mx:TabNavigator change="tabChanged(event)">
??????????<s:NavigatorContent?>

??????????????? <mx:ColumnChart?selectionMode="single" itemRollOverColor="green" showDataTips="true">

????????????????.....???????? ......

?????????????? <mx:ColumnChart?>

???????? </s:NavigatorContent?>

</mx:TabNavigator>

---------------------------------------------------------------------------------------

tabChanged函数声明如下

public function tabChanged(event:IndexChangedEvent):void
?{

}

?

TypeError: Error #1034: 强制转换类型失败:无法将 mx.charts.events::ChartItemEvent@5e19fa51 转换为 mx.events.IndexChangedEvent。
?at flash.events::EventDispatcher/dispatchEventFunction()
?at flash.events::EventDispatcher/dispatchEvent()
?at mx.core::UIComponent/dispatchEvent()
?at mx.charts.chartClasses::ChartBase/http://www.adobe.com/2006/flex/mx/internal::selectItem()
?at mx.charts.chartClasses::ChartBase/processRollEvents()
?at mx.charts.chartClasses::ChartBase/mouseDownHandler()
?at flash.events::EventDispatcher/dispatchEventFunction()
?at flash.events::EventDispatcher/dispatchEvent()
?at mx.core::UIComponent/dispatchEvent()
?at mx.managers::SystemManager/mouseEventHandler()[E:dev4.yframeworksprojectsframeworksrcmxmanagersSystemManager.as:2918]

?

分析原因就是因为外面的容器(TabNavigator )已经监听了一个事件(IndexChangedEvent),所以里面的另一个组件(<mx:ColumnChart>?selectionMode="single" )也会引起改变事件(ChartItemEvent),就是选择当前的柱状块,两者的事件类型是不一样,而且不能强制转换,所以报错了,查了一个Flex官网API:

?

?

Package mx.events
Class public? class? IndexChangedEvent
Inheritance IndexChangedEvent?

Event

Object

?

Package mx.charts.events
Class public? class? ChartItemEvent
Inheritance ChartItemEvent?

MouseEvent

Event

Object

?

?

?

IndexChangedEvent主要是直接继承自Event,而ChartItemEvent继承自MouseEvent,然后再继承自Event,所以:可以考虑把函数中的IndexChangedEvent换成Event,把change="tabChanged(event)",换成tabIndexChange="tabChanged(event)"

public function tabChanged(event:Event):void
?{

}

<mx:TabNavigator tabIndexchange="tabChanged(event)">

这样无论什么事件都能转型成Event,剩下的事情,让Flex API自己完成吧!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读