2012-04-26 6 views
0

Halloタブバーはアイテムクリックイベントをサポートします。しかし、spark tabBar doesnotはitemClickイベントをサポートしていません。spark tabbarのitemclickイベントですか?

はSPARKのタブバーでListBaseから継承すべて

+0

[IndexChangeEvent](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/IndexChangeEvent.html) – RIAstar

+0

を使用します。スパークタブはインデックスチェンジイベントをサポートしません – flex

+0

はい、そうです: MXML記法は実際には 'IndexChangeEvent.CHANGE'です。 – RIAstar

答えて

1

Sparkコンポーネントは、もはやによってitemClickイベントを送出

おかげによってitemClickイベントを聞くことが方法です。ただし、代わりにIndexChangeEventイベントを使用することはできます。新しく選択されたアイテム(またはこの特定のケースではタブ)がどれであるかを示すプロパティnewIndexがあります。古いによってitemClickと

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

一つの大きな違いは、選択した項目が実際に変化した場合(それがクリックされるたびにではなく)このイベントは唯一派遣されていることです。実際にItemClickの動作を元に戻す場合は、 ItemClickイベントを送出するカスタムItemRendererを作成できます。


クリックごとに反応したい場合は、いくつかの方法があります。

1./ItemClickイベントを送出するカスタムItemRendererを作成します。

<s:TabBar id="tabBar" dataProvider="{dp}" 
      itemRenderer="net.riastar.TabBarButton" /> 

tabBar.addEventListener(ItemClickEvent.ITEM_CLICK, onItemClick); 

2 /別のアプローチは、ちょうどTabBarに上の任意のクリックイベントをリッスンし、クリックされたタブを見つけるために、event.targetを使用することです:あなたは今、このようにそれを使用することができます

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 dataProvider="{dp}" click="trace(event.target)" /> 
//traces tabBar.TabBarSkin1.dataGroup.TabBarButton1 

これはあなたの質問に対する直接的な回答ですが、実際にはこれを行うべきではないと思います。ほとんどの場合、IndexChangeEvent.CHANGEはうまくいくでしょう。

+0

ありがとうございます。ユーザーがタブバーをクリックするたびにディスパッチイベントを試行しています。変更イベントはこの種の動作をサポートしません。 itemclikイベントを追加する際にitemrenderがどのように役立つのですか – flex

関連する問題