【问题标题】:TabNavigator can't handle disabled children in Flex 4.5TabNavigator 无法处理 Flex 4.5 中的禁用子级
【发布时间】:2011-09-10 20:44:57
【问题描述】:

我在将 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; 指令只是为了方便起见,如果您在启动后用鼠标选择第二个选项卡,也会出现该错误。

现在有趣的部分来了:如果我执行以下任何操作,就会创建第二个孩子:

  • 在 content_one 上设置 creationPolicy="all"(这是预期的),
  • 评论content_one.enabled = true,
  • 删除 content_one 上的 enabled="false"
  • 从 content_one 中删除 mouseOver="over()"(这个真的很奇怪,因为无论如何都不会调用处理程序)

这真的是一个 Flex 错误,还是我遗漏了什么?我使用的是 Flex 4.5.0.20967,所有这些都在 Flex 3.5 中运行良好。

谢谢。

【问题讨论】:

  • 在 Adob​​e 确认为一个错误并提交到他们的bug database
  • @Daniel 您能否将您的评论作为答案发布并接受它,以便该帖子不再属于未答复标签?

标签: apache-flex flex4 tabnavigator


【解决方案1】:

这已被 Adob​​e 确认为一个错误,并在其bug database 中提交

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2020-10-07
    • 2012-01-12
    • 2011-08-26
    • 2018-12-28
    • 1970-01-01
    • 2017-09-18
    • 2011-02-22
    • 2011-08-27
    相关资源
    最近更新 更多