У меня проблема при переносе моего 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.
Спасибо.