探究Flex4重大變身
你對Flex4的變化是否了解,本文從較高層次審視了這個流行RIA框架的最新版,討論了其所發(fā)生的主要變化。相信本文介紹一定會讓你有所收獲。
Flex4的幾大變化
Adobe已經(jīng)發(fā)布了Flex4(Gumbo)的首個官方beta版。該版本包含了眾多的變化。本文從較高層次審視了這個流行RIA框架的最新版,討論了其所發(fā)生的主要變化。
匯集最新Flash平臺技術(shù)相關(guān)資源,提供Flash平臺相關(guān)工具高速下載
1.集成AdobeCatalyst
Flex4的一個主要特性就是提供了對AdobeCatalyst(Adobe新的設(shè)計工具,用于創(chuàng)建富Internet應(yīng)用而無需編寫代碼)集成的支持。Catalyst改變了開發(fā)者與設(shè)計者協(xié)作的方式,因為它清楚地知道應(yīng)用開發(fā)者與設(shè)計者之間工作方式的顯著差異。這樣開發(fā)者與設(shè)計者都能專注于自己所擅長的領(lǐng)域,憑借Catalyst,無論開發(fā)者還是設(shè)計者都能按照自己所習(xí)慣的方式進(jìn)行工作。Flex4中的很多變化都是圍繞著Flex與Catalyst的集成進(jìn)行的。請查看AdobeCatalyst站點(diǎn)以了解其詳細(xì)信息。
2.Spark組件架構(gòu)
Flex的每個版本都包含了完整的組件庫,其中含有用于構(gòu)建應(yīng)用的通用組件,如數(shù)據(jù)表格、按鈕及布局容器等等。Flex4的底層組件架構(gòu)名為Spark,而在Flex3中則叫做Halo。為了支持Catalyst,F(xiàn)lex4更新了底層的組件模型以達(dá)到松耦合的目的。
在新的Spark組件模型中,核心邏輯、皮膚以及布局都被分開了,這樣我們就能單獨(dú)處理其中任意一部分而又不會影響到其他部分。Spark組件模型構(gòu)建于Halo組件模型之上,這意味著Spark擴(kuò)展了Halo的核心基類UIComponent,這樣我們就能以增量的方式使用Flex4,同時還能將Flex3組件應(yīng)用在Flex4應(yīng)用中。
除此以外,F(xiàn)lex4還對效果(effect)進(jìn)行了增強(qiáng)?,F(xiàn)在可以將效果應(yīng)用在任意的對象和類型上,這么做提升了其靈活性。Flex4的效果由新的“spark.effects”包實現(xiàn)。就像新的組件庫一樣,F(xiàn)lex4的效果也被重新實現(xiàn)了,但卻并沒有對Flex3的效果進(jìn)行任何變更,這么做的目的是為了保持向后兼容。請查看ChetHaase所寫的關(guān)于Flex4效果的文章或是其博客以更多地了解GumboEffect。
請閱讀白皮書以更多地了解Spark架構(gòu)。
3.MXML2009
MXML基于XML,構(gòu)建于FlashPlayer所用的編程語言——ActionScript3之上。MXML用于對用戶界面和支持工具(比如說IDE,現(xiàn)在是Catalyst了)的視圖區(qū)域進(jìn)行布局。MXML2009包含了大量更新以對不同的行為(核心、皮膚和布局)進(jìn)行解耦,同時還提供了新的組件庫?,F(xiàn)在Flex4的組件在其自己的包中(spark.components)得以實現(xiàn),同時又沒有對Flex3的組件進(jìn)行任何變更,為此MXML2009專門提供了一個新的命名空間以提供支持。
下面的應(yīng)用聲明示例展示了如何使用該命名空間以及如何為Spark和Halo組件定義命名空間:
- <s:Application
- xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/halo">
這樣,我們就可以通過下面的代碼聲明Flex4的Button:
- <s:Buttonlabels:Buttonlabel="MyFlex4Button"/>
下面的代碼聲明了Flex3的Button:
- <mx:Buttonlabelmx:Buttonlabel="MyFlex3Button"/>
請瀏覽MXML2009規(guī)范以深入了解其變化。
4.對ViewStates的改進(jìn)
Flex2將狀態(tài)(states)概念引入到了Flex框架中,這樣我們就可以通過簡單的狀態(tài)改變來管理視圖組件的變化。Flex4改進(jìn)了視圖狀態(tài)(viewstates)以簡化其語法,這樣我們就能更輕松地使用他們了。新語言屬性includeIn和excludeFrom就是簡化語法的一個例子,我們可以設(shè)定組件的這兩個屬性值以響應(yīng)狀態(tài)變化(參見下面的代碼示例)。
- <!--GiventhestatesA,B,C-->
- <m:states>
- <m:Statenamem:Statename="A"/>
- <m:Statenamem:Statename="B"/>
- <m:Statenamem:Statename="C"/>
- </m:states>
- <!--ThisbuttonwillappearinonlystatesAandB-->
- <ButtonlabelButtonlabel="ClickMe"includeIn="A,B"/>
- <!--ThisbuttonwillappearinstatesAandB-->
- <ButtonlabelButtonlabel="ButtonC"excludeFrom="C"/>
【編輯推薦】
- 探究Flex4打印功能的實現(xiàn)
- 技術(shù)前沿 解析最新QTP識別Flex4方法
- 學(xué)習(xí)總結(jié) 在Flex中如何嵌入Flex字體
- 揭開Flex正則表達(dá)式的神秘面紗
- Flex數(shù)據(jù)綁定及其使用頻繁的幾種情況