中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flex是如何工作的

發布時間:2021-12-04 16:33:41 來源:億速云 閱讀:142 作者:小新 欄目:編程語言

小編給大家分享一下Flex是如何工作的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Flex是如何工作的

該部分文檔的內容是為用戶提供關于Adobe?Flex工作機制的一個快速綜述。通過本章節的學習,你可以創建你的第一個Flex應用程序,并將它與你以前所熟悉的Web開發技術進行比較,以領會Flex的內涵和精髓。

Flex學習第一節:構建并運行Flex應用程序

Flex是一個提供開發設計和運行支持的架構,它可以使開發人員創建利用Adobe?
Flash?Player9作為前臺的“富客戶端互聯網應用程序/richInternetapplications/RIA”,以滿足用戶更為直觀和極具交互性的在線體驗。

◆開發Flex應用程序的典型步驟如下(通常是這樣):

1.選取一系列預先定制好的、用于設計應用程序界面的組件(如表格、按鈕等等)
2.布置組件以設計用戶界面。
3.使用樣式和主題來增強視覺方面的設計。
4.添加動態行為(例如程序部件之間的相互作用)。
5.定義并連接所需的數據庫服務。
6.將源代碼編譯成SWF文件,然后在FlashPlayer中運行。

◆Flex學習手冊中一個典型的Flex應用程序包括如下元素:

1.Flexframework

Adobe?Flex2framework包含了創建RIA所需要的所有組件,它們是:用于應用程序布局規劃的容器;針對用戶界面和從用戶處獲取數據的控制(例如文本框和按鈕);廣泛支持的數據綁定、數據格式化、以及有效值驗證;事件驅動的開發模式。Flexframework被包含在公用組件庫(SWC)文件中。

2.MXML

每個Flex應用程序至少包含有一個MXML文件,它被作為該程序的主文件。MXML是一種標記語言,它是基于XML的一種實現,用來創建Flex應用程序。你可以使用它去聲明程序中所使用的標簽結構的定義。

3.ActionScript3.0

你可以使用ActionScript3.0為應用程序添加動態行為,它是基于ECMAScript的一種實現,類似于JavaScript。你可以將ActionScript作為一個腳本塊,在MXML文件中直接進行添加;或者創建一個單獨的ActionScript文件,然后將它們導入到MXML文件中。

4.CSS

你可以通過設置組件的屬性(properties)來改變組件(按鈕、列表框等)的視覺樣式。
例如,按鈕組件有一個fontFamily屬性,你可以使用它來進行字體的設置。樣式的屬性通常有四種方法來進行控制:通過主題(theme);在CSS文件中進行定義;在MXML文件中的樣式塊中進行定義;在組件的實例中進行設置。

5.圖形資源

與很多應用程序一樣,Flex包含了各種各樣的圖形資源,如圖標和圖象。

6.數據

一些組件被使用來進行數據顯示(combobox或者datagrid)的工作。同時,你還可以使用各種方式來將這些組件與數據聯系起來,如使用數組、收集對象、數據模型、以及外部XML數據資源,等等。

Flex應用程序是如何編譯和發布的:

所有的元素都被編譯或連接到你的Flex應用程序中。Flex應用程序被編譯成一個SWF文件,然后在FlashPlayer下運行。當一個源代碼被編譯時,它就被轉換成ActionScript類(譯者注:這正是Flex精髓的地方之一,即提供從MXML到ActionScript的轉換),并與圖形和其它資源合并到SWF文件里。在運行時,SWF文件與所需的外部庫、服務和數據源進行交互。

一般的Flex應用程序并不需要服務器端所提供的支持。因此,你可以在你的本地計算機上編譯它們,然后在Web服務的HTML頁面中發布給你的用戶。
當然,你還可以將Flex與Adobe?FlexDataServices2、ColdFusionFlashRemotingService、或者其它Java和J2EEService服務器技術結合起來,進行B/S結構的網絡應用程
序的開發。

MXML:一切開始的地方

