10

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_onecreationPolicy="all"に設定(これは予想されます)、
  • コメントcontent_one.enabled = true
  • enabled="false"content_oneで削除、
  • content_oneから削除mouseOver="over()"します(ハンドラーがとにかく呼び出されることはないので、これは本当に奇妙です)

これは本当にFlexのバグですか、それとも私が見逃しているものがありますか?私はFlex4.5.0.20967を使用していますが、これはすべてFlex3.5でうまく機能しました。

ありがとう。

4

1 に答える 1

1

これはAdobeのバグとして確認されており、バグデータベースに登録されています。

于 2011-09-16T09:31:23.437 に答える