spark tabbar中的itemclick事件?

时间:2012-04-26 14:51:43

标签: actionscript-3 flex flex4 flex4.5

Hallo tabbar支持项目点击事件。但是,spark tabBar不支持itemClick事件。

是否可以在SPARK TABBAR中收听itemclick事件

感谢所有

1 个答案:

答案 0 :(得分:1)

从ListBase继承的Spark组件不再调度ItemClick事件。不过,您可以使用IndexChangeEvent事件。它有一个属性newIndex,告诉您哪个是新选择的项目(或此特定情况下的选项卡)。

<s:TabBar dataProvider="{dp}" change="trace('selected: ' + event.newIndex)" />

与旧ItemClick的一个重要区别是,只有当所选项目实际发生更改时才会调度此事件(与单击它时相反)。如果您真的想要返回ItemClick的行为,可以创建一个调度的自定义ItemRenderer ItemClick事件。


如果您想对每次点击做出反应,有几种方法。以下是其中两个:

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会很好。