TabNavigator не может обрабатывать дочерние элементы с ограниченными возможностями в Flex 4.5

#apache-flex #flex4 #tabnavigator

#apache-flex #flex4 #tabnavigator

Вопрос:

У меня возникла проблема при переносе моего 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. Подтверждено как ошибка в Adobe и внесено в их базу данных ошибок

2. @Daniel Не могли бы вы опубликовать свой комментарий в качестве ответа и принять его, чтобы это сообщение больше не попадало во вкладку «неотвеченные»?

Ответ №1:

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