2009
07.28


flex4
會怕嗎?Flex 4已經到Beta了,
相信大家都很人心惶惶吧,
很多人在向我問Flex 4差很多嗎?
Namespace好複雜喔,我搞不清楚要怎嚜寫了,
別怕….別怕….在我的眼中其實Flex的架構根本沒變,
因此我決定有時間的時候分幾篇來介紹如何由Flex 3進入Flex 4所必備的應有知識,
只要你對Flex的架構夠清楚,
相信你三兩下就能進入Flex 4的狀況了。

Flex 4的主要十項改變:

Jon Rose已經發表過Flex 4的主要十項改變了,分別為:

  1. 整合了Adobe Catalyst
  2. 提供新的 Spark組件架構
  3. 新的 MXML 2009 Namespace
  4. 對View States的改進
  5. 提供FXG支持
  6. 加強元件中Skin的配置
  7. 更新的排版組件的配置
  8. 新的Flash Builder 4開發工具 (原為Flex Builder 3)
  9. 增加編譯器效能25%
  10. 新的文字引擎

實際內容人家已經寫好了,就請移駕到該作者網站上去觀賞,不然我只是複製貼上多沒意思。
原文: http://www.infoq.com/articles/top-10-flex4-changes
翻譯: http://www.infoq.com/cn/articles/top-10-flex4-changes

新的 MXML 2009 Namespace:

我們先從大家最害怕的Namespace談起,
以前在Flex 3中只有一組Namespace,那就是mx這組,
有上過我Flex課程的同學,
我們在課堂上已經有解釋過如何從manifest.xml檔案中去看其對應的類別與類別路徑了,
Flex 4同樣繼承了相同的方式,將所有的類別對應全都寫在
manifest.xml檔中,
你還是可以從中看到其Namespace對應的內容,
只要你能了解它的結構,那麼要進入到Flex 4中就算是完成了一大步了。

在Flex 4中大家之所以會懼怕的原因,莫過於最常用的4組Namespace,分別為:

  1. xmlns:fx="http://ns.adobe.com/mxml/2009″
  2. xmlns:s="library://ns.adobe.com/flex/spark"
  3. xmlns:mx="library://ns.adobe.com/flex/halo"
  4. xmlns="http://ns.adobe.com/fxg/2008″

說穿了,也只不過依照不同的類型分成四大組而已,
這麼做的好處就在於可以非常簡單的讓Flex 3和Flex 4的元件可以混合使用,
所以Flex 4中可以用Flex 3的標籤所使用的方法並沒有大家想像中的了不起,
只不過分成兩組內容區分罷了,
原廠有對MXML 2009有詳細的說明,
你可以參考 http://opensource.adobe.com/wiki/display/flexsdk/MXML+2009

xmlns:mx="library://ns.adobe.com/flex/halo"

們先從mx這組開始說起,
在Flex 3中我們用的是xmlns:mx="http://www.adobe.com/2006/mxml"這個Namespace,
而Flex 4中用的是
xmlns="http://ns.adobe.com/fxg/2008″
意思很明顯了,
也就是告訴你以前用mx寫的元件你就照辦就對了,
不然怎麼兼容Flex 3和Flex 4的標籤啊。 XD

xmlns:s="library://ns.adobe.com/flex/spark"

這個看起來就怪怪的對吧,
別擔心,這只不過是Flex 4中新的一組元件罷了(稱為spark),
這組元件的好處在於你可以很容易的用MXML 2009來描述它的外觀,
寫法大致上與Flex 3的halo系列元件差不多,例如:
<s:Button label="Flex 4 Button"/>
<mx:Button label="Flex 3 Button"/>

這樣就能混合寫出halo和spark元件了,
而使用spark元件最大的好處是可以用MXML 2009標籤去定義它的Skin外觀,
這是以前Flex 3所做不到的,
這要感謝在Flex 4和CS4以後所搞出來的FXG格式,
至於要如何描述,我在以後的文章再繼續介紹,
免得這篇永無止境的寫下去。

xmlns:fx="http://ns.adobe.com/mxml/2009″

fx這組Namespace有新的任務了,
我們以前常寫的<mx:Bindiing><mx:Style><mx:Script><mx:Array>,
這些標籤現在都歸納到fx這個Namespace底下了,
我就姑且稱他們為一般性標籤,
雖然看似複雜,其實這有一個非常大的好處,
那就是在Flex 4中可以將元件的Namespace和一般性標籤的Namespace分開,
對邏輯分類算是非常洽當的分法,
我將一些對應的標籤列在下面:

