0

Hallo タブバーは項目クリック イベントをサポートします。ただし、spark tabBar は itemClick イベントをサポートしていません。

SPARK TABBAR で itemclick イベントをリッスンする方法はありますか

皆さんありがとう

4

1 に答える 1

1

ListBase から継承する Spark コンポーネントは、ItemClick イベントを送出しなくなりました。ただし、代わりにIndexChangeEventイベントを使用できます 。newIndex新しく選択された項目 (この場合はタブ) を示すプロパティがあります。

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

古い ItemClick との大きな違いの 1 つは、このイベントは、選択された項目が実際に変更されたとき (クリックされたときではなく) にのみ送出されることです。本当に ItemClick の動作を元に戻したい場合は、ItemClick イベントを送出するカスタム ItemRenderer を作成できます。


クリックするたびに反応したい場合は、いくつかの方法があります。そのうちの 2 つを次に示します。

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 で十分です。

于 2012-04-26T15:03:45.610 に答える