亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

Macromedia Flex 標記語言簡介

2020-01-31 16:14:15
字體:
來源:轉載
供稿:網友
Macromedia Flex 標記語言簡介 
    Macromedia Flex(開發代號為Royale)是一個展現服務器,開發者可以用它來開發新一代的“復雜Internet應用”(RIAs - Rich Internet Applications)。復雜Internet應用融合了桌面應用的可用性和web應用的易于管理的優點。

    Flex是一個在J2EE應用服務器或servlet容器安裝的展現服務器。它擁有豐富的用戶界面組件、用于排布這些組件的基于XML的標記語言,以及可以處理用戶交互的面向對象編程語言。這些技術的給我們帶來的是:使用Flash播放器渲染復雜Internet應用,使用工業標準和開發者熟悉的方式進行開發。

    本文將專注于Flex語言的關鍵部分。

    為了運行本文中提到的代碼,你可能需要加入Flex的Beta測試。Flex運行于象Macromedia JRun, IBM Websphere, BEA WebLogic, or Apache Tomcat 這樣的J2EE應用服務器之上。Flex未來將支持Microsoft .NET服務器。

Flex 語言簡介

    由于標記語言和面向對象程序設計語言廣泛應用,因此,基于這兩項技術的Flex語言也將從中獲益。標記語言是成功的,排布用戶界面也相對容易。MXML,由Flex引入的、基于XML的標記語言,將延續其成功。和HTML很象,你可以用MXML來排布應用的用戶界面。同為基于XML的標記語言,MXML比HTML有更強的結構,更少的語法歧義。比起HTML,MXML還引入了更豐富的標簽集。如:DataGrid,Tree,TabNavigator,Accordion和Menu,這些都是標準標簽集中的一部分。你還可以擴展MXML標簽,創建自己的組件。此外,二者最大的區別是,MXML定義的用戶界面是用Flash播放器運行的,相對傳統的基于HTML、頁面為中心的web應用而言,這將更具吸引力。

    除了排布可視組件,還可以用MXML來定義應用中其他重要方面,如,可以把應用定義為一個web服務的客戶,或是在應用中開發動畫,用于提示用戶進度。

    但是,標記語言提供的編程邏輯仍難以滿足用戶交互的需求。在Flex中,可以用ActionScript編程語言來編寫事件監聽器來滿足此種需求。ActionScript是一種基于ECMA-262標準的、強類型的面向對象語言,和其他編程語言――java和C#很相似,因此也很易于上手。

    總而言之,當編寫一個Flex的應用時,需要用MXML來設置用戶界面,并用ActionScript來編寫響應用戶交互的邏輯。

    作為一個開發者,你可以根據自己的喜好,用自己所熟悉的IDE(比如Eclipes或Intellij)手工編寫MXML,也可以使用Flex支持的“所見即所得”開發環境(目前開發代號為Brady)。即使你選擇手工編寫MXML,仍可使用Flex提供的XML schema,在IDE中為你提供代碼提示(code hinting)和代碼自動填充(code completion)的功能.

    下面例子是一個名為HelloWord.mxml的簡單Flex應用的源代碼。該應用程序有兩個TextInput組件,當點擊Copy時,source TextInput的內容就會顯示在destination TextInput域中。以下例子顯示如何用MXML和ActionScript來創建應用:用MXML定義用戶界面,再用ActionScript為Button組件的事件監聽器編寫拷貝邏輯。

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:Application xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:TextInput id=“source“ width=“100“/>
<mx:Button label=“Copy“ click=“destination.text=source.text“/>
<mx:TextInput id=“destination“ width=“100“/>
</mx:Application>

Flex開發與部署模型

    要開發并部署這個應用,一般要經過以下步驟:

    1. 用你熟悉的IDE或Flex的“所見即所得”開發工具編寫HelloWold.mxml文件。

    2. 把該文件部署到應用服務器上。一般可以通過拷貝HelloWorld.mxml到某個web應用的目錄下,或將HelloWorld.mxml作為應用的一部分打包到WAR文件中去。

    當一個用戶首次請求HelloWorld.mxml的時候,服務器會將MXML代碼編譯為Flash字節碼(一個SWF文件)。然后服務器將產生的SWF文件發往客戶端,讓Flash播放器執行。對同一個MXML文檔的并發請求,服務器將跳過編譯過程,直接返回相同的編譯結果。

    如果你對JavaServer Pages比較熟悉,就會發現它們的模型非常相似。就像JSPs被編譯為Java字節碼(servlets)一樣,MXML文件將被編譯為Flash字節碼。二者的主要不同在于:在Flex中,產生的字節碼是在客戶端執行的,而由JSP產生的Java字節碼(servlet)是在服務器端執行的。通過Flex,你可以將復雜客戶端應用無縫的集成到已有的商業邏輯中。

