Flex開(kāi)發(fā)者需要知道的10件事
Flex是基于Flash平臺(tái),涵蓋了支持RIA(Rich Internet Applications)的開(kāi)發(fā)和部署的一系列技術(shù)組合。Flex的出現(xiàn),解決了程序員在開(kāi)發(fā)動(dòng)畫(huà)應(yīng)用方面難的問(wèn)題,同時(shí)其也是目前主流的RIA技術(shù)之一。
如果你了解HTML/CSS并熟悉JavaScript,但卻對(duì)ActionScript或Flex一無(wú)所知的話(huà),那么應(yīng)該花些時(shí)間學(xué)習(xí)一下面向?qū)ο缶幊蹋驗(yàn)锳ctionScript是一門(mén)完全的面向?qū)ο缶幊陶Z(yǔ)言,而Flex則是一個(gè)面向?qū)ο蟮目蚣堋?/p>
1. 再簡(jiǎn)單的東西也是異步的
Flex是一個(gè)異步框架,因此我們絕對(duì)不能指望代碼調(diào)用后就能立刻執(zhí)行。事實(shí)上,我們是無(wú)法預(yù)知方法的調(diào)用序列的。
2. 搞清楚Flex組件的樣式與屬性
Flex UI組件(按鈕、菜單等等)既有屬性(通過(guò)ActionScript語(yǔ)言指定)也有樣式(通過(guò)Flex框架指定)。搞清楚他們之間的區(qū)別是非常重要的,因?yàn)榻M件的某些可視化效果可以通過(guò)屬性指定,但另一些卻只能通過(guò)樣式設(shè)定。通過(guò)屬性指定:
- button.width = 100;
- button.height = 50;
通過(guò)樣式指定:
- <mx:Style>
- Button {
- color: #cc0000;
- textRollOverColor: #ccff00;
- fontFamily: Trebuchet MS;
- }
- </mx:Style>
- <mx:Button id="setupB" text="Click Me" click="onSetup()" />
3. Flex中的樣式與HTML中的不盡相同
可以使用標(biāo)準(zhǔn)的CSS樣式表來(lái)為Flex組件添加樣式,也可以在Flex應(yīng)用中包含CSS樣式表。雖然標(biāo)準(zhǔn)CSS使用連字符(例如text-font)格式來(lái)定義樣式名稱(chēng),但是Flex使用駝峰式的命名格式(例如textFont)。這是因?yàn)檫B字符不能出現(xiàn)在XML的屬性中,所以不能用這樣的名字作為MXML標(biāo)簽的屬性。當(dāng)然了,如果把樣式定義在外部的CSS文件中或者Style標(biāo)簽中,也可以使用連字符格式的樣式名。此外,F(xiàn)lex還定義了很多HTML中不存在的CSS樣式。
4. 盡管看起來(lái)不同,但MXML和ActionScript本質(zhì)上是一回事
在Flex中聲明的所有MXML標(biāo)簽都會(huì)被Flex編譯器轉(zhuǎn)換為ActionScript代碼;當(dāng)然了,也可以在MXML文件中嵌入內(nèi)聯(lián)的ActionScript代碼。既可以使用MXML也可以使用ActionScript創(chuàng)建新組件。
5. 理解Flex的Code-behind模式
雖然MXML和ActionScript本質(zhì)上是一樣的,但他們各司其職。一般來(lái)說(shuō),MXML負(fù)責(zé)顯示界面,而ActionScript用來(lái)完成功能。Code-behind用于解耦MXML和ActionScript,這樣設(shè)計(jì)師可以直接修改MXML而無(wú)需閱讀代碼,程序員則可以更好地組織和重用功能。
6. 理解Flex組件的生命周期
Flex通過(guò)狀態(tài)機(jī)機(jī)制定義了一套完美的生命周期模型,用于組件的創(chuàng)建、運(yùn)行和銷(xiāo)毀,還定義了一些“入口”,開(kāi)發(fā)者可以借此完成定制化的工作。沒(méi)有透徹理解組件的生命周期可能會(huì)導(dǎo)致錯(cuò)誤的編程模型。
7. 理解Flash運(yùn)行時(shí)所使用的“跑道”模型
理解Flash Player的渲染和代碼執(zhí)行機(jī)制非常重要的。在執(zhí)行了改變界面的指令時(shí),F(xiàn)lash Player并不是立刻把你要的內(nèi)容顯示在屏幕上,它根據(jù)一定的周期來(lái)刷新屏幕,而代碼的執(zhí)行則是另一回事。這和Java正好相反,Java總是等待程序主動(dòng)告訴它什么時(shí)候重繪屏幕。
8. 理解數(shù)據(jù)綁定與查看器(Watcher)
Flex提供了一種數(shù)據(jù)綁定機(jī)制。簡(jiǎn)單地說(shuō),就是將一個(gè)源屬性綁定到一個(gè)目標(biāo)屬性上,當(dāng)源屬性發(fā)生變化時(shí),目標(biāo)屬性也會(huì)隨之變化。不僅僅可以綁定到屬性,還可以綁定到函數(shù)。甚至可以為某個(gè)屬性創(chuàng)建一個(gè)Watcher,當(dāng)屬性變化時(shí)會(huì)獲得事件通知。
9. 數(shù)據(jù)封裝與松耦合非常重要
對(duì)于Flex和AIR項(xiàng)目來(lái)說(shuō),代碼組織與高層結(jié)構(gòu)非常重要。有些人竟然在一個(gè)文件中編寫(xiě)了1000多行代碼,這導(dǎo)致的問(wèn)題就是牽一發(fā)而動(dòng)全身。
10. 理解ActionScript中的弱引用與強(qiáng)引用
不管使用何種語(yǔ)言與開(kāi)發(fā)環(huán)境,內(nèi)存管理始終是一個(gè)重要的問(wèn)題,ActionScript也不例外。如果不理解運(yùn)行時(shí)環(huán)境的內(nèi)存管理,那么很容易就會(huì)出現(xiàn)內(nèi)存泄露與內(nèi)存碎片問(wèn)題。
【編輯推薦】