Flex4beta架構(gòu)變化概述
在學(xué)習(xí)Flex的過(guò)程中,你可能會(huì)遇到Flex4beta架構(gòu)變化,本文就向大家簡(jiǎn)單介紹一下,F(xiàn)lex4beta的重要主題之一是“用心設(shè)計(jì)”。這個(gè)目標(biāo)涉及在設(shè)計(jì)人員和開(kāi)發(fā)人員之間創(chuàng)造一個(gè)更順暢的工作流程。為了幫助實(shí)現(xiàn)這一點(diǎn),該框架將組件可視部分與其剩余行為明確劃分開(kāi)。
Flex4beta架構(gòu)變化概述
Flex4beta的重要主題之一是“用心設(shè)計(jì)”。這個(gè)目標(biāo)涉及在設(shè)計(jì)人員和開(kāi)發(fā)人員之間創(chuàng)造一個(gè)更順暢的工作流程。為了幫助實(shí)現(xiàn)這一點(diǎn),該框架將組件可視部分與其剩余行為明確劃分開(kāi)。在Flex3中,組件的代碼包括以其行為、布局和可視變化為中心的邏輯。在Flex4beta中,組件被劃分為不同的類,各個(gè)類負(fù)責(zé)處理特定的行為。
◆Gumbo架構(gòu)文檔*中的說(shuō)明如下:
“主組件類,即類名與組件的MXML標(biāo)簽名匹配的那個(gè)類封裝了組件的核心行為。這包括定義組件調(diào)度的事件、組件表示的數(shù)據(jù)、接通作為主組件組成部分的任何子組件以及管理和跟蹤內(nèi)部組件狀態(tài)(稍后我們將詳細(xì)討論狀態(tài))。
與之相應(yīng)的組件類是一個(gè)外觀類,它負(fù)責(zé)管理與組件的可視外觀相關(guān)的一切內(nèi)容,包括圖形、布局、表示數(shù)據(jù)、更改不同狀態(tài)中的外觀以及從一個(gè)狀態(tài)過(guò)渡到另一個(gè)狀態(tài)。在Halo模型中,F(xiàn)lex組件外觀是只負(fù)責(zé)組件的某個(gè)圖形部分的資源。更改組件外觀的任何其他方面,如布局或狀態(tài)可視化,需要將組件子類化并直接編輯ActionScript代碼。在Gumbo模型中,所有這一切都在外觀類中以聲明方式進(jìn)行定義,并且主要通過(guò)名為FXG標(biāo)簽的新圖形標(biāo)簽進(jìn)行定義。”
要進(jìn)一步了解Flex4beta中新的圖形標(biāo)簽,您可以閱讀FXG1.0規(guī)范*。
作為上述架構(gòu)的示例,您可以參考spark.components.Button類的代碼。這個(gè)類只包含以組件行為為中心的邏輯。在外觀類spark.skins.default.ButtonSkin中定義這個(gè)惡組件的所有可視部分。
考慮到性能,F(xiàn)lex4beta為開(kāi)發(fā)人員提供了構(gòu)造塊,可供他們根據(jù)需要選擇功能。默認(rèn)情況下,關(guān)閉并非所有應(yīng)用程序都需要的重量級(jí)功能,如滾動(dòng)和虛擬化。
◆Flex4beta中的名稱空間與包
在將Flex3類原封不動(dòng)地保留在同一mx.*包中的同時(shí),F(xiàn)lex4beta為組件、核心類、效果、濾鏡、布局、基元、外觀和utils引入了spark.*包。
Flex4beta提供一套新的組件和效果,它們與Flex3組件共享許多相同類名。為了避免MXML中出現(xiàn)名稱沖突,F(xiàn)lex4beta隨附四個(gè)獨(dú)特的名稱空間:MXML2006、MXML2009、Spark和Halo。
MXML2006:
之前版本的Flex中使用的舊版MXML語(yǔ)言名稱空間。使用Flex4beta編譯的Flex3應(yīng)用程序可以繼續(xù)使用這個(gè)名稱空間。
URI:http://www.adobe.com/2006/mxml
默認(rèn)前綴:mx
MXML2009:
新的MXML語(yǔ)言名稱空間。這純粹是一個(gè)語(yǔ)言名稱空間,不包含組件標(biāo)簽。
URI:http://ns.adobe.com/mxml/2009
默認(rèn)前綴:fx
Spark:
這個(gè)名稱空間包含所有新的Spark組件。它應(yīng)當(dāng)與MXML2009語(yǔ)言名稱空間一起使用。
URI:library://ns.adobe.com/flex/spark
默認(rèn)前綴:s
Halo:
這個(gè)名稱空間包含所有Halo組件。它應(yīng)當(dāng)與MXML2009語(yǔ)言名稱空間一起使用。
URI:library://ns.adobe.com/flex/halo
默認(rèn)前綴:mx
以下是使用MXML2009、Spark和Halo名稱空間創(chuàng)建一個(gè)簡(jiǎn)單的Flex4beta應(yīng)用程序的簡(jiǎn)明示例。它使用一個(gè)HaloDateChooser和一個(gè)SparkButton。
- <s:Applicationxmlns:fxs:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/halo">
- <mx:DateChooseridmx:DateChooserid="main_calendar"x="20"y="20"/>
- <s:Buttonlabels:Buttonlabel="submit"x="220"y="20"/>
- </s:Application>
Flex4beta還在CSS中加入了多名稱空間支持。如果將MXML2009、Spark和Halo名稱空間與字體選擇器一起使用,您需要在CSS定義中定義一組名稱空間以避免名稱沖突。
以下是一個(gè)將字體選擇器用于Halo和Spark組件的CSS示例:
- <fx:Style>
- @namespaces"library://ns.adobe.com/flex/spark";
- @namespacemx"library://ns.adobe.com/flex/halo";
- s|Button{color:#FF0000;}mx|DateChooser{color:#FF0000;}
- </fx:Style>
◆默認(rèn)Property和Declarations標(biāo)簽
在Flex4beta發(fā)布之前,F(xiàn)lex語(yǔ)言允許Application根標(biāo)簽包含可視子代和非可視子代。可視子代與addChild()一起添加到Application,非可視子代則作為屬性聲明。隨后,表示新屬性聲明的非可視子代不可以作為Application的直接子代。您可以將這些非可視子代添加到<fx:Declarations>標(biāo)簽下。這包括效果、驗(yàn)證程序、格式化程序、數(shù)據(jù)聲明和RPC類等非可視子代。以下是一個(gè)簡(jiǎn)短的示例:
- <s:Applicationxmlns:fxs:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark">
- <fx:Declarations><s:Fadeids:Fadeid="fadeEffect"target="{targetButton}"alphaFrom="1"alphaTo="0"/>
- </fx:Declarations><s:Buttonids:Buttonid="targetButton"/>
- <s:Buttonlabels:Buttonlabel="playeffect"click="fadeEffect.play()"x="80"/>
- </s:Application>
【編輯推薦】
- Flex4beta的Spark布局特性解析
- Flex4Beta引入新元素功能更強(qiáng)大
- Flex4beta的Spark布局特性解析
- Flex4Beta引入新元素功能更強(qiáng)大
- 技術(shù)分享 如何將Flex3應(yīng)用程序遷移到Flex4beta