TabNavigatorのタブ切り替えイベントでStateを切り替える

2009-02-17
このエントリーをはてなブックマークに追加

こんなの「tab_chenge」みたいなイベントがあって、それで制御できるだろうと思い込んでいました。っていうか、もしかしたらあるのかもしれない。例によって正解かどうかわかりませんが、期待通りの動きだと思います。

<mx:TabNavigator id=”tabnavigator1″ change=”tab_change(event)”>
  <mx:Canvas label=”タブ1”>
  </mx:Canvas>
  <mx:Canvas label=”タブ2”>
  </mx:Canvas>
</mx:TabNavigator>

上記がMXML。TabNavigatorに「タブが切り替わったら教えろや」ってイベントを設定しておきます。

private function tab_change(event:Event):void

 switch(tabnavigator1.selectedIndex.toString())
 {
  case ‘3’:
   currentState = “search”;
   break;
  default:
   currentState = “”;
   break;  
 }
}

で、これがAS側。あ、引数のevent使ってないや。上記の例だと、選択されたタブのインデックスが3(当然、0から始まるので4枚目のタブ、っていう意味です)だったら、Stateを「search」に切り替えてくださいという意味です。それ以外のタブがクリックされたら、ベースステートに戻ってくれます。

Canvasにclickイベントを設定しておいても、タブ自体がクリックされたイベントは判定してくれないんですね。タブはタブであって、Canvasではない、ということでしょう。まぁ確かにその通りです。

きっと、もっと美しい書き方があるのでしょう。ご存知の方が教えてくれるとうれしく思います。