你可以在MXML中使用Flex所提供的組件來定義用戶界面。這里有一個主MXML程序文件的例子:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"> <mx:Panel> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"/> <mx:Buttonlabelmx:Buttonlabel="Close"/> </mx:Panel> </mx:Application>

如果你對XML已經很熟悉了,就能一眼識別出這個例子的格式。MXML代碼的頭兩行包含了版本號、編碼、以及命名空間的信息,文檔的主體包含的是程序的具體內容。
Flex應用程序所有的具體內容都被放在<mx:Application>標簽對中。同時,你還可以在父標簽對中嵌套其它的子標簽對(譯者注:反正標簽是成對出現的,這點一定要記住)。
該例子創建了一個簡單的程序,它在屏幕上顯示“SayhellotoFlex!”的文字。在該程序中,聲明了TextArea和Button組件,并設置了它們相應的text和label屬性。

備注:在MXML文件中的每個標簽都有前綴mx,它是Flex的設計命名空間。

Flex學習第二節:連接數據

請記住,在Flex應用程序中對數據的操作最重要的事情是:Flex應用程序并不直接與一個數據庫進行連接。因此,Adobe?FlexBuilder2沒有提供直接連接數據的工具。你可以通過使用MXML和ActionScript代碼來操作和管理數據。

在Flex中,你可以使用幾種方法去操縱和管理數據,它們大多數相關的內容已經超出了在這里進行簡要介紹的范圍(更多的信息,請查看后面的章節)。不管怎樣,請想象一種可以連接外部數據的方法,隨后的例子將演示與XML結構的數據進行連接。

數據的生成
因為Flex應用程序并不直接與一個數據庫進行連接,所以你需要使用某種類型的服務來支持對數據的使用。在隨后的例子中,將使用HTTPService組件從PHP所產生的一個XML文件中獲取數據。

連接數據庫的第一步是生成將在Flex程序中使用到的數據。在與PHP的應用中,你將采用如下的步驟:

1.創建一個數據庫(如MySQL)。

2.編寫一個PHP腳本連接MySQL數據庫并生成XML格式的數據。
這些步驟同樣適合于在其它工作平臺上生成的數據(如ASP.NET、JSP等)。

◆連接外部數據源

對于PHP所生成的XML格式數據,你可以使用HTTPService組件來請求獲取數據,就象這樣:

<mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute">  <mx:HTTPService id="productsRequest" url="http://www.somesite.com/products.php"/> ...

HTTPService組件定義了一個請求ID,你將使用這個ID來控制提供數據的URL或者服務器與數據之間的綁定。

◆外部數據與數據驅動控制的綁定

通過數據與數據驅動控制(data-drivencontrol)的綁定,你就可以處理HTTPService的結果(XML數據),就象這樣:

<mx:DataGridxmx:DataGridx="20"y="80"id="productGrid"width="400"  dataProvider="{productRequest.lastResult.products.items}"> <mx:columns> <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Name"dataField="name"/> <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Price"dataField="price"/> </mx:columns> </mx:DataGrid>

數據綁定的語法顯示在數據控制的dataProvider屬性中(在波浪形的括號里),它包含了HTTPService請求ID、lastResult方法、以及XML文件的數據結構。在這個例子中,XML數據源的數據結構看起來就象這樣:

<XML> <products> <item> <name>MobilePhone</name> <price>$199</price> </item> <item> <name>CarCharger</name> <price>$34</price> </item> ...

通過設置dataField屬性,項目數據(name和price)作為數據柵格中每一列的數據。

◆在運行時加載數據

你還可以在Flex程序開始運行時加載數據,就象隨后所示,在HTTPService中向某個特定的URL發送一個請求:

<mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"creationComplete="productsRequest.send()">

當你將creationComplete方法添加到應用程序標簽里后,數據會在運行時進行加載并交于數據驅動控制(在這個例子中是數據柵格)。
你還可以將HTTPService請求添加到一個控制事件上而不是程序里的標簽中,就象如下所示:

<mx:Buttonxmx:Buttonx="50"y="8"label="GetData" click="productsRequest.send();"/>

