apache-flex - 任何 Flex 4 迁移经验?

标签 apache-flex spring flex4 blazeds mate

我目前的开发栈是 MySQL + iBatis + Spring + Spring BlazeDS Integration 1.01 + BlazeDS 3.2 和 Flex 3 with Mate 0.8.9 框架。现在 Flash Builder 4 beta 2 出来了。有一些很酷的功能,比如数据中心开发 (DCD)、表单生成等……你知道 Spring Blazeds 集成是如何与 BlazeDS 4 一起工作的吗?马特呢? Flex 4 有什么问题吗? DCD 如何与 mate eventmaps 配合使用。我知道最好自己尝试一下,但我只想检查是否有人尝试过迁移 Flex 4。如果是这样,有什么问题?您是否注意到任何生产力加速?谢谢。

最佳答案

我无法告诉您有关迁移第三方组件的任何信息。你说的那些我没用。

但是,我可以告诉您,您不能简单地将现有项目加载到 Flash Builder 4 中,将 SDK 更改为 4.0,并期望它重新编译。 Flex 4 中发生了大量变化,通常是不兼容的。

以下是我目前遇到的:

  • 您现在有两个并行组件库,Spark 和 MX。 MX 是旧的 Flex 3 组件库,有时称为 Halo,尽管从技术上讲这只是默认皮肤的名称。 Spark 是新的 Flex 4 组件库,仅部分替代了 MX。

    他们确实可以互操作。您可以在单个应用程序中同时使用两者,并且您可以执行诸如将 Spark 组件放入 MX 布局容器中的操作,例如 ViewStack .应用程序中也有自然的划分,其中一侧使用 Spark,另一侧使用 MX,无需担心出现问题,因为它们不会在 GUI 级别进行互操作。例如,对话框就是这样。

    他们做这一切的原因是为了支持你听说过的这个新的皮肤 Material :Flash Catalyst , FXG ,以及所有这些。如果你使用 Halo 原版皮肤,除了它是 The Future 之外,我不认为 Spark 对你很重要。

    (旁白:获得绿野仙踪回声效果的 Markdown 语法是什么?)

    Joan Lafferty(Flex SDK 质量主管)有一篇有值(value)的文章,Differences between Flex 3 and Flex 4 .在 page 4 ,她有一张表格,列出了 Flex 4 中没有被 Spark 组件取代的 Flex 3 MX 组件。其中大部分都没有自己的外观,例如 Accordion ,所以你不需要给它们蒙皮,或者是对话框之类的东西,比如 Alert . (你应该通读那篇文章的其余部分。它涵盖了我不知道的东西,因为我还没有遇到所有的差异。)
  • 说到皮肤,Flex 4 中只支持 Flex 3 中的两个 MX 皮肤。更丰富多彩的 MX 皮肤已经消失了,尽管有一组新的基于 Spark 的彩色皮肤展示了你可以做的一些事情与 FXG 等。如果您真的喜欢他们删除的其中一个,您无疑可以在 Spark 上重新创建它们,但它不是开箱即用的。
  • 很多东西已经renamed , MX 组件的一些 Spark 替代品具有不同的接口(interface),different names 也是如此。 .例如,要完全迁移到 Spark,您必须更改您的 VBox转至 VGroup s。有很多像这样令人讨厌的小差异。
  • 由于整个双 GUI 库的问题,Adobe 发现自己有一堆 MXML 标签,如 <Script><Style>这实际上不是 MX 的一部分,它们对 Spark 也同样有效。他们没有使用重复的标签集,而是将这些标签移至新的 XML namespace 。对于那些对现有的基于 MX 的应用程序进行分段迁移的人来说,这是一个问题,因为这意味着您仍在使用 mx MX 组件库的别名,因此这两个库共有的这些标签都必须重命名。这些标签的新 XML 命名空间默认值为 fx ,所以每个 <mx:Script>必须重命名为 <fx:Script> , 等等。 IDE 在导入项目时不会为您执行此操作。您只需在尝试构建导入的项目时一一找到它们。

    如果您打算完全迁移到 Spark,您可以在此处避免一些痛苦。而不是接受 fx非 MX 标签上的默认命名空间别名,您可以让它继续使用 mx ,因为 MX 不需要它,而 Spark 使用 s作为其默认值。

    安装 Flash Builder 4 后的第一项任务应该是生成一个全新的项目,以便您可以研究它并从中复制粘贴诸如这些命名空间声明之类的内容。
  • 整个 MX 与 Spark 和命名空间困惑的另一个后果是您的 CSS 可能需要调整。为此,Flex 有一个非标准的 CSS 扩展,如下所示:
    @namespace mx "library://ns.adobe.com/flex/mx";
    mx|Application {
        ....
    
  • 在 Flex 3 和 Flex 4 之间,所有命名空间 URL 都发生了变化,并且在 Flex 4 beta 过程中至少有一个实例再次发生了变化。
    http://www.adobe.com/2006/mxml现在是 http://ns.adobe.com/mxml/2009library://ns.adobe.com/flex/halo现在是 library://ns.adobe.com/flex/mx
  • local()用于通过 CSS 中的通用名称指定嵌入字体名称的表单不再起作用。您必须使用 url() form 并给出字体文件的路径。

    这里要注意的一个陷阱是,这意味着如果您要嵌入单个字体的多个变体(例如普通和粗体),您之前的代码引用了相同的字体名称,但您的新代码将指向两个不同的文件,因为两个权重不在同一个 .ttf 或 .otf 文件中。例如,这个:
    @font-face {
        src: local("Verdana");
        fontFamily: VerdanaEmbedded;
        fontWeight: normal;
    }
    @font-face {
        src: local("Verdana");
        fontFamily: VerdanaEmbedded;
        fontWeight: bold;
    }
    

    必须改成这样:
    @font-face {
        src: url("/Library/Fonts/Verdana.ttf");
        fontFamily: VerdanaEmbedded;
        fontWeight: normal;
    }
    @font-face {
        src: url("/Library/Fonts/Verdana Bold.ttf");
        fontFamily: VerdanaEmbedded;
        fontWeight: bold;
    }
    

    在 Flex 3 中,编译器根据 fontWeight 猜测上述代码指的是哪两个 .ttf 字体文件。属性。在 Flex 4 中,编译器让您明确地告诉它。
  • 如果您在应用程序中嵌入字体并继续使用 MX 控件,则文本可能会消失或恢复为默认字体。这是因为,默认情况下,Flex 4 在底层使用不同的字体嵌入机制来支持 Flash Player 10 中改进的字体渲染引擎。要以旧方式嵌入字体以便旧的 MX 控件仍然可以使用它,您可以必须设置embedAsCFF CSS 属性为 false .
  • 状态机制完全不同。此 Flex 3 代码:
    <mx:State name="alternate">
        <mx:SetProperty target="{myField}" name="editable" value="false"/>
    </mx:State>
    ....
    <mx:Form ...>
        <mx:TextInput id="myField"/>
        ....
    </mx:Form>
    

    在 Flex 4 中变成这样:
    <mx:State name="alternate"/>
    ....
    <mx:Form ...>
        <mx:TextInput id="myField" editable.alternate="false"/>
        ....
    </mx:Form>
    

    新方法对我来说更有意义,因为它将所有单独的组件状态放在组件标签本身中,而不是在 MXML 文件的顶部以冗长的方式 <mx:State>块,但移植到新机制有点麻烦。转换不是由 IDE 自动执行的,尽管它确实可以。
  • 有些标签不再允许作为 <Application> 的直接子代标签。它们分为几类:验证器、效果等。您现在必须将它们打包到一个新的 <fx:Declarations> 中。标签,像这样:
    <fx:Declarations>
        <mx:Dissolve id="myTransition" duration="100" target="{this}"/>
    </fx:Declarations>
    
  • Flash Builder 中有一个新的项目选项,可让您继续单独使用 Flex 3.5 SDK,完全没有 Spark,以便更轻松地迁移。这对初始测试很有好处,但在某些时候您想要继续前进,此时您必须应对上述所有问题。

  • 新编译器对我来说似乎也没有那么快。我没有对其进行基准测试,只是继续感觉,这对我来说真正重要,因为它仍然让我觉得我的头撞在我的 table 上。 :) 它当然没有在我的开发箱中使用其他 7 个内核。咕噜噜。

    关于apache-flex - 任何 Flex 4 迁移经验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563482/

    相关文章:

    apache-flex - 带组的 Flex 4 滚动条。滚动条不显示

    apache-flex - Adobe Flex 以编程方式重新定位滚动条 slider

    apache-flex - PureMVC的可移植性如何使应用程序开发人员受益?

    ios - 我如何为 IOS 导出我的 Flex 项目

    java - 找不到 XML 模式命名空间 http ://www. springframework.org/schema/data/jpa 的 Spring NamespaceHandler

    java - 为什么对 Autowiring 字段所做的更改会影响另一个类中的另一个 Autowiring 字段?

    css - 尝试在 SWF 文件上使用 CSS top 属性,但它不起作用

    actionscript-3 - Spark Label 支持字母间距吗?

    css - 已阅读 FlexVersion 兼容性 - _NOT_ Flex 3 到 Flex 4 问题

    java - FlowScope 在页面刷新时变得清晰