Flex 3 Gumbo
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:fx="http://ns.adobe.com/mxml/2009"
<mx:Binding> <fx:Binding>
<mx:Component> <fx:Component>
<mx:Metadata> <fx:Metadata>
<mx:Model> <fx:Model>
<mx:Repeater> <fx:Repeater>
<mx:Script> <fx:Script>
<mx:Style> <fx:Style>

當然在Flex 4中有有新的項目,關於細節以後在說明:

Flex 3 Gumbo
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:fx="http://ns.adobe.com/mxml/2009"
N/A <fx:Declarations>
N/A <fx:Definition>
N/A <fx:DesignLayer>
N/A <fx:Library>
N/A <fx:Private>
N/A <fx:Reparent>

關於資料型態一樣照樣翻過去就可以用了,別擔心:

Flex 3 Gumbo (MXML 2009)
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:fx="http://ns.adobe.com/mxml/2009"
<mx:Array> <fx:Array>
<mx:Boolean> <fx:Boolean>
<mx:Class> <fx:Class>
<mx:Date> <fx:Date>
<mx:Function> <fx:Function>
<mx:int> <fx:int>
<mx:Number> <fx:Number>
<mx:Object> <fx:Object>
<mx:RegExp> <fx:RegExp>
<mx:String> <fx:String>
<mx:uint> <fx:uint>
N/A <fx:Vector>
<mx:XML> <fx:XML>
<mx:XMLList> <fx:XMLList>

Vector這傢伙是新的資料型態,一樣以後再說 XD

xmlns="http://ns.adobe.com/fxg/2008″

看這組Namespace應該不難猜出他是拿來幹麻用的,
沒錯!這的確是拿來描述FXG內容用的,這個同樣是說來話長,
因為這還牽扯到一些新的標籤,以後在另闢一篇來說明吧。

如何?有沒有很簡單呢?
我快速的幫大家整理了一下Namespace的分類與用途,
相信你在下一次使用Flex 4的時候,
應該可以非常容易的將原來在Flex 3中的撰寫方法移植到Flex 4上去,
下一篇我們將會繼續針對10項主要的改變繼續分享在開發Flex 4所必備的一些知識。


相關文章:
  • 由Flex 3進入Flex 4的必備知識 PART 4 – Flash Builder的程式撰寫工具
  • Adobe Flex 4.1現身
  • Flash Builder4 文字提示功能
  • 由Flex 3進入Flex 4的必備知識 PART 3 – Flash Builder的佈景主題設置
  • 由Flex 3進入Flex 4的必備知識 PART 2 – Flash Builder的專案與佈署
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    10 comments so far

    Add Your Comment
    1. 老師你好 我是個FLEX初學者
      再接觸不久FLEX3…就被要求要換新版
      基礎架構也不熟 那這樣的情況下
      我該直接學FLEX4 還是回去把FLEX3搞定呢?
      現在的書 大多都是FLEX3的新手難找資料
      請問老師 給予這樣的新手 可否給些建議

      感謝

      • 其實哪一種版本倒還好,只不過是工具而以,重點是你想做的功能能否完成。

    2. 試了很多組合的 xmlns 只有一種可以 compile 過….

      我想是因為我用的是 flashdevelop吧

      • 你是用Flex 4 SDK嗎?

    3. Flex4之前用了好一陣子,但有些別人寫的類別就沒辦法用~~
      XD~謝謝老師的分享~~

      • 純ActionScript 3.0的淚應該問題比較少,我想你遇到的應該都是有用到Flex 3類別的項目,搞不好Flex 4正式版出來可以解決這個問題喔。

    4. 哇…今年才剛買FLEX3 的書

      • 哈哈,別擔心…還不是一樣可以用,你不需要太過煩惱啦.

    5. 昨天把Fc跟Fb的Btata都下載來搭配AI、PS試過之後,
      不得不佩服Adobe在這陣子的RIA技術垂直大戰中,
      也延伸其他公司所不及的橫向領域,
      真的不得不說.fxg真的是一個很棒的跨軟體產物….
      可想Abobe鞏固其霸主之位的心真的不遺餘力!

      • 我也繼續在觀察Flex4的進展,不過Flex4已說是越來越大包囉,看來對新學者的門檻會拉高不少.