你好标签栏支持项目点击事件。但是 spark tabBar 不支持 itemClick 事件。
有没有办法在 SPARK TABBAR 中监听 itemclick 事件
谢谢大家
你好标签栏支持项目点击事件。但是 spark tabBar 不支持 itemClick 事件。
有没有办法在 SPARK TABBAR 中监听 itemclick 事件
谢谢大家
从 ListBase 继承的 Spark 组件不再调度 ItemClick 事件。不过,您可以使用 IndexChangeEvent事件。它有一个属性newIndex
可以告诉您哪个是新选择的项目(或在这种特殊情况下的选项卡)。
<s:TabBar dataProvider="{dp}" change="trace('selected: ' + event.newIndex)" />
与旧的 ItemClick 的一大区别是,仅当所选项目实际更改时(而不是单击它时)才调度此事件。如果您真的想要返回 ItemClick 的行为,您可以创建一个调度 ItemClick 事件的自定义 ItemRenderer。
如果您想对每次点击做出反应,有几种方法。这是其中的两个:
1./ 创建一个调度 ItemClick 事件的自定义 ItemRenderer。
.
public class TabBarButton extends ButtonBarButton {
override public function initialize():void {
super.initialize();
addEventListener(MouseEvent.CLICK, fireItemClick);
}
private function fireItemClick(event:MouseEvent):void {
owner.dispatchEvent(new ItemClickEvent(
ItemClickEvent.ITEM_CLICK, false, false, null, itemIndex, null, data
))
}
}
您现在可以像这样使用它:
<s:TabBar id="tabBar" dataProvider="{dp}"
itemRenderer="net.riastar.TabBarButton" />
tabBar.addEventListener(ItemClickEvent.ITEM_CLICK, onItemClick);
2./ 另一种方法是只监听 TabBar 上的任何点击事件并使用 event.target 来查找被点击的标签:
<s:TabBar dataProvider="{dp}" click="trace(event.target)" />
//traces tabBar.TabBarSkin1.dataGroup.TabBarButton1
请注意,这是对您问题的直接回答,但实际上我认为您不应该这样做。在大多数情况下,IndexChangeEvent.CHANGE 就可以了。