使用MXML用戶界面組件

    擁有豐富的用戶組件是Flex的一大特色。除了傳統的數據輸入控件(Text InputTextArea,CheckBox,RadioButton,ComboBox等等),MXML還包括了一些高級組件,用于維護結構化數據(Tree 組件)和大數據集(DataGrid 組件)。為了清晰的組織數據及其處理過程,Flex還提供了導航組件(Tab,ViewStack,Accordion等等)。

    為了更易于組織用戶界面,Flex容器還定義了布局管理策略,用于指明一個組件相對與另一個組件的位置。Flex組件庫提供了大量的、可實現不同布局策略的容器。比如,在HBox中的組件將被水平排列,而在VBox中的組件會被垂直排列,而在Grid中組件將以行列的方式進行排列,就象HTML的table一樣。View容器中沒有定義任何布局管理策略,因此你可以用x,y坐標來指定組件的位置。

    下面給出一個在Flex環境下、具有三個面板的傳統e-mail界面。HBox容器中的Tree是水平排列的,而VBox容器中的DataGrid和TextArea則是垂直排列的。

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:Application xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:HBox>
<mx:Tree/>
<mx:VBox>
<mx:DataGrid/>
<mx:TextArea/>
</mx:VBox>
</mx:HBox>
</mx:Application>

編寫ActionScript代碼

    Flex語言是事件驅動的。MXML將事件作為標簽的屬性,你可以為它編寫事件監聽器。比如,Button組件有一個click屬性,ComboBox,List和Tree組件有一個change屬性,等等。

    對于簡單的交互,可以在標簽的事件屬性上直接編寫ActionScript語句。例如,在HelloWorld應用中,存在Button的click事件監聽器中的ActionScripts語句,能把source TextInput 的內容拷貝到destination TextInput中。

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:Application xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:TextInput id=“source“ width=“100“/>
<mx:Button label=“Copy“ click=“destination.text=source.text“/>
<mx:TextInput id=“destination“ width=“100“/>
</mx:Application>

    當邏輯更為復雜的時候,可以定義獨立的ActionScript函數,然后在組件的事件監聽器中調用。例如,你可以象下面一樣,重寫HelloWorld應用:

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:Application xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:script>
function copy() {
destination.text=source.text
}
</mx:script>
<mx:TextInput id=“source“ width=“100“/>
<mx:Button label=“Copy“ click=“copy()“/>
<mx:TextInput id=“destination“ width=“100“/>
</mx:Application>

    創建一個MXML文件,實際上是創建了一個類。定義在<mx:script>標簽中的ActionScript函數是該類的方法。你可以在MXML文件或獨立的文件中定義ActionScript函數。選擇哪種方法,取決你所在的組織,后一種方法可以對開發團隊進行更好的分工。

定義自己的組件

    在Flex中,你可以從頭開始,或通過擴展Flex組件庫中已有的組件,來創建自己的組件。創建組件就象創建一個應用一樣:用MXML排布用戶界面,用ActionScript編寫用界面邏輯。

    下面的一個例子是,通過擴展VBox類來創建簡單的信用卡選擇組件。

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:VBox xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:RadioButton groupName=“card“ id=“americanExpress“
label=“American Express“ selected=“true“/>
<mx:RadioButton groupName=“card“ id=“masterCard“ label=“MasterCard“/>
<mx:RadioButton groupName=“card“ id=“visa“ label=“Visa“/>
</mx:VBox>
    組件的名字就是源文件的名字。如,源文件的名字是CreditCardChooser.mxml,組件的名字就是CreditCardChooser,這樣,這個標簽名就可以用了。下面的例子就用上了剛才創建的CreditCardChoose組件。

<?xml version=“1.0“ encoding=“iso-8859-1“?>
<mx:Application xmlns:mx=“http://www.macromedia.com/2003/mxml“>
<mx:Label text=“Select a credit card:“/>
<CreditCardChooser/>
</mx:Application>

    界面開發者還能在Macromedia Flash開發環境中創建復雜的可視化組件,并存為SWC文件。

    當然,也可以只用ActionScript定義來整個組件,這種方法一般用于定義應用中的非可視組件。你可能會為這樣商業對象創建非可視組件――例如,包含客戶端邏輯的購物車,或是應用中helper類

