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