「FlexEvent.SHOW」イベントと呼ばれるイベントがあります。これはあなたのために働くはずです。参照: http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/events/FlexEvent.html#SHOW
これをTabNavigatorに置くことができます。すなわち
<mx:TabNavigator>
<comp:SomeComp show="doSomething()" label="My Tab"/>
</mx:TabNavigator>
または、コンポーネント内に配置することもできます。すなわち
<mx:Canvas show="doSomething">
<!-- My Component-->
</mx:Canvas>
作成ポリシーが設定されている場合は、creationCompleteでもこれを実行できますが、これはタブが最初に作成されたときにのみ発生します。
実行例:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600">
<mx:TextArea id="log" width="100%" height="500">
</mx:TextArea>
<mx:TabNavigator width="500">
<mx:Canvas label="One" show="{log.text+='One Clicked\n';}"/>
<mx:Canvas label="Two" show="{log.text+='Two Clicked\n';}"/>
<mx:Canvas label="Three" show="{log.text+='Three Clicked\n';}"/>
<mx:Canvas label="Four" show="{log.text+='Four Clicked\n';}"/>
</mx:TabNavigator>
</mx:Application>
動的タブ付き。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="cc()" layout="vertical" minWidth="955" minHeight="600">
<mx:TextArea id="log" width="100%" height="500">
</mx:TextArea>
<mx:Script>
<![CDATA[
import mx.containers.Canvas;
import mx.events.FlexEvent;
private function cc():void{
var canv:Canvas = new Canvas();
canv.label = "One";
canv.addEventListener(FlexEvent.SHOW,onShow);
tn.addChild(canv);
canv = new Canvas();
canv.label = "Two";
canv.addEventListener(FlexEvent.SHOW,onShow);
tn.addChild(canv);
}
private function onShow(event:Event):void{
log.text+=event.currentTarget.label+ " clicked\n";
}
]]>
</mx:Script>
<mx:TabNavigator id="tn" width="500">
</mx:TabNavigator>
</mx:Application>