Flex開發者需要知道的10件事

不久前,Michael Portuesi發表了一篇博文,談到了Flex開發者需要知道的10件事。文章介紹了每個進入Flex領域的開發者都需要掌握的基本知識與技能。

Michael Portuesi給出的10個條目中,有些是開發者需要了解的簡單細節信息;有些則揭示了Flash/ActionScript/Flex與其他開發環境之間的差別。

如果你瞭解HTML/CSS並熟悉JavaScript,但卻對ActionScript或Flex一無所知的話,那麼應該花些時間學習一下面向對象編程,因爲ActionScript是一門完全的面向對象編程語言,而Flex則是一個面向對象的框架。
1. 再簡單的東西也是異步的

Flex是一個異步框架,因此我們絕對不能指望代碼調用後就能立刻執行。事實上,我們是無法預知方法的調用序列的。
2. 搞清楚Flex組件的樣式與屬性

Flex UI組件(按鈕、菜單等等)既有屬性(通過ActionScript語言指定)也有樣式(通過Flex框架指定)。搞清楚他們之間的區別是非常重要的,因爲組件的某些可視化效果可以通過屬性指定,但另一些卻只能通過樣式設定。通過屬性指定:

button.width = 100;
button.height = 50;

通過樣式指定:

<mx:Style>
Button {
color: #cc0000;
textRollOverColor: #ccff00;
fontFamily: Trebuchet MS;
}
</mx:Style>
<mx:Button id="setupB" text="Click Me" click="onSetup()" />

3. Flex中的樣式與HTML中的不盡相同

可以使用標準的CSS樣式表來爲Flex組件添加樣式,也可以在Flex應用中包含CSS樣式表。雖然標準CSS使用連字符(例如text-font)格式來定義樣式名稱,但是Flex使用駝峯式的命名格式(例如textFont)。這是因爲連字符不能出現在XML的屬性中,所以不能用這樣的名字作爲 MXML標籤的屬性。

當然了,如果把樣式定義在外部的CSS文件中或者Style標籤中,也可以使用連字符格式的樣式名。此外,Flex還定義了很多HTML中不存在的CSS樣式。
4. 儘管看起來不同,但MXML和ActionScript本質上是一回事

在Flex中聲明的所有MXML標籤都會被Flex編譯器轉換爲ActionScript代碼;當然了,也可以在MXML文件中嵌入內聯的ActionScript代碼。既可以使用MXML也可以使用ActionScript創建新組件。
5. 理解Flex的Code-behind模式

雖然MXML和ActionScript本質上是一樣的,但他們各司其職。一般來說,MXML負責顯示界面,而ActionScript用來完成功能。 Code-behind用於解耦MXML和ActionScript,這樣設計師可以直接修改MXML而無需閱讀代碼,程序員則可以更好地組織和重用功能。
6. 理解Flex組件的生命週期

Flex通過狀態機機制定義了一套完美的生命週期模型,用於組件的創建、運行和銷燬,還定義了一些“入口”,開發者可以藉此完成定製化的工作。沒有透徹理解組件的生命週期可能會導致錯誤的編程模型。
7. 理解Flash運行時所使用的“跑道”模型

理解Flash Player的渲染和代碼執行機制非常重要的。在執行了改變界面的指令時,Flash Player並不是立刻把你要的內容顯示在屏幕上,它根據一定的週期來刷新屏幕,而代碼的執行則是另一回事。這和Java正好相反,Java總是等待程序主動告訴它什麼時候重繪屏幕。
8. 理解數據綁定與查看器(Watcher)

Flex提供了一種數據綁定機制。簡單地說,就是將一個源屬性綁定到一個目標屬性上,當源屬性發生變化時,目標屬性也會隨之變化。不僅僅可以綁定到屬性,還可以綁定到函數。甚至可以爲某個屬性創建一個Watcher,當屬性變化時會獲得事件通知。
9. 數據封裝與鬆耦合非常重要

對於Flex和AIR項目來說,代碼組織與高層結構非常重要。有些人竟然在一個文件中編寫了1000多行代碼,這導致的問題就是牽一髮而動全身。
10. 理解ActionScript中的弱引用與強引用

不管使用何種語言與開發環境,內存管理始終是一個重要的問題,ActionScript也不例外。如果不理解運行時環境的內存管理,那麼很容易就會出現內存泄露與內存碎片問題。請閱讀這篇博文及文章來深入瞭解ActionScript的垃圾收集機制。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章