こんなの「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ではない、ということでしょう。まぁ確かにその通りです。
きっと、もっと美しい書き方があるのでしょう。ご存知の方が教えてくれるとうれしく思います。