3L的太复杂了···LZ看一下TabNavigator的源码就知道它有TabBar控件,只是它有两个方法取得一个是protected的只能在它的子类里使用所以要用的话得继承TabNavigator重写然后加事件,还有个是mx_internal function getTabBar():TabBar看到它的nameSpace是mx_internal这样就可以根据nameSpace取得了 具体代码
var item:TabBar = tab.mx_internal::getTabBar();//tab为TabNavigator的实例名或ID
item.addEventListener(ItemClickEvent.ITEM_CLICK,clickHandler);
[Bindable]
public var STATE_ARRAY:Array = [{label:"Alabama", data:"Montgomery"},
{label:"Alaska", data:"Juneau"},
{label:"Arkansas", data:"LittleRock"}
];
private function clickEvt(event:ItemClickEvent):void {
// Access target TabBar control.
var targetComp:TabBar = TabBar(event.currentTarget);
forClick.text="label is: " + event.label + ", index is: " +
event.index + ", capital is: " +
targetComp.dataProvider[event.index].data;
}
]]>
</mx:Script>
<mx:Panel title="TabBar Control Example" height="75%" width="75%"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
<mx:Label width="100%" color="blue"
text="Select a tab to change the current panel."/>