專家推薦 Flex完全自學(xué)教程
你對Flex的概念是否了解,這里和大家學(xué)習(xí)一下Flex完全自學(xué)教程,F(xiàn)lex通常是指AdobeFlex,它是涵蓋了支持RIA(RichInternetApplications)的開發(fā)和部署的一系列技術(shù)組合。
Flex
Flex通常是指AdobeFlex,是最初由Macromedia公司在2004年3月發(fā)布的,基于其專有的MacromediaFlash平臺,它是涵蓋了支持RIA(RichInternetApplications)的開發(fā)和部署的一系列技術(shù)組合。Flex的另一個(gè)意思是是一款生成掃描器的工具,能夠識別文本中的詞法模式。
AdobeFlex簡介
MacromediaFlash是強(qiáng)大的矢量動(dòng)畫編輯工具,在做動(dòng)畫起家之后,F(xiàn)lash一直在謀求RIA(richinternetapplication)富客戶端的霸主地位,最有影響的是,已經(jīng)推出了面向?qū)ο蟮木幊棠_本ActionScript3.0,并且建立起類似于javaswing的類庫和相應(yīng)component(組件)。Flex是通過java或者.net等非Flash途徑,解釋.mxml文件組織components,并生成相應(yīng)的.swf文件。Flex的component和flash的component很相似,但是有所改進(jìn)增強(qiáng)。目前Macromedia公司已經(jīng)被ADOBE公司收購。當(dāng)前(2008年10月)的Flex版本為3.0。(現(xiàn)在已經(jīng)4.0了(2010年))
運(yùn)用Flash是完全可以做到Flex的效果的,為什么還需要Flex呢?這里面有兩個(gè)原因:
1:為了迎合更多的developers(開發(fā)者)。Flash天生是為了designer(設(shè)計(jì)者)設(shè)計(jì)的,界面還有flash的動(dòng)畫概念和程序開發(fā)人員格格不入,為了吸引更多的jsp/asp/php等程序員,Macromedia推出了Flex,用非常簡單的.mxml來描述界面給jsp/asp/php程序人員使用.(x/d)html非常相似,而且mxml更加規(guī)范化、標(biāo)準(zhǔn)化。
2:為了一個(gè)標(biāo)準(zhǔn)。大家一定聽說過微軟最新一代操作系統(tǒng)longhorn(即vista,后續(xù)的win7也是同一核心),在longhorn推出的同時(shí)微軟也推出了新的語言xaml,一種界面描述語言,與之相應(yīng)的就是smartclient和Flex非常相似的東西(即SilverLight)。Mxml和Xaml的也很相似……這是人機(jī)交互技術(shù)的進(jìn)步的重要體現(xiàn),即內(nèi)部邏輯與外部界面交互相分離。
Flex和j2ee/.net其實(shí)沒什么關(guān)系,Macromedia用java做出來個(gè)應(yīng)用把flash的技術(shù)融合到J2EE里面,再用.net的技術(shù)做出來個(gè).net應(yīng)用把flash技術(shù)融合到.net里面去;應(yīng)該說Flex解決了J2EE里面和.net里面最繁瑣的問題那就是web客戶端的問題。
成因
傳統(tǒng)的程序員在開發(fā)動(dòng)畫應(yīng)用方面存在困難,F(xiàn)lex平臺最初就是因此而產(chǎn)生。Flex試圖通過提供一個(gè)程序員們已經(jīng)熟知的工作流和編程模型來改善這個(gè)問題。
RIA相互之間關(guān)系Flex最初是作為一個(gè)J2EE(Java2Platform,EnterpriseEdition)應(yīng)用,或者可以說是JSP(JavaServerPages)標(biāo)簽庫而發(fā)布的。它可以把運(yùn)行中的MXML(Flex標(biāo)記語言)和ActionScript編譯成FLASH應(yīng)用程序(即二進(jìn)制的SWF文件)。最新版的Flex支持創(chuàng)建靜態(tài)文件,該文件使用解釋編譯方式并且不需要購買服務(wù)器許可證就可以在線部署。
Flex的目標(biāo)是讓程序員更快更簡單地開發(fā)RIA應(yīng)用。在多層式開發(fā)模型中,F(xiàn)lex應(yīng)用屬于表現(xiàn)層。
Flex采用GUI界面開發(fā),使用基于XML的MXML語言。Flex具有多種組件,可實(shí)現(xiàn)WebServices,遠(yuǎn)程對象,draganddrop,列排序,圖表等功能;Flex內(nèi)建動(dòng)畫效果和其它簡單互動(dòng)界面等。相對于基于HTML的應(yīng)用(如PHP、ASP、JSP、ColdFusion及CFMX等)在每個(gè)請求時(shí)都需要執(zhí)行服務(wù)器端的模板,由于客戶端只需要載入一次,F(xiàn)lex應(yīng)用程序的工作流被大大改善。Flex的語言和文件結(jié)構(gòu)也試圖把應(yīng)用程序的邏輯從設(shè)計(jì)中分離出來。
Flex服務(wù)器也是客戶端和XMLWebServices及遠(yuǎn)程對象(ColdfusionCFCs,或Java類,等支持ActionMessageFormat的其他對象)之間通訊的通路。
一般被認(rèn)為可能是Flex替代品的是OpenLaszlo和AJAX技術(shù)。#p#
Flex應(yīng)用開發(fā)步驟
以下直接來源于Flex2.0Beta3的幫助文件:
◆使用一系統(tǒng)預(yù)定義組件(窗口,按鈕等)來定義一個(gè)開發(fā)界面。
◆組織安排組件,現(xiàn)在用戶自定義的界面設(shè)計(jì)。
◆使用風(fēng)格和主題來定義可見設(shè)計(jì)。
◆增加動(dòng)態(tài)動(dòng)作,如應(yīng)用程序之間的互動(dòng)。
◆定義并在需要時(shí)連接上一個(gè)數(shù)據(jù)服務(wù)。
◆從源代碼生成一個(gè)在Flash播放器中運(yùn)行的SWF文件。
版本歷史
Flex1.0-2004年3月
Flex1.5-2004年10月
版本Flex2.0(Alpha)-2005年10月
Flex2.0Beta1-2006年2月
Flex2.0Beta2-2006年3月
Flex2.0Beta3-2006年5月
Flex2.0Final-2006年6月28日
Flex2.0.1-2007年1月5日
Flex3.0Beta1-2007年1月11日
Flex3.0Beta2-2007年10月1日
Flex3.0Beta3-2007年12月12日
Flex3.0-2008年2月25日
Flex3.1-2008年8月15日
Flex3.2-2008年11月17日
Flex3.3-2009年3月4日
Flex3.4-2009年8月18日
Flex4十大主要特性變化一覽
1.集成AdobeCatalyst
2.Spark組件架構(gòu)
3.MXML2009
4.對ViewStates的改進(jìn)
5.FXG支持
6.皮膚增強(qiáng)
7.更新的布局組件
8.FlashBuilder4
9.編譯器性能
10.新的文本功能
采用AdobeFlex&AIR技術(shù)的經(jīng)典應(yīng)用
eBay(http://desktop.ebay.com)
eBay桌面是構(gòu)建于AdobeAIR上的一個(gè)應(yīng)用程序,程序創(chuàng)建了與eBay客戶的持久連接。eBay桌面實(shí)時(shí)地直接將產(chǎn)品供貨通知和拍賣更新發(fā)布給買主,這樣用戶不需要打開瀏覽器進(jìn)入eBay網(wǎng)站就可以獲取最新信息。
納斯達(dá)克股票市場公司(https://data.nasdaq.com/mr.aspx)
NASDAQMarketReplay使用AdobeFlex和AdobeAIR在桌面上發(fā)布一個(gè)RIA,讓金融專業(yè)人士能夠重放任何時(shí)間點(diǎn)市場活動(dòng)的詳情。
紐約時(shí)報(bào)公司(http://shifd.com)
紐約時(shí)報(bào)公司正在開始ShifD,一個(gè)新的RIA,允許使用者在計(jì)算機(jī)和移動(dòng)設(shè)備之間切換內(nèi)容。ShifD工作在Web網(wǎng)站和移動(dòng)設(shè)備之上以及兩者之間,通過一個(gè)可下載的AIR應(yīng)用程序提供給人們一種欣賞移動(dòng)媒體的方式。
CCTV網(wǎng)絡(luò)電視奧運(yùn)臺(OlympicNetworkTVStation)
由AdobeFlex制作、AdobeFlash技術(shù)加以傳遞前所未有的網(wǎng)頁體驗(yàn)。其中包含由CCTV奧運(yùn)媒體團(tuán)隊(duì)所提供的奧運(yùn)賽事成績、統(tǒng)計(jì)資料,以及多樣化的背景數(shù)據(jù)、比賽規(guī)則及專家分析等。同時(shí),透過社交網(wǎng)絡(luò)功能,還能讓運(yùn)動(dòng)迷與朋友們實(shí)時(shí)分享各種奧運(yùn)賽事意見及看法。#p#
Flex與Flash的關(guān)系
首先這里想說的是,F(xiàn)lash并非只是一個(gè)單純的矢量動(dòng)畫創(chuàng)作工具,而是一個(gè)憑借腳本語言ActionScript在功能和定位上不斷演變的網(wǎng)絡(luò)應(yīng)用開發(fā)工具。早在FlashMX的時(shí)候就已經(jīng)成為macroemdia推廣RIA戰(zhàn)略的工具。但是畢竟Flash最初的定位是面向美術(shù)動(dòng)畫設(shè)計(jì)師的矢量動(dòng)畫創(chuàng)作工具,并不適合傳統(tǒng)的開發(fā)人員。于是Flex成為開發(fā)者們的首選。
與FLASHFlex和Flash都以ActionScript作為其核心編程語言,并被編譯成swf文件運(yùn)行于Flashplayer虛擬機(jī)里。因此Flex也繼承了Flash在表示層上先天性的美感、除了視覺上的舒適感外,還天生具備方便的矢量圖形、動(dòng)畫和媒體處理接口。
雖然Flex和Flash有眾多的相似點(diǎn),但是不同之處仍然很多:
1.盡管公用ActionScript,但是使用的庫并不完全相同,更合適的說法是兩者使用著兩套具有極大“功能重疊”范圍的庫。
2.Flash偏向的是美術(shù)動(dòng)畫設(shè)計(jì)師人員,所以更容易發(fā)揮特效處理的優(yōu)勢,F(xiàn)lex偏向開發(fā)人員,所以容易做出具有豐富交互功能的應(yīng)用程序。
3.Flash只能以ActionScript腳本的形式開發(fā)(舞臺被關(guān)聯(lián)到一個(gè)稱之為documentclass的類里),另外舞臺元素也是可以綁定腳本的,不過從軟件工程的角度講不建議這樣用,F(xiàn)lex還可以使用稱作mxml的標(biāo)記語言來描述應(yīng)用的外觀和行為,mxml中可以直接嵌入ActionScript腳本。
4.由于第三點(diǎn)而造成的兩者市場定位不同,F(xiàn)lex是面向企業(yè)級的網(wǎng)絡(luò)應(yīng)用程序,F(xiàn)lash則面向諸如平面動(dòng)畫、廣告設(shè)計(jì)等多媒體展示程序。
5.借助FlashLite這一移動(dòng)設(shè)備上的Flashplayer,F(xiàn)lash可以開發(fā)移動(dòng)應(yīng)用,F(xiàn)lex則不行。
6.Flash的編程模型是基于時(shí)間軸的,F(xiàn)lex的則是基于窗體,雖然它運(yùn)行在網(wǎng)頁里。
Flex的技術(shù)框架
Flex技術(shù)包括以下幾個(gè)主要技術(shù)框架:
1.描述應(yīng)用程序界面的XML語言(MXML);
2.符合ECMA規(guī)范的腳本語言(ActionScript),處理用戶和系統(tǒng)的事件,構(gòu)建復(fù)雜的數(shù)據(jù)模型;
3.一個(gè)基礎(chǔ)類庫;
4.運(yùn)行時(shí)的即時(shí)服務(wù);
5.由MXML與ActionScript文件生成swf文件的編譯器。#p#
什么是用RIA?
傳統(tǒng)網(wǎng)絡(luò)程序的開發(fā)是基于頁面的、服務(wù)器端數(shù)據(jù)傳遞的模式,把網(wǎng)絡(luò)程序的表現(xiàn)層建立于HTML頁面之上,而HTML是適合于文本的,傳統(tǒng)的基于頁面的系統(tǒng)已經(jīng)漸漸不能滿足網(wǎng)絡(luò)瀏覽者的更高的、全方位的體驗(yàn)要求了。而富互聯(lián)網(wǎng)應(yīng)用(RichInternetApplications,縮寫為RIA)的出現(xiàn)就是為了解決這個(gè)問題。
RIA面向用戶富互聯(lián)網(wǎng)應(yīng)用程序是下一代的將桌面應(yīng)用程序的交互式用戶體驗(yàn)與傳統(tǒng)的WEB應(yīng)用的部署靈活性和成本分析結(jié)合起來的網(wǎng)絡(luò)應(yīng)用程序。富互聯(lián)網(wǎng)應(yīng)用程序中的富客戶技術(shù)通過提供可承載已編譯客戶端應(yīng)用程序(以文件形式,用HTTP傳遞)的運(yùn)行環(huán)境,客戶端應(yīng)用程序使用異步客戶/服務(wù)器架構(gòu)連接現(xiàn)有的后端應(yīng)用服務(wù)器,這是一種安全、可升級、具有良好適應(yīng)性的新的面向服務(wù)模型,這種模型由采用的WEB服務(wù)所驅(qū)動(dòng)。結(jié)合了聲音、視頻和實(shí)時(shí)對話的綜合通信技術(shù),使富互聯(lián)網(wǎng)應(yīng)用程序(RIA)具有前所未有的網(wǎng)上用戶體驗(yàn)。
AdobeRIA技術(shù)封裝讓現(xiàn)有的WEB技術(shù)得到了極大的保留,核心價(jià)值在于大大提高了產(chǎn)品設(shè)計(jì)師和開發(fā)工程師的“開發(fā)體驗(yàn)”,強(qiáng)化了設(shè)計(jì)端和開發(fā)端的整合。設(shè)計(jì)師和開發(fā)工程師們可以方便地將自己的代碼平移到新的平臺上,并且發(fā)布、部署的方式比之前的任何一款開發(fā)工具都方便得多,從而使RIA應(yīng)用有更廣大的開發(fā)者基礎(chǔ)。
AdobeRIA技術(shù)也將帶來新的桌面革命——“Desktop2.0”,內(nèi)容從Flash,HTML/CSS/JS,到PDF,幾乎涵蓋了時(shí)下最流行的WEB內(nèi)容載體。此外,“可離線”應(yīng)用模式能讓用戶更加安全、舒適地進(jìn)行工作和娛樂。用戶們不必再抱怨因網(wǎng)絡(luò)故障而造成的信息損失,而且也可以借助本地資源更好地節(jié)省網(wǎng)絡(luò)資源。因此,AdobeRIA技術(shù)可以讓用戶將WEB2.0應(yīng)用帶回桌面,創(chuàng)造的商業(yè)應(yīng)用價(jià)值和用戶體驗(yàn)價(jià)值將超過以往任何技術(shù)。
詞法分析器生成器Flex
Flex(fastlexicalanalysergenerator)是Lex的另一個(gè)替代品。它經(jīng)常和自由軟件Bison語法分析器生成器一起使用。Flex最初由VernPaxson于1987年用C語言寫成。
Flex手冊里對Flex描述如下:
“Flex是一個(gè)生成掃描器的工具,能夠識別文本中的詞法模式。Flex讀入給定的輸入文件,如果沒有給定文件名的話,則從標(biāo)準(zhǔn)輸入讀取,從而獲得一個(gè)關(guān)于需要生成的掃描器的描述。此描述叫做規(guī)則,由正則表達(dá)式和C代碼對組成。Flex的輸出是一個(gè)C代碼文件——lex.yy.c——其中定義了yylex()函數(shù)。編譯輸出文件并且和-lfl庫鏈接生成一個(gè)可執(zhí)行文件。當(dāng)運(yùn)行可執(zhí)行文件的時(shí)候,它分析輸入文件,為每一個(gè)正則表達(dá)式尋找匹配。當(dāng)發(fā)現(xiàn)一個(gè)匹配時(shí),它執(zhí)行與此正則表達(dá)式相關(guān)的C代碼。”
一個(gè)相似的,用C++語言的詞法分析器生成器是Flex++,包含在Flex軟件包里。
Flex不是GNU工程,但是GNU為Flex寫了手冊。
【編輯推薦】
- 探秘Flex與JavaScript交互
- 常用FlexBuilder快捷鍵用法指導(dǎo)
- Flex框架Riawave的定制應(yīng)用
- 技術(shù)前沿 Flex2.0 從零開始實(shí)現(xiàn)文件上傳
- FlexBuilder開發(fā)方法及特點(diǎn)解析