<!-- MXML root element tag. -->
<!-- Flex controls exist in a container. Define a Panel container. -->
<mx:Panel title="My Application">
<!-- TextInput control for user input. -->
<mx:TextInput id="myInput" width="150" text=""/>
<!-- Output TextArea control. -->
<mx:TextArea id="myText" text="{myInput.text}" width="150"/>
</mx:Panel>
</mx:Application>
控制程序顯示
Flex定義我們在程序中可以使用的默認顯示,或者是修改來定義我們特定的顯示。作為修改演示的一部分,我們可以修改下面的一些或是全部:
尺寸 一個組件或是程序的高度或是寬度。所有的組件都有一個默認的尺寸。我們可以使用默認的尺寸,指定我們自己的尺寸,或者作為布局我們程序的一部分讓Flex重新調整一個組件的尺寸。
格式 特性集合,例如字體,字號,文本對齊屬性,顏色。這與在層疊樣式表(CSS)定義與使用的相同。
皮膚 控制組合顯示的符號。皮膚化就是通過修改或是替換他的可視化元素來改變一個組件顯示的過程。這些元素可以圖像,SWF文件,或者是包含繪畫API方法的類文件組成。
行為 程序或是用戶行為引起的對于一個Flex組件的可見的或是可聽的變化。行為的例子如基于鼠標移動點擊的移動或是組件尺寸的重新調整。
視圖狀態(tài) 在許多富網(wǎng)絡程序中,界面的改變基于用戶所執(zhí)行的任務。視圖狀態(tài)可以讓我們通過修改基內容來變化一個組件的內容和顯示或者是程序。
轉化 轉化定義了視圖狀態(tài)的改變如何顯示在屏幕上。我們使用特效類,結合處理轉化的顯式效果設計來定義轉化。
使用數(shù)據(jù)服務工作
Flex被設計用來與可以訪問本地和遠程服務端邏輯的服務進行交互。例如,一個Flex程序可以使用AMF來連接使用簡單對象訪問協(xié)議(SOAP)的網(wǎng)絡服務,返回XML的HTTP URL,或者是Flex數(shù)據(jù)服務,與位于與Flex同一個程序服務器上的Java對象。MXML提供數(shù)據(jù)訪問的組件稱之為數(shù)據(jù)服務組件。MXML包含下列的一些數(shù)據(jù)服務組件:
WebService 提供到基于SOAP的網(wǎng)絡服務的訪問。
HTTPService 提供到返回數(shù)據(jù)的HTTP URL的訪問。
RemoteObject 提供到使用AMF協(xié)議的Java對象的訪問。這個選項只在Flex數(shù)據(jù)服務或是Macromedia ColdFusion MX 7.0.2中可用。
在我們的Flex程序中選擇如何來訪問數(shù)據(jù)影響著我們程序的性能。因為Flex程序是在第一次請求之后緩存在瀏覽器中的,當程序運行時,數(shù)據(jù)訪問是影響程序性能的主要原因。為了向用戶傳遞數(shù)據(jù)Flex提供了幾種解決方案。他將數(shù)據(jù)交給調用在Flex類路徑中裝入的Java類的運行時服務,或者是向網(wǎng)絡服務或是HTTP服務器發(fā)送代理請求。
使用WebService組件允許我們使用基于SOAP的方法,但是他并不總是產(chǎn)生最優(yōu)的性能。同時,使用SOAP編碼的額處XML需要比AMF所做的更多的內容。
網(wǎng)絡服務中的SOAP性能同時依賴于我們的網(wǎng)絡服務的實現(xiàn)。不同的程序服務器使用不同的網(wǎng)絡服務后端,所以我們會看到依賴于不同實現(xiàn)的性能。理解我們的實現(xiàn)表現(xiàn)如何的唯一方法就是裝入并測試我們的服務。
在許多情況下,我們的選擇依賴于我們已存在的程序以及我們如何選擇將他們集成到后臺服務器資源中。網(wǎng)絡服務的表現(xiàn)在很大程度上依賴于我們的程序服務器的網(wǎng)絡服務引擎的底層實現(xiàn),所以我們應裝入并測試他們的性能。
將我們數(shù)據(jù)模型從我們的視圖中分離
為了清楚的分離用戶界面,程序相關的數(shù)據(jù),數(shù)據(jù)服務,我們可以使用Flex數(shù)據(jù)模型來存儲控制器與數(shù)據(jù)服務之間的數(shù)據(jù)。這種三層設計是輸入數(shù)據(jù)與數(shù)據(jù)服務共同作用的結果。
當我們計劃一個程序,我們要決定程序必須存儲的數(shù)據(jù)類型以及這些數(shù)據(jù)要如何處理。這有助于我們決定我們需要什么類型的數(shù)據(jù)模型。例如,假設我們決定我們的程序必須存儲顧員的相關數(shù)據(jù)。一個簡單的顧員模型可能包含姓名,部門以及郵箱地址屬性。
一個Flex數(shù)據(jù)模型是一個包含我們用來存儲程序相關數(shù)據(jù)的屬性的ActionScript對象。我們可以將數(shù)據(jù)模型用于數(shù)據(jù)驗證,從而他可以包含客戶端業(yè)務邏輯。我們可以在MXML或是ActionScript中定義一個數(shù)據(jù)模型。在MVC設計模式中,數(shù)據(jù)模型代表模型層。
我們可以在MXML標簽,ActionScript函數(shù)或是ActionScript類中定義數(shù)據(jù)模型。在MXML中編寫的模型用利于快速開發(fā)與簡化數(shù)據(jù)存儲,但是他不能提供任何額外的功能,而我們不可以設定模型屬性的數(shù)據(jù)類型。如果我們想要設定數(shù)據(jù)類型以及為額外的功能提供方法,我們應使用基于ActionScript的類。在通常情況下,我們應為了簡化數(shù)據(jù)結構使用基于MXML的模型,為更為復雜的結構以及客戶端業(yè)務邏輯使用ActionScript。