Flex 中的ChartItemEvent 与TabNavigator的IndexChangeEvent异常
主要是代码结构如下: <mx:TabNavigator change="tabChanged(event)"> ??????????????? <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。 ? 分析原因就是因为外面的容器(TabNavigator )已经监听了一个事件(IndexChangedEvent),所以里面的另一个组件(<mx:ColumnChart>?selectionMode="single" )也会引起改变事件(ChartItemEvent),就是选择当前的柱状块,两者的事件类型是不一样,而且不能强制转换,所以报错了,查了一个Flex官网API: ? ?
?
? ? ? 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自己完成吧!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |