TabNavigator no puede manejar hijos discapacitados en Flex 4.5
flex4 (1)
Tengo un problema al migrar mi TabNavigator de Flex 3 a Flex 4.5. Desnudado al mínimo, el siguiente código producirá el error, a saber, que el segundo hijo del TabNavigator no se crea correctamente:
<?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>
Lo que veo, después del lanzamiento, es un TabNavigator con su segunda pestaña seleccionada pero sin contenido en lugar de la etiqueta esperada "Contenido Dos". El navigator.selectedIndex = 1;
la instrucción está ahí solo para mayor comodidad, el error aparece también si selecciona la segunda pestaña con el mouse después del lanzamiento.
Ahora viene la parte divertida: si hago algo de lo siguiente, se crea el segundo niño:
- establece
creationPolicy="all"
en content_one (esto es esperado), - comentario
content_one.enabled = true
, - remove
enabled="false"
en content_one, - elimine
mouseOver="over()"
de content_one (este es realmente muy extraño, ya que el manejador nunca se llama de todos modos)
¿Es esto realmente un error de Flex, o hay algo que me falta? Estoy usando Flex 4.5.0.20967, y todo esto funcionó bien en Flex 3.5.
Gracias.
Esto se ha confirmado como un error en Adobe y archivado en su base de datos de errores