任何Flex 4迁移体验?(Any Flex 4 migration experience?)

2019-07-23 11:31发布

我当前的发展栈的MySQL + iBatis的春+弹簧+ BlazeDS集成1.01 + BlazeDS的3.2和Flex 3与伴侣0.8.9框架。 现在,Flash Builder 4的beta 2版本已经出来了。 还有像数据中心的开发(DCD),表单生成等酷炫功能...你知道春天BlazeDS集成如何与BlazeDS的4? 什么伴侣? 有没有使用Flex 4的任何问题? DCD如何面对与队友eventmaps。 我知道这是更好地尝试一下自己,但我只是想检查一下是否有人曾经试图迁移的Flex 4.如果有什么问题? 你有没有注意到任何生产率加速? 谢谢。

Answer 1:

我不能告诉你有关迁移第三方组件任何东西。 我不使用你提到的那些。

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

下面是我碰到迄今为止的:

  • 您现在有两个平行的组件库,Spark和MX。 MX是老Flex 3的组件库,有时也被称为光晕,虽然这是默认皮肤的技术上只是名字。 火花是新的Flex 4组件库,其仅部分地替换MX。

    他们互操作。 你被允许在一个单一的应用程序同时使用,你可以做这样的事情在MX布局容器,如把Spark组件ViewStack 。 也有一个应用程序,它可能在使用星火一面,另一MX,没有烦恼担心,因为他们没有在GUI水平互操作的自然区划。 对话框是这样的,比如。

    他们所做的这一切的原因是为了支持你已经听到这个新的皮肤东西: Flash Catalyst中 , FXG ,和所有。 如果您使用的股票晕皮肤,我没有看到火花的问题给你,除了一个事实,即它的未来

    (旁白:什么是降价的语法来获得精灵的盎司嗡嗡声回音效果?)

    琼拉弗蒂(的Flex SDK质量铅)有贵重物品, Flex 3的和Flex 4之间的差异 。 在第4页 ,她有一个表,列出了Flex 3 MX组件没有被替换Spark组件Flex 4中大部分的这些都没有外观的自己,像Accordion ,所以你不必剥他们,或事情像对话框,像Alert 。 (你应该通过本文的其余部分阅读。它涵盖的东西我不知道,因为我还没有碰到所有的差异呢。)

  • 说到外观,只有两个从Flex 3的对MX皮肤Flex 4中,仍然支持更加丰富多彩MX的皮肤都走了,但有一组新的基于多彩火花皮肤炫耀一些你可以做的事情与FXG和这样的。 如果你真的很喜欢他们删除者之一,你可以重新无疑领跑星火,但它不是现成可用的。

  • 很多事情已经改名 ,并为MX组件一些星火替换有不同的接口等方面有不同的名称 。 例如,要完全转移到星火,你必须改变你VBox下载到VGroup秒。 有很多这样的恼人的小差异。

  • 因为整个双GUI库的事情,Adobe公司发现自己像一堆MXML标签的<Script><Style>这实际上不是MX,这很好的工作了星火的一部分。 不是有重复的标签集合,他们搬到这些到一个新的XML命名空间。 这对于那些做现有的基于MX-应用的分段迁移的问题,因为这意味着你还在使用mx为MX组件库的别名,所以这些标记是常见的两种库都必须进行重命名。 新的XML命名空间的默认这些标签是fx ,所以每次<mx:Script>已被重命名为<fx:Script>等等。 IDE不会为你在导入项目做到这一点。 你只要找到他们一个接一个,当你试图让你导入的项目建设。

    如果您打算完全转移到星火,你可以在这里避免一些痛苦。 除了接受的fx在非MX标签默认命名空间别名,你可以让它继续使用mx ,因为你不会需要,对MX,和Spark使用s作为其默认。

    安装Flash Builder 4中后,你的首要任务应该是创造一个全新的项目,所以你可以研究它,并复制粘贴之类的东西从它的命名空间,这些声明。

  • 与Spark和命名空间的混乱整个MX的另一个后果是,你的CSS可能需要调整。 Flex有一个非标准扩展到CSS这一点,它看起来像这样:

     @namespace mx "library://ns.adobe.com/flex/mx"; mx|Application { .... 
  • 所有名称空间的URL已经Flex 3的和Flex 4之间改变两者,并且在过程中的Flex 4测试过程再次改变的至少一个实例。

    http://www.adobe.com/2006/mxml现在http://ns.adobe.com/mxml/2009 library://ns.adobe.com/flex/halo现在library://ns.adobe.com/flex/mx

  • local()的形式在CSS由他们共同的名字,指定嵌入字体名称不起作用了。 你必须使用url()的形式,并给予路径字体文件。

    提防这里陷阱是,这意味着,如果你要嵌入单个字体的多个变体(如正常和大胆的权重)以前的代码中提到的相同的字体的名字,但你的新会指向两个不同的文件,因为两个砝码不在同一.TTF或杂项文件的文件。 举例来说,这样的:

     @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,编译器猜测两个.TTF字体文件上面的代码指的是基于所述fontWeight属性。 在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中:

     <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独自一人,毫无生气可言,更容易迁移。 这是很好的初步测试,但在某些时候,你要往前走,此时你有上述所有抗衡。

新的编译器似乎并没有那么多快对我来说,无论是。 我没有基准,只是事情的感觉,这是真正重要的东西给我,因为它仍然让我感觉像捶我的头我的办公桌上。 :)你肯定不会用我的发展中的其他7个内核。 哎呀。



Answer 2:

这里的一些事情可能帮助:

  1. 最新的BlazeDS的版本为3.2.0.3978。 我没有听说过新版本的公告。
  2. 既然你是保持BlazeDS的相同版本,移植现有代码到Flex 4应该有你的后端(春天BlazeDS的整合,iBATIS的,MySQL的,等等)没有影响。
  3. 队友还没有正式支持Flex 4.我有,当我试图切换编译错误。 下面是一个讨论的一个链接的解决方法 ,并链接到一个Flex 4的端口 。

祝好运!



文章来源: Any Flex 4 migration experience?