Apache flex 从Flex 4.5升级到Flex 4.6 背景

Apache flex 从Flex 4.5升级到Flex 4.6 背景,apache-flex,air,flex4,puremvc,Apache Flex,Air,Flex4,Puremvc,我正在将一个使用Flex 4.5和AIR 2.6构建的AIR应用程序更新为Flex 4.6和AIR 3.3。我这样做是为了利用原生JSON类,并为AIR3.4和Actionscript工作人员做好准备,这两件事我都打算利用。我也在使用PureMVC 2.0.4 实际的更新过程进展顺利。我下载了Flex4.6SDK,并在其上覆盖了AIR3.3SDK。到现在为止,一直都还不错。我在中使用了JSON类,所以我必须做一些更改,从我的应用程序中删除对该类的引用。除了那一帆风顺之外。代码编译良好后,我开始启

我正在将一个使用Flex 4.5和AIR 2.6构建的AIR应用程序更新为Flex 4.6和AIR 3.3。我这样做是为了利用原生JSON类,并为AIR3.4和Actionscript工作人员做好准备,这两件事我都打算利用。我也在使用PureMVC 2.0.4

实际的更新过程进展顺利。我下载了Flex4.6SDK,并在其上覆盖了AIR3.3SDK。到现在为止,一直都还不错。我在中使用了JSON类,所以我必须做一些更改,从我的应用程序中删除对该类的引用。除了那一帆风顺之外。代码编译良好后,我开始启动应用程序

问题 这就是事情崩溃的地方

当应用程序启动欢迎视图时,这实际上是一个带有按钮的平台,按钮用于打开文件、新建文件等,同时还缺少从web服务中提取的新闻提要。背景图像显示出来,但用户界面不在那里。以下是一些屏幕盖示例:

在使用4.5版本的欢迎视图之前

在4.6版本的欢迎视图崩溃之后。这是视图的背景图像。

在FlashBuilder调试器中使用大量断点逐步完成启动过程并没有显示任何明显的错误。其他UI元素也丢失了。例如:此选项卡栏缺少按钮

在工作4.5版本之前

在坏掉的4.6版本之后

在试图确定这里发生了什么的过程中,我一直在尽我所能地玩这个应用程序,欢迎用户界面消失了,这是相当困难的,我发现最小化应用程序然后恢复它会导致应用程序挂起,Windows会将无响应位添加到应用程序标题栏,然后使用用户界面正常恢复有点像在工作。一些示例图像:

恢复后欢迎查看请注意向右偏远的水平规则

恢复此内容后的TabBar完全不考虑布局规则。更进一步,它实际上是向左滚动的——也就是说,它不知怎么地长出了腿,只是自己离开了屏幕。此视图从未附加任何tweening/动画代码

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

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

我觉得我错过了一些基本的东西,比如,哦,只需添加这个编译器选项,然后砰!事情会解决的。我当然不觉得这次升级会让我的应用程序彻底崩溃

从以前的Flex/AIR版本升级到Flex 4.6/AIR 3.x时,是否有人遇到过类似的问题?你是如何解决你的问题的

是否是我的自定义皮肤导致了此问题?为什么会这样?在皮肤的话题上,这似乎是一个问题

使现代化 我希望避免这种情况,但我并没有真正做到这一点,所以我决定开始退出主题和外部SWC,直到我可以让应用程序达到某种正常的功能水平,并从那里开始工作。我从主题开始,虽然问题不在于主题,但它为我指明了正确的方向

在我的应用程序中有一个名为HRule的类。在上面的一些屏幕截图中,这是经销商打开和注销按钮之间的水平规则。这个类只是一个Spark组,内部有两条线绘制规则

以下是完整的课程:

<?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来解决所有问题。我下载了Spark Group的4.5版本和4.6版本,文件是相同的


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

这似乎与我在问题中描述的内容有关,但是如果没有任何代码,就很难判断。我想这很复杂,所以我建议你试着在一个简单的测试应用程序中重新创建错误的行为,并从那里进行分析。我的猜测是存在一些Z顺序问题。至于为什么它现在正在显现;但是,在没有代码审查的情况下,很难说出之前的问题。@RIAStar我已经更新了原始问题,添加了一些代码和我找到的解决方案。唯一的问题是,我不清楚为什么这个解决方案有效,也不清楚为什么原始代码破坏得如此严重。区别可能在于布局,而不是组类。我必须说我从未在MXML中使用过percentWidth属性。你能试着用width=100%来代替吗?告诉我们会发生什么?我会尝试一下,尽管我认为这无关紧要。我一直使用percentWidth,因为在Actionscript中不能使用width=100%。这样,我的MXML与我的AS保持一致。无论如何,这仍然让我们处于:在4.5和4.6之间发生了什么变化,导致其表现不同。我想今晚我会尝试在整个SDK上做一个差异。