1

的背景

我正在将使用 Flex 4.5 和 AIR 2.6 构建的 AIR 应用程序更新到 Flex 4.6 和 AIR 3.3。我这样做是为了利用本机 JSON 类,并为 AIR 3.4 和 Actionscript Workers 做好准备,这两个都是我计划使用的。我也在使用 PureMVC 2.0.4。

实际的更新过程很顺利。我下载了 Flex 4.6 SDK 并在其上覆盖了 AIR 3.3 SDK。到目前为止,一切都很好。我在as3corelib中使用 JSON 类,所以我必须进行一些更改,从我的应用程序中删除对它的引用。除了那一帆风顺。随着代码编译得很好,我开始启动应用程序。

问题

这就是事情分崩离析的地方。

当应用程序启动“欢迎”视图时(这本质上是一个着陆点,其中包含“打开文件”、“新文件”等按钮以及从 Web 服务中提取的新闻提要)。背景图像显示,但 UI 不存在。以下是一些示例屏幕截图:

之前(欢迎视图的工作 4.5 版本) 工作,Flex 4.5 版本的欢迎视图

之后(Welcome View 的 4.6 版本损坏。这是视图的背景图像。) 在此处输入图像描述

在 Flash Builder 调试器中使用大量断点逐步完成启动过程并没有发现任何明显错误。其他 UI 元素也丢失了。例如:这个标签栏只是缺少按钮

之前(工作 4.5 版本) 工作,Flex 4.5 版本的 TabBar

之后(破4.6版) 坏了,Flex 4.6版的TabBar

在试图确定这里发生了什么时,我一直在尽我所能玩弄应用程序(欢迎 UI 消失了,这相当困难),我发现最小化应用程序然后恢复它会导致应用程序挂起到 Windows 将“(未响应)”位添加到应用程序标题栏的程度,然后在 UI 有点正常工作的情况下正常恢复。一些示例图像:

恢复后的欢迎视图(注意向右偏远的水平线) 恢复后欢迎查看

恢复后的 TabBar (此内容完全无视布局规则。此外,它实际上是向左滚动 - 没错,它不知何故长出了腿,只是自行离开屏幕。从来没有任何补间/动画代码附加到这个观点) 恢复后的 TabBar,未对齐的内容

所有这些都发生在带有 Flash Builder 4.6 的 Windows 7 x64 上。

问题

这到底是怎么回事?为什么我的 UI 会像这样消失?

我觉得我缺少一些基本的东西,比如“哦,只需添加这个编译器选项”和 BAM!事情会解决的。我当然不觉得我的应用程序应该因为这次升级而完全崩溃。

有没有人在从以前版本的 Flex/AIR 升级到 Flex 4.6/AIR 3.x 时遇到过类似的问题?你是怎么解决你的问题的?

会不会是我的自定义皮肤导致了这个问题?为什么会这样?关于皮肤的话题,这似乎是一个类似的问题

更新

我希望避免这种情况,但我并没有真正做到这一点,所以我决定开始撤出主题和外部 SWC,直到我可以让应用程序达到某种健全的功能水平并从那里恢复。我从主题开始,虽然问题不在于主题,但我指出了正确的方向。

在我的应用程序中有一个名为HRule. 这是上述某些屏幕截图中“从经销商处打开”和“注销”按钮之间的水平规则。这个类只是一个 Spark ,里面Group有两个Lines 来绘制规则。

这是完整的课程:

<?xml version="1.0" encoding="utf-8"?>
<s:Group 
    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:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->

    </fx:Declarations>

    <s:layout>
        <s:VerticalLayout
            gap="0">
        </s:VerticalLayout>
    </s:layout>

    <s:Line
        xTo="{width}">
        <s:stroke>
            <s:SolidColorStroke
                color="#000000"
                alpha="0.4" />
        </s:stroke>
    </s:Line>

    <s:Line
        xTo="{width}">
        <s:stroke>
            <s:SolidColorStroke
                color="#ffffff"
                alpha="0.15" />
        </s:stroke>
    </s:Line>


</s:Group>

然后我像这样使用这个类:

<s:VGroup
    width="300">

    <s:Button 
        label="Button 1"
        percenthWidth="100"/>

    <mycomps:HRule 
        percenthWidth="100"/>

    <s:Button 
        label="Button 2"
        percenthWidth="100"/>

</s:VGroup>

Group只需将基类从更改为 ,我就可以解决所有问题SkinnableContainer。我下载了WinMerge对 Spark 的 4.5 版本Group和 4.6 版本进行了比较,文件是相同的。

所以这就带来了一个新的问题:为什么Group在 4.5 和 4.6 之间的行为会发生变化?

4

0 回答 0