會怕嗎?Flex 4已經到Beta了,相信大家都很人心惶惶吧,很多人在向我問Flex 4差很多嗎?Namespace好複雜喔,我搞不清楚要怎嚜寫了,別怕….別怕….在我的眼中其實Flex的架構根本沒變,因此我決定有時間的時候分幾篇來介紹如何由Flex 3進入Flex 4所必備的應有知識,只要你對Flex的架構夠清楚,相信你三兩下就能進入Flex 4的狀況了。
Flex 4的主要十項改變:
分別為:
整合了Adobe Catalyst 提供新的 Spark組件架構 新的 MXML 2009 Namespace 對View States的改進 提供FXG支持 加強元件中Skin的配置 更新的排版組件的配置 新的Flash Builder 4開發工具 (原為Flex Builder 3) 增加編譯器效能25% 新的文字引擎實際內容人家已經寫好了,就請移駕到該作者網站上去觀賞,不然我只是複製貼上多沒意思。原文: 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,分別為:
xmlns:fx="http://ns.adobe.com/mxml/2009″ xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" 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上去,