从Flex 4.5升级到Flex 4.6

时间:2012-08-07 06:00:41

标签: flex air flex4 puremvc

背景

我正在将使用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版本) Working, Flex 4.5 version of Welcome View

之后(破解4.6版本的欢迎视图。这是视图的背景图像。) enter image description here

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

之前(工作4.5版) Working, Flex 4.5 version of TabBar

之后(破碎的4.6版) Broken, Flex 4.6 version of TabBar

在尝试确定这里发生了什么时,我一直在玩应用程序尽可能地使用应用程序(欢迎用户界面消失了这是相当困难的)我发现最小化应用程序然后恢复它将导致应用程序挂起到Windows将“(无响应)”位添加到应用程序标题栏,然后正常恢复与UI有点 - 排序 - 主要工作。一些示例图片:

恢复后的欢迎视图(请​​注意远离右侧的水平规则) Welcome view after restore

恢复后的TabBar(这个内容完全忽略了布局规则。此外它实际上向左滚动 - 这是正确的,它以某种方式增长了腿并且只是在屏幕上移动所有它自己。从来没有任何补间/动画附加到此视图的代码) TabBar after restoring, misaligned content

所有这一切都发生在使用Flash Builder 4.6的Windows 7 x64上。

问题

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

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

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

可能是我的自定义皮肤造成了这个问题吗?为什么会这样?关于皮肤的主题,这似乎是similar question

更新

我本来希望避免这种情况,但我并没有真正得到这个,所以我决定开始推出主题和外部SWC,直到我能够让应用程序达到一些理智的功能并从那里开始工作。我从主题开始,虽然问题不在于主题,但我指的是正确的方向。

在我的应用中,有一个名为HRule的课程。这是上面一些屏幕截图中“从经销商处打开”和“退出”按钮之间的横向规则。这个类只是一个Spark Group,里面有两个Line来绘制规则。

这是完整的课程:

<?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来对4.5版本的Spark Group进行差异,而4.6版本和文件完全相同。

因此,这提出了一个新问题:为什么Group的行为会在4.5和4.6之间变化?

0 个答案:

没有答案