Flex提供許多方法去連接、管理、格式化、以及校驗數據。你可以通過使用遠程程序調用、數據服務、或者其它企業級技術來操縱和管理數據。

Flex學習第三節:關于FlashPlayer安全性方面的問題

出于安全方面的考慮,在客戶端的FlashPlayer中運行的應用程序,只有在滿足如下條件之一的情況時才能訪問遠程的數據源:

1.應用程序所編譯的SWF文件與遠程數據源位于同一個域中。

2.使用代理(proxy),并且你的SWF文件位于和代理相同的服務器上。AdobeFlexDataServices為Flex應用程序提供了一個完整的代理管理系統。同時,你還可以通過使用一種web腳本語言,如ColdFusion、JSP、PHP或者ASP來創建一個簡單的代理服務。

3.安裝crossdomain.xml(跨域策略/cross-domainpolicy)文件在數據源的宿主Web服務器上。crossdomain.xml文件允許位于其它域中的SWF文件對數據源的訪問。

第四節為Flex應用程序設計界面布局

讓我們來詳細分析一下前面那個“SayHellotoFlex“的簡單例子,你可以通過設置組件的屬性值來控制Flex應用程序的界面布局,就象如下所示:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"> <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"  right="30"/> <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/> </mx:Panel> </mx:Application>

許多容器組件都允許以絕對坐標的方式創建布局,這就意義著你可以使用精確的x和y的坐標來放置組件。你還可以對應其父容器的相對位置來放置組件并約束它們,使它們在應用程序的界面放大或縮小時仍然保持其彼此的位置。

在這個例子中,面板/Panel組件的布局屬性被設置為絕對值方式,同時所有容器的大小都被設置為應用程序的百分之八十。兩個組件(TextArea和Button)被放置到距離面板容器邊界的特定象素位置上。

◆使用風格和主題增強視覺方面的設計

如果樣式/style的屬性值沒有被指定,它們將由整個程序中運行的主題/theme來進行控制。在默認情況下,Flex應用程序使用Halo主題(就象上面那個例子那樣)。當然,你可以修改默認的主題或者干脆自己創建一個。你還可以簡單地指定新的樣式定義來改變默認的主題樣式,就象這樣:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute">  <mx:Style> TextArea{  font-size:36px;  font-weight:bold;  }  </mx:Style>  <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%" x="122"y="24"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"right="30"/>  <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/> </mx:Panel> </mx:Application>


通過明確地為TextArea組件定義一個樣式,應用程序現在看起來就會象這樣了:

在這個例子中,一種新樣式在MXML文件中的<mx:Style>標簽里進行了定義。如同我們前面所提到過的,你還可以通過修改主題或應用新主題、使用一個外部CSS文件、或者設置單獨的樣式屬性來達到設置新樣式的目的。
將一個樣式單導入到MXML文件中,你需要添加如下的代碼:

<mx:Stylesourcemx:Stylesource="styles.css"/>

Flex學習第五節:事件和行為的使用

HTML應用程序的原理是由客戶端發出請求,并從服務器端得到反應。與之不相同的是,Flex應用程序是基于事件的/event-based。舉個例子,當用戶單擊一個按鈕時,便會觸發一個事件。應用程序本身,不是指服務器,包含了識別事件的邏輯并采取相應的行動。

◆當事件被觸發時修改組件的屬性

對某個組件以編程方式進行操作時,為了對某個事件作出反應,必須首先要引用它,這時你就需要賦予它一個ID值,如下所示:
<mx:Panelid="myPanel"layout="absolute"width="80%"height="80%"x="122"y="24">
隨后你就可以將行為/behavior添加到應用程序上,當某個事件被觸發時改變組件的屬性值,就象這樣:
<mx:Buttonlabel="Close"right="30"bottom="40"click="myPanel.visible=false"/>當按鈕被單擊時,面板的可見屬性值被設置為false。

◆使用ActionScript功能函數

