TabNavigatorをFlex3からFlex4.5に移行するときに問題が発生しました。次のコードを最小限に削除すると、バグが発生します。つまり、TabNavigatorの2番目の子が正しく作成されません。
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
>
<fx:Script>
<![CDATA[
protected function over():void
{
trace('over');
}
protected function content_one_init():void
{
content_one.enabled = true;
navigator.selectedIndex = 1;
}
]]>
</fx:Script>
<mx:TabNavigator
id="navigator"
creationPolicy="auto"
width="100%" height="100%"
>
<mx:VBox
id="content_one"
enabled="false"
creationComplete="content_one_init()"
label="One"
mouseOver="over()"
/>
<mx:VBox label="Two">
<mx:Label text="Content Two" />
</mx:VBox>
</mx:TabNavigator>
</s:Application>
起動時に表示されるのは、2番目のタブが選択されているが、予想される「コンテンツ2」ラベルの代わりにコンテンツがないTabNavigatorです。指示は快適さのnavigator.selectedIndex = 1;
ためにあります。起動後にマウスで2番目のタブを選択した場合にもバグが表示されます。
ここで楽しい部分があります。次のいずれかを実行すると、2番目の子が作成されます。
- content_one
creationPolicy="all"
に設定(これは予想されます)、 - コメント
content_one.enabled = true
、 enabled="false"
content_oneで削除、- content_oneから削除
mouseOver="over()"
します(ハンドラーがとにかく呼び出されることはないので、これは本当に奇妙です)
これは本当にFlexのバグですか、それとも私が見逃しているものがありますか?私はFlex4.5.0.20967を使用していますが、これはすべてFlex3.5でうまく機能しました。
ありがとう。