數據訪問

    Macromedia Flex為面向服務器架構(SOA 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.久久久久久.com| 欧美疯狂xxxx大交乱88av| 亚洲大胆人体视频| 亚洲成人av片在线观看| 亚洲综合中文字幕在线观看| 亚洲国产精品人久久电影| 一区二区三区四区视频| 国产精品偷伦一区二区| 欲色天天网综合久久| 欧美日韩免费看| 国内成人精品视频| 亚洲精品国产综合久久| 一本色道久久综合狠狠躁篇的优点| 亚洲欧美国产视频| 日韩av色在线| 国产亚洲精品日韩| 亚洲影院污污.| 国产精品欧美一区二区三区奶水| 亚洲国产精久久久久久久| 日韩中文字幕精品| 国产日本欧美在线观看| 日韩中文字幕免费看| 欧美一级视频在线观看| 91青草视频久久| 日韩电影中文字幕在线| 亚洲第一福利网站| 欧美一级片在线播放| 黄网动漫久久久| 久久免费高清视频| 97视频在线播放| www.久久撸.com| 欧美激情视频三区| 91视频国产高清| 日韩中文第一页| 亚洲成人a级网| 欧美激情影音先锋| 中文字幕久久精品| 成人做爽爽免费视频| 国产精品第七十二页| 国产精品吴梦梦| 欧美精品生活片| 亚洲在线第一页| 97av在线视频免费播放| 精品夜色国产国偷在线| 亚洲精品98久久久久久中文字幕| 日韩美女视频免费在线观看| 日韩福利在线播放| 欧美疯狂xxxx大交乱88av| 91在线免费视频| 欧美一级大片在线免费观看| 亚洲精品不卡在线| 成人免费xxxxx在线观看| 中文字幕日韩免费视频| 欧美激情精品久久久久久| 国产91精品在线播放| 欧美成人久久久| 亚洲日本欧美日韩高观看| 97在线视频免费播放| 国产精品成人一区二区三区吃奶| 欧美日韩亚洲91| 国产mv免费观看入口亚洲| 欧美国产在线视频| 亚洲国产精品va| 国产成人一区二区三区电影| 97超碰色婷婷| 亚洲天堂一区二区三区| 欧美精品一区二区三区国产精品| 98午夜经典影视| 欧美成人网在线| 57pao国产精品一区| 久久精品久久精品亚洲人| 久久精品视频一| 成人观看高清在线观看免费| 九九精品视频在线| 88xx成人精品| 亚洲欧美国产精品va在线观看| 国产精品高清免费在线观看| 久久久极品av| 欧美高清在线视频观看不卡| 日韩大胆人体377p| 国内揄拍国内精品少妇国语| 国产精品777| 国产一区二区丝袜| 日韩av成人在线| 亚洲国产日韩精品在线| 亚洲一区二区免费在线| 欧美日韩亚洲一区二区| 中文字幕久久精品| 欧美韩国理论所午夜片917电影| 亚洲影院在线看| 亚洲欧洲黄色网| 国内精品免费午夜毛片| 国产一区二区三区三区在线观看| 国产精品久久久久久久久久小说| 欧美激情va永久在线播放| 国产欧美日韩中文| 黄色一区二区三区| 欧美国产日韩一区二区| 91亚洲精品在线| 91精品国产沙发| 亚洲欧美国产va在线影院| 欧美区在线播放| 中文字幕亚洲精品| 久久国产色av| 欧美巨大黑人极品精男| 亚洲一区二区三区乱码aⅴ| 法国裸体一区二区| 久久久欧美精品| 中文字幕9999| 欧美成人性色生活仑片| 曰本色欧美视频在线| 亚洲成人在线网| 97香蕉久久超级碰碰高清版| www国产亚洲精品久久网站| 欧美性生交xxxxx久久久| 国产精品久久999| 欧美疯狂做受xxxx高潮| 亚洲精品久久久久中文字幕欢迎你| 国产精品综合不卡av| 国产成人精品免费久久久久| 97在线观看免费高清| 在线观看国产欧美| 成人黄色激情网| 亚洲欧美另类人妖| 一区二区三区高清国产| 欧美高清视频一区二区| 国产伦精品一区二区三区精品视频| 欧美在线亚洲在线| 亚洲国产99精品国自产| 一个人看的www欧美| 777国产偷窥盗摄精品视频| 色樱桃影院亚洲精品影院| 中文字幕av一区| 中文字幕av一区| 国产精品丝袜久久久久久高清| 国产精品九九久久久久久久| 日韩中文字幕免费视频| 在线观看国产欧美| 国产精品久久久久久久久久99| 日韩在线观看免费全集电视剧网站| 国内精品小视频| 成人国产在线视频| 久久久久久一区二区三区| 精品一区二区三区电影| 日韩欧美国产免费播放| 欧美性色视频在线| 91精品国产九九九久久久亚洲| 91精品啪在线观看麻豆免费| 欧美性色xo影院| 国产精品国产自产拍高清av水多| 久久在线精品视频| 欧美大片大片在线播放| 国产不卡视频在线| 欧美视频免费在线| 国产精品伦子伦免费视频| 色综合伊人色综合网站| 在线观看不卡av| 精品久久香蕉国产线看观看亚洲| 日韩av观看网址| 亚洲精品久久久久久久久久久久| 欧美最猛性xxxxx免费| 欧美日韩国产精品一区二区不卡中文| 国产极品jizzhd欧美| 欧美一级电影久久|