TabNavigator 无法处理 Flex 4.5 中的残疾儿童

发布于 2024-11-14 21:01:51 字数 1735 浏览 2 评论 0原文

我在将 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 吗bug,或者我遗漏了什么?我使用的是 Flex 4.5.0.20967,所有这些在 Flex 3.5 中都运行良好。

谢谢。

I've got a problem while migrating my TabNavigator from Flex 3 to Flex 4.5. Stripped to the bare minimum the following code will produce the bug, namely that the second child of the TabNavigator fails to be created properly:

<?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>

What I see, upon launching, is a TabNavigator with its second tab selected but no content instead of the expected "Content Two" label. The navigator.selectedIndex = 1; instruction is there just for comfort, the bug appears also if you select the second tab with the mouse after launching.

Now comes the fun part: if I do any of the following, the second child gets created:

  • set creationPolicy="all" on content_one (this is expected),
  • comment content_one.enabled = true,
  • remove enabled="false" on content_one,
  • remove mouseOver="over()" from content_one (this one is really really weird, as the handler is never called anyway)

Is this really a Flex bug, or is there something I'm missing? I'm using Flex 4.5.0.20967, and all of this worked well in Flex 3.5.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

依 靠 2024-11-21 21:01:51

这已被 Adob​​e 确认为错误,并已归档到他们的错误数据库

This has been confirmed as a bug at Adobe's and filed in their bug database

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文