你也可以通過編寫ActionScript功能函數,并在事件中調用它來達到相同的目的,在這種情況下,按鈕組件的單擊事件如下所示:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"> <mx:Stylesourcemx:Stylesource="styles.css"/>  <mx:Script> <![CDATA[  publicfunctionclose():void{  myPanel.visible=false;  }  ]]> </mx:Script>  <mx:Panelidmx:Panelid="myPanel"layout="absolute"width="80%"  height="80%"x="122"y="24"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"  left="10"right="30"/> <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"click="close();"/> </mx:Panel> </mx:Application>

ActionScript功能函數是在MXML文件里的<mx:Script>塊中進行定義的,然后引用到按鈕的單擊事件上。

◆單獨的ActionScript代碼

為了從MXML文件中更好地分離出ActionScript代碼,你可以將它們放到單獨的ActionScript文件中而不是作為函數,然后再將它們導入到MXML文件里,如下所示:

<mx:Scriptsourcemx:Scriptsource="myFunctions.as"/>

◆運用行為和變換增強豐富的視覺互動性

Flex應用程序是事件驅動的,這就意味著你可以在程序運行時使用事件去添加豐富的視覺互動性。為了實現它,你使用了一個事件觸發器,用其來描述一個行為。
在前面的例子中,面板組件的visible屬性值被設置為false因而不可見。你還可以通過使用行為來制造出更強的視覺效果。
下面的例子創建了一個行為,該行為首先創建好一種效果,然后把它綁定到組件的hideEffect屬性上(觸發器):

<mx:Fadeidmx:Fadeid="myFade"/> <mx:Panelidmx:Panelid="myPanel"layout="absolute"   width="80%"height="80%"  hideEffect="{myFade}">

當關閉按鈕被單擊時,面板組件淡出而不是消失。
觸發器和效果還可以組合到更為復雜的行為中,其被稱之為變換/transitions。

Flex學習第六節:在應用程序中添加多態頁面

有幾種方法在一個Flex應用程序中創建多態頁面。你可以使用ViewStack組件、創建單獨的MXML文件、或者使用視圖狀態。視圖狀態可以被看作是一個組件或組件群構成的預定義的用戶界面布局。你可以使用視圖狀態為程序表現出不同的視覺效果。每一種視圖狀態都是基于一種基礎的狀態,并進行繼承和擴展。
在隨后的例子中,當用戶在組件上滾動鼠標時,基礎狀態發生變化。

當一個視圖狀態被調用時(通過用戶的鼠標在組件上滾動時產生的事件),一種效果(或一種變換)改變了用戶界面的外觀。
使用視圖狀態方式、ViewStack方式還是MXML文件方式,取決于你想從一個頁面到另一個頁面進行變化的范圍、用戶界面的復雜性、以及實現Flex程序的構架。

Flex學習第七節:開始使用Flex

現在,想必你對Flex的概念有了一個基礎的認識,讓我們開始創建Flex應用程序吧。

◆使用FlexBuilder

通過使用新項目向導/NewFlexProjectWizard創建一個Flex項目(File>New>FlexProject)。設計,編譯,以及調試Flex應用程序所需的所有工具,都被包括在FlexBuilder中了。

◆使用FlexSDK

創建一個文件名后綴為MXML的文本文件,在其中添加MXML文件的基本元素(上述例子中的頭兩行代碼),然后使用文檔資料(特別是AdobeFlex2LanguageReference)去研究各種組件的用法。編譯和調試工具是以命令行的方法提供的。

以上是“Flex是如何工作的”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿尔山市| 宜君县| 上林县| 贺兰县| 兴海县| 密云县| 大荔县| 潮州市| 姜堰市| 盐池县| 疏附县| 磐安县| 南皮县| 湖口县| 察隅县| 四平市| 隆回县| 广东省| 神木县| 安国市| 临颍县| 邻水| 绥阳县| 清徐县| 永安市| 长寿区| 荔波县| 宣威市| 湘潭县| 沐川县| 周口市| 开原市| 游戏| 瓮安县| 河池市| 星子县| 富锦市| 佛教| 大渡口区| 新建县| 花莲县|