數(shù)據(jù)訪(fǎng)問(wèn)
Macromedia Flex為面向服務(wù)器架構(gòu)(SOA – service-oriented architecture)而開(kāi)發(fā)。在這一模型中,應(yīng)用通過(guò)與分散在不同地方的服務(wù)進(jìn)行交互,來(lái)完成自己的任務(wù)。例如,如果創(chuàng)建一個(gè)在線(xiàn)旅行應(yīng)用,你需要與不同的服務(wù)進(jìn)行交互:全球旅館預(yù)定服務(wù),目的信息服務(wù),天氣服務(wù)等等。這些服務(wù)可能以不同的機(jī)制來(lái)提供,并且來(lái)自不同的地方。Flex使你能在客戶(hù)端匯集信息,并提供三種不同的數(shù)據(jù)服務(wù)組件,以滿(mǎn)足對(duì)服務(wù)提供者進(jìn)行特定數(shù)據(jù)訪(fǎng)問(wèn)的需求:WebService組件,HTTPService組件(一般使用XML通過(guò)HTTP進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn))以及RemoteObject組件。MXML允許你用相應(yīng)的WebService, HTTPService, and RemoteObject標(biāo)簽來(lái)設(shè)置與服務(wù)的連接。
數(shù)據(jù)綁定
在許多語(yǔ)言中,如何在用戶(hù)界面控件中顯示后臺(tái)數(shù)據(jù),是件令人頭疼的事情,而且非常容易出錯(cuò)。收集用戶(hù)在控件中輸入的數(shù)據(jù),并傳給遠(yuǎn)程服務(wù)也常常是件乏味的事情。
Flex的特色之一,就是提供了雙向的數(shù)據(jù)綁定機(jī)制:你可以將用戶(hù)界面控件綁定到服務(wù)調(diào)用的數(shù)據(jù)結(jié)果集上,反過(guò)來(lái),也可以將服務(wù)的參數(shù)綁定到用戶(hù)界面控件輸入的值上。
下面是一個(gè)簡(jiǎn)單的股票報(bào)價(jià)應(yīng)用。例子使用了WebService標(biāo)簽來(lái)設(shè)置與XMMethods提供的股價(jià)web服務(wù)進(jìn)行連接。這個(gè)例子闡明了Flex的雙向綁定功能。getQuote方法的symbol輸入?yún)?shù)被綁定到symbol TextInput組件上。quote標(biāo)簽被綁定到getQute方法的調(diào)用結(jié)果上。
<?xml version="1.0" encoding="iso-8859-1"?> <mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml"> <mx:WebService id="wsStock" wsdl="http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl"> <mx:operation name="getQuote"> <mx:request> <symbol>{symbol.text}</symbol> </mx:request> </mx:operation> </mx:WebService> <mx:Label text="Enter a symbol:"/> <mx:HBox> <mx:TextInput id="symbol"/> <mx:Button label="Get Quote" click='wsStock.getQuote.send()'/> </mx:HBox> <mx:Label id="quote" fontWeight="bold">{wsStock.getQuote.result}</mx:Label> </mx:Application>
圖4.股價(jià)應(yīng)用 實(shí)際上,F(xiàn)lex數(shù)據(jù)綁定機(jī)制比傳統(tǒng)的重取/顯示(retrieve/display)方式更勝一籌:在Flex應(yīng)用中,你可以將任意對(duì)象的任意屬性綁定到另一任意對(duì)象的任意屬性值上。
使用層級(jí)樣式表(CSS)
Flex使用層級(jí)樣式表標(biāo)準(zhǔn)來(lái)保證用戶(hù)界面的一致性,并使應(yīng)用更易于維護(hù)。就像在HTML中一樣,你可以在應(yīng)用中嵌入一個(gè)指向外部的樣式表,或在特定的標(biāo)記元素下將某種風(fēng)格定義為其屬性。樣式表還允許定義字體。所需字體定義內(nèi)嵌于應(yīng)用的字節(jié)碼中,即使用戶(hù)的機(jī)器上沒(méi)有這樣的字體,也能被正確的渲染出來(lái)。
下面是一個(gè)名為main.css的外部樣式表。
@font-face {
src: url("LucidaSansRegular.ttf");
font-family: mainFont;
}
.error {
color: #FF0000;
font-size: 12;
}
.title {
font-family: mainFontBold;
font-size: 18;
}
TextArea {
backgroundColor: #EEF5EE;
}
下面的例子通過(guò)使用<mx:style>標(biāo)簽聲明了一個(gè)外部樣式表,并對(duì)不同的控件使用了不同的樣式。
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:style src="main.css"/>
<mx:Label styleName="error" text="This is an error"/>
<mx:Label styleName="title" text="This is a title"/>
<mx:TextArea width="200" height="100" wordWrap="true">
This is a TextArea
</mx:TextArea>
</mx:Application>
圖5.使用外部樣式表的應(yīng)用
特效
復(fù)雜Internet應(yīng)用常常被拿來(lái)和客戶(hù)/服務(wù)器應(yīng)用進(jìn)行比較。因?yàn)樗鼈兲峁┝送患?jí)別的用戶(hù)體驗(yàn)。但是,容易忽視的區(qū)別是,兩者的用戶(hù)各具特點(diǎn)。使用客戶(hù)/服務(wù)器應(yīng)用的客戶(hù)通常是備受折磨后,最終適應(yīng)了他們需要面對(duì)的用戶(hù)界面。而復(fù)雜Internet應(yīng)用的客戶(hù)通常是臨時(shí)性的用戶(hù)。在這樣的條件下,一個(gè)不直觀(guān)的用戶(hù)界面將會(huì)喪失機(jī)會(huì)。
適當(dāng)?shù)氖褂锰匦,如浮?dòng)提示和進(jìn)度狀態(tài),有助于客戶(hù)直觀(guān)的了解當(dāng)前內(nèi)容。在MXML中,你可以通過(guò)設(shè)置動(dòng)畫(huà)達(dá)到這一目的。
下面的例子使用了Flex特性庫(kù)中的prebuilt特效,在這個(gè)例子中,當(dāng)square組件顯示時(shí),使用WipeRight特效,而消失時(shí)則使用了WipeLeft特效。
<?xml version="1.0" encoding="iso-8859-1"?> <mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml"> <mx:View id="square" width="100" height="100" backgroundColor="#666699" showEffect="WipeRight" hideEffect="WipeLeft"/>
<mx:HBox> <mx:Button label="Display" click="square.visible=true"/> <mx:Button label="Hide" click="square.visible=false"/> </mx:HBox> </mx:Application>
總結(jié)
Flex語(yǔ)言包含了一個(gè)豐富的用戶(hù)界面組件庫(kù),MXML(一種基于XML的標(biāo)記語(yǔ)言)和ActionScript(基于ECMA 262的、強(qiáng)類(lèi)型面向?qū)ο缶幊陶Z(yǔ)言)。MXML用于排布用戶(hù)界面和處理應(yīng)用中其他方面的問(wèn)題,而ActionScript用來(lái)處理用戶(hù)交互邏輯。由于Flash平臺(tái)的普及,F(xiàn)lex使開(kāi)發(fā)者可以開(kāi)發(fā)廣泛的應(yīng)用程序。開(kāi)發(fā)者可以使用工業(yè)標(biāo)準(zhǔn)(如XML,CSS和SVC)和他們所熟悉的模式和范例來(lái)創(chuàng)建應(yīng)用。Flex的分離協(xié)作方式和Macromedia公用組件模型也使得開(kāi)發(fā)者和界面設(shè)計(jì)者能更好的進(jìn)行協(xié)作,在可靠的、易于維護(hù)的架構(gòu)上生產(chǎn)出在用戶(hù)體驗(yàn)方面有突破性的產(chǎn)品。
關(guān)于作者
從1994-2000年,Christophe Coenraets 服務(wù)于Powersoft公司,該公司現(xiàn)在已被Sybase并購(gòu)。他用Java工作始于1996年,并成為公司Java and Internet Application 部門(mén)的技術(shù)專(zhuān)員。Christophe后來(lái)加入Macromedia公司成為公司J2EE應(yīng)用服務(wù)器JRun的技術(shù)專(zhuān)員。Christophe在這一職位上開(kāi)始研究復(fù)雜Internet應(yīng)用,著手將Flash前端與J2EE后端進(jìn)行集成,Christophe目前是Macromedia的 new developer-centric Rich Internet Applications initiative的高級(jí)專(zhuān)員。過(guò)去的十年間,Christophe經(jīng)常在全球范圍的研討會(huì)中發(fā)言。
出處:
責(zé)任編輯:一個(gè)好孩子
上一頁(yè) Macromedia Flex 標(biāo)記語(yǔ)言簡(jiǎn)介[1] 下一頁(yè)
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|