TabNavigator не может обрабатывать детей-инвалидов в Flex 4.5 - PullRequest
10 голосов
/ 08 июня 2011

У меня проблема при переносе моего TabNavigator из Flex 3 в Flex 4.5.Урезанный до минимума следующий код вызовет ошибку, а именно, что второй дочерний элемент TabNavigator не будет создан должным образом:

<?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>

Что я вижу, при запуске это TabNavigator со второй вкладкойвыбрано, но нет содержимого вместо ожидаемой метки «Содержание два».Инструкция navigator.selectedIndex = 1; предназначена только для удобства, ошибка появляется и в том случае, если после запуска вы выбираете вторую вкладку мышью.

Теперь самое интересное: если я выполню любое из следующего, второй ребеноксоздается:

  • установить creationPolicy="all" на content_one (это ожидается),
  • комментарий content_one.enabled = true,
  • удалить enabled="false" на content_one,
  • удалить mouseOver="over()" из content_one (этот действительно очень странный, так как обработчик никогда не вызывается)

Это действительно ошибка Flex, или я что-то упускаю?Я использую Flex 4.5.0.20967, и все это хорошо работало в Flex 3.5.

Спасибо.

1 Ответ

1 голос
/ 16 сентября 2011

Это было подтверждено как ошибка в Adobe и сохранено в их базе данных ошибок

...