任何Flex 4迁移体验?

我目前的开发栈是 MySQL iBatis Spring Spring BlazeDS Integration 1.01 BlazeDS 3.2和Flex 3搭配Mate 0.8.9框架.现在Flash Builder 4 beta 2已经出来了.有很酷的功能,如数据中心开发(DCD),表单生成等…你知道Spring Blazeds Integration如何与BlazeDS 4一起工作?配偶怎么样? Flex 4有什么问题吗? DCD如何适合配偶事件图.我知道最好自己尝试一下,但我只是想检查一下有没有人尝试迁移Flex 4.如果有的话,有什么问题吗?你注意到生产力的提高吗?谢谢.
关于迁移您的第三方组件,我无法告诉您.我不使用你提到的那些.

不过,我可以告诉您,您将无法将现有项目简单地加载到Flash Builder 4中,将SDK更改为4.0,并期望重新编译. Flex 4中有大量的事情发生了变化,往往不兼容.

这是我到目前为止已经遇到的

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

他们互操作.您可以在一个应用程序中使用这两个应用程序,您也可以像将Spark组件放在MX Layout容器(如ViewStack)中.在一个应用程序中也有自然的划分,可以让一方使用Spark,另一个MX,而不用担心麻烦,因为它们不能在GUI级别进行互操作.对话框就是这样的.

他们所做的一切都是为了支持你所听到的这个新的皮肤材料:Flash Catalyst,FXG和所有这些.如果您使用股票Halo皮肤,我看不到Spark对您而言非常重要,除了它是The Future.

(另外:有什么是Markdown语法来获得奥兹巫术的回声效果?)

Joan Lafferty(Flex SDK质量负责人)有一篇有价值的文章Differences between Flex 3 and Flex 4. page 4,她有一张表格,列出了Flex 4中没有被Spark组件替代的Flex 3 MX组件.其中大部分都没有自己的外观,像手风琴,所以你不需要去皮肤,或者像对话框,如Alert. (你应该阅读这篇文章的其余部分,它涵盖了我没有的东西,因为我还没有遇到所有的差异.)
>说到皮肤,Flex 3中只有两个MX皮肤仍然支持Flex 4.更多彩的MX皮肤消失了,虽然有一套新的丰富多彩的Spark的皮肤,显示出一些你可以做FXG等等.如果您真的喜欢他们删除的其中一个,那么您无疑可以在Spark之上重新创建它们,但是它不可用于开箱即用.
>许多事情都是renamed,而MX组件的一些Spark替代品有不同的接口,所以有different names.例如,要完全移动到Spark,你必须将VBoxes更改为VGroups.有很多令人讨厌的小差异.
>由于整个双GUI图书馆的事情,Adobe发现自己有一堆MXML标签,如< Script>和< Style>这实际上并不是MX的一部分,它也适用于Spark.他们不是拥有一组重复的标签,而是将它们移动到一个新的XML命名空间.对于现有的基于MX的应用程序进行分段迁移的人员来说,这是一个问题,因为这意味着您仍然在为MX组件库使用mx别名,因此这两个库共同的这些标签都必须重命名.这些标签的新XML命名空间默认为fx,因此每个< mx:Script>必须重命名为< fx:Script>等等. IDE不会为您导入项目.当您尝试让您导入的项目进行构建时,您可以一个接一个地找到它们.

如果您计划完全转向Spark,您可以在此避免一些痛苦.而不是接受非MX标签上的fx默认命名空间别名,您可以让它继续使用mx,因为您不需要MX,而Spark则将其用作默认值.

安装Flash Builder 4后,您的第一个任务应该是生成一个新的新项目,以便您可以对其进行研究,并从其中复制粘贴这些命名空间声明.
>整个MX与Spark和命名空间混乱的另一个影响是您的CSS可能需要调整. Flex对此有一个非标准的扩展,它看起来像这样:

@namespace mx "library://ns.adobe.com/flex/mx";
mx|Application {
    ....

>所有的命名空间URL都在Flex 3和Flex 4之间进行了更改,至少有一个实例在Flex 4 beta进程中再次更改.

http://www.adobe.com/2006/mxml现在是http://ns.adobe.com/mxml/2009
库://ns.adobe.com/flex/halo现在是库://ns.adobe.com/flex/mx
>用于在CSS中通过其通用名指定嵌入字体名称的local()表单不再起作用.您必须使用url()表单并给出字体文件的路径.

要注意的一个陷阱是,这意味着如果您嵌入了单个字体的多个变体(例如,正常和粗体),您以前的代码将引用相同的字体名称,但是新的代码将指向两个不同的文件,因为两个权重不在同一个.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>

新的方法对我来说更有意义,因为它将组件标签中的所有单独的组件状态本身,而不是以详细的< mx:State>的方式放在MXML文件的顶部.阻止,但移植到新机制是一个磨练. IDE的转换并不自动化,尽管它真的可以.
>< Application>中的一些标签不再被允许作为直接子代标签.它们分为几个类别:验证器,效果等.您现在必须将其打包成新的< fx:Declarations>标签,像这样:

<fx:Declarations>
    <mx:Dissolve id="myTransition" duration="100" target="{this}"/>
</fx:Declarations>

> Flash Builder中有一个新的项目选项,可以让您继续单独使用Flex 3.5 SDK,而不需要Spark,便于迁移.这对初始测试是有好处的,但在某些时候你想要向前推进,在这一点上你必须与上述所有方面进行对抗.

对于我来说,新的编译器似乎还没有那么快.我没有对它进行基准测试,只是继续感觉,这对我来说真的很重要,因为它仍然让我觉得我的头像在我的桌子上. :)在我的开发框中肯定不使用其他7个内核.哎呀.

相关文章
相关标签/搜索