TabNavigator在Flex 4.5中无法处理禁用的子元素。

10

我在将我的 TabNavigator 从 Flex 3 迁移到 Flex 4.5 时遇到了问题。下面的代码是最简版本,但是第二个子元素无法正确创建:

<?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; 的指令只是为了方便,即使在启动后使用鼠标选择第二个选项卡,也会出现错误。

现在来说有趣的部分:如果我执行以下任何一项操作,则会创建第二个子级:

  • 在content_one上设置creationPolicy="all"(这是预期的),
  • 注释掉content_one.enabled = true
  • 删除content_one上的enabled="false"
  • 从content_one中删除mouseOver="over()"(这真的非常奇怪,因为处理程序从未被调用)

这真的是Flex的bug吗,还是我漏掉了什么东西? 我正在使用Flex 4.5.0.20967,所有这些都在Flex 3.5中运行良好。

谢谢。


6
已在Adobe确认为错误,并在其漏洞数据库中进行了记录(http://bugs.adobe.com/jira/browse/SDK-30593)。 - Daniel Kitachewsky
@Daniel,您能发表您的评论并接受它,以便此帖子不再出现在未回答选项卡中吗? - Jacob Eggers
1个回答

1

这已经被确认为Adobe的一个漏洞,并在他们的漏洞数据库中进行了记录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接