<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-86  評論-767  文章-3  trackbacks-3

    [注]本文節(jié)選自《開源技術選型手冊》的RIA篇章。該書已由電子工業(yè)出版社博文視點公司出版。 購買請點擊這里:http://www.china-pub.com/39918
    感興趣的朋友也可以從InfoQ中文網(wǎng)找到這本書的精選版:http://www.infoq.com/cn/minibooks/open-source-tools-choice ?
    綜述

    隨著 Web 技術的發(fā)展以及 Internet 的日益成熟,人們對 Web 應用程序的要求日益提高,希望其承載更多的業(yè)務邏輯,幫助人們處理日常生活、工作、學習中的一些問題。后續(xù)的,隨著無線網(wǎng)絡的普及,隨時隨地通過無線網(wǎng)絡訪問 Web 站點將成為一種可能甚至必需。但是因為 Web 模型是基于頁面的模型,缺少客戶端智能機制,所以到目前為止 Web 應用程序?qū)ν瓿蓮碗s應用方面始終跟不上步伐,整體的用戶體驗效果與桌面應用程序仍然有差距。

    傳統(tǒng)的 Web 應用程序是基于頁面跳轉(zhuǎn)模型的,每一個任務操作由一個或者多個頁面組成。典型的,如果某個操作任務是多步驟或者多選項的,那么要么需要一份很長的頁面,要么使用分頁而讓用戶在多個頁面中跳轉(zhuǎn)。這種處理方式導致用戶花費大量的時間在等待頁面的跳轉(zhuǎn)和重載刷新,這種緩慢、不自然、混亂的用戶體驗過程和效果經(jīng)常讓用戶感到懊悔和苦惱。另外一方面,傳統(tǒng)的 Web 應用程序也無法表達復雜的人機交互過程比如游戲,這種人機交互需要在用戶行動、快速移動或者情節(jié)不斷變化的時候在屏幕上不斷的反饋。不斷的重載刷新頁面肯定是一種最糟糕的處理方式了。

    在這種背景下, RIA Rich Internet Application )的思維和技術逐漸得到了廣泛的支持和應用。 RIA 結合了桌面應用程序的在數(shù)據(jù)交互、用戶界面表現(xiàn)、數(shù)據(jù)格式編排等方面的優(yōu)點,又兼有 Web 應用程序的零部署、易于傳播等特性,能夠有效改善 Web 應用程序的人機交互效果,向用戶提供更豐富、更具有交互性和響應更快的用戶體驗。

    與傳統(tǒng)的純 HTML 應用程序相比, RIA 能夠提供一個強勁的技術平臺,使瀏覽器客戶端的能力往桌面應用程序中的客戶端靠近,不僅適合傳統(tǒng)的三層乃至 N 層的開發(fā)過程,同時能夠和原有的環(huán)境集成以延展原有的應用程序而不需要大規(guī)模的傷筋動骨的修改和更新。

    關聯(lián)信息

    Macromedia Flex 是比較成功和有效的 RIA 解決方案之一。今天,幾乎大部分的瀏覽器上都安裝了 Macromedia Flash 的瀏覽器插件,大量的 Web 應用程序都或多或少的嵌入了 Flash 的應用。而 Macromedia Flex 則是基于 Flash 的、一個構建 RIA 應用的完整解決方案,其能夠使 Web 應用程序具備快速反映能力,并在不同狀態(tài)與顯示之間流暢的過渡,提供毫無中斷的連續(xù)的工作流;由于搭建在 Flash 平臺上, Flax 在多媒體、視頻、流媒體方面有更加突出的表現(xiàn)。更重要的是, Flex 具有基于標準的架構,使用直觀的基于 XML MXML 來定義豐富的用戶界面,可以運行于 J2EE .NET 平臺,能夠與當前 Web 開發(fā)工具、方法、設計模式緊密配合。

    Openlaszlo 則是一個開源的 RIA 開發(fā)環(huán)境。使用 Openlaszlo 平臺時,開發(fā)者只需編寫名為 LZX 的描述語言(其中整合了 XML Javascript ),運行在 J2EE 應用服務器上的 Openlaszlo 平臺會將其編譯成 SWF 格式的文件并傳輸給客戶端展示。從這點上來說, Openlaszlo 的本質(zhì)和 Flex 是一樣的。 Flash 是任何瀏覽器都支持的展示形式,從而一舉解決了瀏覽器之間的移植問題。而且,在未來的計劃中, Openlaszlo 還可以將 LZX 編譯成 Java .NET 本地代碼,從而大大提高運行效率。

    Macromedia Flex 不同, Ajax 則是基于 Javascript 客戶端腳本、 XMLHttp 對象、 XML XHTML/HTML CSS 等傳統(tǒng) Web 開發(fā)技術的另外一個 RIA 解決方案,其更強調(diào)基于純數(shù)據(jù)的異步交互模式。 2005 2 月, Adaptive Path 公司的 Jesse James Garrett 在其“ Ajax:A New Approach to Web Application ”( http://www.adaptivepath.com/publications/essays/archives/000385.php )一文中首次提出 Ajax 概念,極力向 Web 開發(fā)人員推薦這種綜合使用 Javascript XHTML CSS DOM XMLHttpRequest XML XSLT 的技術。與很多開發(fā)人員一樣, Garrett 一直非常羨慕桌面應用程序在用戶界面表現(xiàn)、人機交互、數(shù)據(jù)傳輸?shù)确矫娴膹姶蟊憩F(xiàn)力,一直在尋求能夠縮小 Web 應用程序在用戶體驗方面與桌面應用程序的巨大差距的解決方法。由于 Google Gmail GMap Google Suggest 等站點的成功運用, Garrett 相信 Ajax 就是其一直在尋找的寶貝。 原來的 Ajax 有一個冗長的名字:異步的 Javascript CSS DOM XMLHttpRequest Asynchronous Javascript+CSS+DOM+XMLHttpRequest )。 Garrett 扮演了“臨門一腳”的角色,形象的稱之為 Ajax ,即 Asynchronous JavaScript and XML (異步 JavaScript XML )的縮寫,這個形象簡短的名字概括了這種技術的特點。 Ajax 已經(jīng)引起的全世界的廣泛關注和應用,而且, Prototype Dojo DWR Ajax 框架已經(jīng)給 Web 應用開發(fā)領域帶來了實實在在的貢獻和影響。

    Bindows 也是用 Javascript DHTML 開發(fā)的 Web 窗體框架。 Javascript 用于客戶端界面的顯示和處理, XMLHTTP 用于客戶端與服務器的信息傳輸。 Javascript 在客戶端的表現(xiàn)力不容置疑,利用 Javascript 幾乎可以實現(xiàn) Windows 應用程序所能干的大部分事情, XMLHTTP 一直以來常被用于實現(xiàn) " 無刷新 " Web 頁面,它和 Javascript 配合,可以完成數(shù)據(jù)從服務器和客戶端的傳輸。 Bindows 的一個主要的缺點是它采用一次全部載入的方式來實現(xiàn)腳本庫,在窗口的加載期,需要一個漫長的等待過程,甚至瀏覽器的進程會產(chǎn)生無響應的情況。這點 Bindows 根本沒有遵循 " 用多少取多少 " 的準則。另外,內(nèi)部大量利用了 IE6 的技術,沒有考慮到非 IE 的瀏覽器,限制了 Bindows 的流行。

    在接下來的內(nèi)容里,我們選取 Flex OpenLaszlo 兩個比較典型、相對成熟的 RIA 解決方案,探討如何構建 RIA 應用程序。

    Adobe FLEX

    總評(Rank

    上手容易程度

    ★★★★★

    社區(qū)活躍度

    ★★★★★

    應用廣泛性

    ★★★★★

    推薦指數(shù)

    ★★★★★

    作為支持 RIA 的開發(fā)、部署一系列發(fā)展中的技術和產(chǎn)品線, Adobe Flex Adobe Flash 基礎上面向業(yè)界提供的 RIA 解決方案,其中包括 Adobe Flex SDK Adobe Flex Builder Adobe Flex Data Services Adobe Flex Charting 等等。 Flex 向開發(fā)者提供一個熟悉的編程模型和一整套的產(chǎn)品和組件,使開發(fā)者能夠充分發(fā)揮 Adobe Flash Player9 的優(yōu)勢,充分發(fā)揮 Adobe Flash Player 9 的優(yōu)勢,無縫擴展瀏覽器的性能,構建高性能、擁有絕佳用戶體驗效果的 RIA 應用程序,并且無縫的與 ASP JSP PHP ASP.NET 等主流后臺語言和架構集成。

    功能和特點(Highlights & Features

    Flex 包含一系列可供設計、開發(fā)、部署的相關產(chǎn)品,包括:

    l? Adobe Flex 2 SDK (Software Development Kit)

    l? Adobe Flex Builder 2

    l? Adobe Flex Data Services 2

    l? Adobe Flex Charting 2

    作為 Adobe Flash 技術的承續(xù)和發(fā)展, Flex 采用 GUI 界面開發(fā),使用基于 XML MXML 語言,并提供多種組件,可以實現(xiàn) Web Services 遠程調(diào)用、遠程對象訪問、頁面組件拖拽、數(shù)據(jù)網(wǎng)格、圖標等等,并內(nèi)建了動畫效果和其他互動機制。相對于基于 HTML 的應用(比如純 JSP ASP PHT 或者 ASP.NET )在每個請求時都需要執(zhí)行服務器的腳本,由于客戶端只需要載入一次, Flex 應用程序的工作流被大大改善了,更加適合于構建快速、具有動畫效果、具備良好用戶體驗效果的 RIA 應用程序。

    Flex 試圖通過提供一個程序員們已經(jīng)熟知的工作流和編程模型,讓程序員比以前更快更簡單的開發(fā)動畫和 RIA 應用程序。其能夠與其他 Web 技術比如 Java .NET 等有效的融合在一起,改善 Web 應用程序在視圖層的表現(xiàn)能力,同時利用 Flex 的語言和文件結構把應用程序的邏輯從設計中分離出來。

    UI 方面, Flex 提供了包括控制組件、版面、導航、圖表等在內(nèi)的各個類別的豐富的組件,用于幫助開發(fā)者基于所見即所得的 IDE 快速構建 Flex 應用程序。

    背景介紹(Background & History

    蔡學鏞先生在其《 Flash 平臺的挑戰(zhàn)》一文中將 1990-2010 20 年來軟件開發(fā)的 Framework/API 劃分為 5 個階段:

    l? 第一階段 GUI 和邏輯混在一起,不管客戶端還是服務器端都是一樣,比如 MFC Java Swing Servlet

    l? 第二階段 這個階段中,服務器端的 GUI 和邏輯分開,比如 ASP.NET JSP

    l? 第三階段 在這個階段, Web 客戶端的互動性增強,比如 ASP.NET Ajax

    l? 第四階段: RIA 時代,客戶端具有更好的互動性,并且客戶端的 GUI 和邏輯分開,且 GUI 改用宣告的方式構建。 RIA 的應用搭配 VM 或者瀏覽器插件,在瀏覽器內(nèi)或者瀏覽器外都可以執(zhí)行,比如 Adobe Apollo 或者微軟的 WPF

    l? 第五階段:即 RIA DSL Domain Specific Language )時代, DSL 語言取代大部分的 XML

    就目前而言,以 Flex 為代表的 RIA 解決方案越來越成熟,一些以視頻共享、日程編排等為代表性的 RIA 站點也向其用戶展示了 RIA 應用程序的魅力。事實證明, RIA 正越來越受到重視,傳統(tǒng)的 Web 應用程序也正在向 RIA 靠近。

    作為老牌的多媒體解決方案供應商, Adobe RIA 解決方案上有獨特的優(yōu)勢。 Flash 已經(jīng)被整個業(yè)界所接受,并且得到了基本上所有主流瀏覽器的支持。因此,相比其他 RIA 解決方案,基于 Flash Flex 推廣起來自然容易得多了。

    最近, Adobe 在其官方網(wǎng)站上宣布將把 Flex 開源,將幾乎整個 Fle 平臺組件在 Mozilla Public License 協(xié)議下發(fā)布,這其中包括以下幾個部分:

    l? Flex 編譯器

    l? Flex 命令行調(diào)試工具

    l? 源碼查看工具

    l? 測試框架

    l? Flex 核心組件庫,包括 Apollo 組件

    l? 封裝腳本

    l? Flex-Ajax Bridge (將會改用 MPL 協(xié)議發(fā)布)

    隨著越來越多的軟件產(chǎn)品走入開源模式,事實證明開源對于產(chǎn)品的發(fā)展和開發(fā)者來說是雙贏的。我們有理由相信,隨著 Flex 的開源, Flex 開發(fā)者和愛好者可以通過閱讀研究 Flex 的源碼,更深入的理解 Flex 并進一步增強它,從而利用 Flex 開發(fā)出更多更出色的 RIA 應用程序。而對于 Flex 產(chǎn)品本身來說,更多開發(fā)者的加入,能夠讓其擁有廣泛的用戶群體,并且利用最小的成本得到最佳的完善和發(fā)展,加速 Flex 的普及。

    參考資料(Reference

    網(wǎng)站類

    1 Adobe – Flex 開發(fā)人員中心 http://www.adobe.com/cn/devnet/flex/

    作為官方的開發(fā)人員中心,該站點提供了豐富的快速入門、文章和示例,以幫助開發(fā)者快速熟悉 Adobe Flex 的各項功能、特性,由淺入深的掌握 Flex 的開發(fā)和部署,以及在必要的時候與包括 Java PHP CoLDFusion 等技術無縫集成。

    2 52RIA http://www.52ria.com/

    該站點專注于 Flash RIA 開源領域,面向開發(fā)者提供優(yōu)質(zhì)的 Flash RIA 開源作品、教程和源碼。難得可貴的是, 52RIA 提供的 RIA 站點秀,在第一時間向開發(fā)者展現(xiàn)了 Flex RIA 的實際應用效果。

    3 )中國 RIA 開發(fā)者論壇 http://www.riachina.com/

    中國 RIA 開發(fā)者論壇,是全國數(shù)一的關于 Flex 的討論社區(qū),里面隱藏著眾多的高手,而且很多已經(jīng)參加了工作并在實際項目中。 如果讀者在 Flex 開發(fā)中遇到什么問題,可以在這個論壇找到答案或者尋求幫助。

    4 RIA Dev http://groups.google.com/group/riadev

    該站點是基于 Google 論壇的聯(lián)系兩岸三地的關于 Flex/Apollo 的華人論壇社區(qū),它所表現(xiàn)的優(yōu)勢在于只要一提出問題,它將以郵件的方式以最快的速度發(fā)到每位成員手中。其目的希望聯(lián)系全球?qū)?/span> Adobe Flex/Apollo 感興趣的華人,促進 Adobe Flex/Apollo 在華文世界的發(fā)展。

    5 FlexCoders http://tech.groups.yahoo.com/group/flexcoders/

    全球最大的 Flex 用戶討論組織,只要是關于 Flex 的問題,讀者都可以在這里提出,而且常常回答者都是 Adobe 公司參加或者跟 Flex 相關的工作人員,當然前提條件是要具備良好的英語閱讀能力和表達能力。

    6 Flex Components http://tech.groups.yahoo.com/group/FlexComponents/

    FlexCoders 的同胞兄弟,這里討論的側重于 Flex 控件的問題。

    7 Adobe Flex 實驗室 http://labs.adobe.com/technologies/flex/

    作為 Adobe Flex 新技術的研發(fā)中心, Adobe Flex 實驗室負責 Flex 新版本的研發(fā)和發(fā)布。自然,從該站點能夠了解到最新有關 Flex 的資訊,以及最新版本 Flex 的相關下載。

    網(wǎng)站類

    1 )《 Flex 第一步》 http://www.dearbook.com.cn/book/230729

    邱彥林 著,清華大學出版社, 2007 12 月第一版

    作為國內(nèi)第一本 Flex 的書籍,該書包含“走近 Flex ”、“ Flex 基礎知識”、“ ActionScript Flex ”、“ Flex 初級程序開發(fā)”、“ Flex 程序?qū)崙?zhàn)開發(fā)”五個部分,深入淺出的講述了 Flex 及其 ActionScript 的相關知識,比較適合對 Flex 有興趣的初學者。雖然對于大多數(shù) Flex 開發(fā)者而言,該書在某些內(nèi)容上不夠深入,但將其定位為“入門級”的讀物,其表現(xiàn)還是可圈可點。

    快速上手教程(Step By Step Tutorial

    關于 Flex 2

    之前提到, Adobe Flex 產(chǎn)品線包含 Flex 2 SDK Flex Builder 2 Flex Data Services 2 Flex Charting 2

    其中, Flex 2 SDK Adobe Flex 的核心和基礎,其包含 Flex 框架(類庫)、 Flex 編譯器、 Flex 調(diào)試器、 MXML ActionScript 編程語言以及其他擴展,同時包含 Adobe Flex 框架核心類庫的源碼,用戶可以研讀這些源碼并基于自己的需要進行擴展。 Adobe Flex 2 SDK 可以作為獨立的包安裝,也集成在 Flex Builder Flex Data Service 組件中。

    Flex Builder 集成了 Flex 2 SDK Flex 應用模型和 Flex 編程語言,向開發(fā)者提供一個可視化的 IDE 設計、開發(fā)、調(diào)試環(huán)境。值得注意的是, Adobe 選擇 Eclipse 作為 Flex Builder 的平臺,能夠吸引以 Eclipse 為代表的開源社區(qū)的關注和興趣,充分發(fā)揮基于 Eclipse 的大量商業(yè)和開源的插件的優(yōu)勢,也有利于延續(xù) Eclipse 用戶的開發(fā)習慣。與早期的 Flex Builder 版本相比, Flex Builder 2 提供了一個所見即所得的開發(fā)環(huán)境,包括視圖和源碼兩種編輯狀態(tài),大大提高了開發(fā)者的開發(fā)效率。如下圖所示。

    Flex Data Services 則為 Flex 2 SDK 提供企業(yè)級的消息支持,并增強 Flex 2 SDK 的數(shù)據(jù)服務架構,簡化了在服務器和客戶端之前交互的編程模型。其提供的功能和特性包括:

    l? 一個允許客戶端和服務器端之間或者多個客戶端之間同步數(shù)據(jù)的高層次的編程模型。

    l? 用于發(fā)布和訂閱消息的集成服務。

    l? 基于服務器的自動數(shù)據(jù)推動和數(shù)據(jù)流。

    l? 一個用于集成 JMS Hibernate EJB 和其他數(shù)據(jù)持久化機制的適配器架構。

    l? 允許客戶端操縱數(shù)據(jù)源的授權。

    l? 基于 AMF 協(xié)議的遠程對象訪問。

    l? 數(shù)據(jù)服務日志。

    值得注意的是,在使用 Flex Data Services 之前,我們需要將其以標準的 Java Web 應用程序部署在 J2EE 應用服務器或者 Servlet 容器中。

    Flex Charting 2 提供了豐富的報表模型,包括條狀、餅圖、線性和其他類型的圖表,這些報表可以在客戶端動態(tài)生成。下圖展示了一個用 Flex Charting 2 生成的條狀圖。

    開發(fā)環(huán)境配置

    由于 Flex 2 基于 Flash Player 9 運行,所以在開發(fā) Flex 應用程序之前需要先安裝 Flash Player 9 。從 Flex 開發(fā)人員中心( http://www.adobe.com/cn/devnet/flex/ )下載 Flash Player 9 的安裝文件,其為一個瀏覽器 ActiveObject 控件。

    Flex Builder 2 集成了 Flex 2 SDK ,因此開發(fā)基本的 Flex 應用程序只需要安裝 Flex Builder 2 即可。從 Flex 開發(fā)人員中心下載試用版的 Flex Builder 。雙擊下載后的 Flex Builder 2.exe 開始安裝,選擇安裝路徑后點擊“ Next ”。這里需要選擇安裝模式: Flex Builder Flex SDK ,或者是 Flex Builder 插件和 Flex SDK 。前者將安裝 Flex Builder IDE Flex SDK 、基于命令行模式的 Flex SDK 和可調(diào)試的 Flash Play 9 。后者將以 Eclipse 插件的形式安裝 Flex Builder Flex SDK ,前提是在本機已經(jīng)安裝了 JDK Eclipse JDK Eclipse 的安裝請查閱相關文檔),如下圖所示。

    安裝成功后,啟動 Eclipse ,點擊“ New - Project ”,即可在“ New Project ”窗口中看到“ Flex ”項,包括 Flex Library Project Flex Project 兩個子項。如下圖所示。

    MXML ActionScript

    HTML 類似, MXML 是在 Flex 應用程序中用作版面規(guī)劃和布局的 XML 語言, Flex Builder 2 能將 MXML 文件編譯為相應的 Swf 文件。 MXML 提供了提供了一系列與 Flex 框架類對應的標簽,以幫助開發(fā)者構建可視化的頁面元素,比如容器、導航器和其他 UI 控件。 MXML 同時也被用來定義一些不可見的特性,比如訪問網(wǎng)絡資源、訪問數(shù)據(jù)源、數(shù)據(jù)綁定等等。

    ActionScript 則是基于 ECMAScript 、與 Javascript 類似的另一個 Flex 編程語言,其提供 MXML 所無法提供的流控制、對象操作、與客戶端交互等特性。 MXML ActionScript 結合,構成 Flex 應用程序基本的編程模型。在 Flex 應用程序中,每一個 MXML 文件代表一個單獨的 Flex 頁面。下面的代碼段使用 MXML ActionScript 語言構建一個簡單的 Hello World 頁面。

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    ?????? <mx:Script>

    ????????????? <![CDATA[

    ???????????????????? import flash.events.MouseEvent;

    ???????????????????? private function MyButtonClicked(event:MouseEvent):void {

    ??????????????????????????? myLabel.text = "Hello, the world.";

    ???????????????????? }

    ????????????? ]]>

    ?????? </mx:Script>

    ?????? <mx:Panel title="My Event Handler" width="100%" height="100%"

    ????????????? horizontalAlign="center" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10">

    ????????????? <mx:Label id="myLabel" width="100" fontWeight="bold" fontSize="13"/>

    ????????????? <mx:Button id="myButton" label="Click me!" click="myLabel.text='Hello, the world.';"/>

    ?????? </mx:Panel>

    </mx:Application>

    Hello World

    接下來我們通過一個 Hello World 示例演示一個簡單的 Flex 應用的開發(fā)過程。

    啟動 Eclipse ,選擇“ New à Project à Flex Project ”,點擊“ Next ”后在“ New Flex Project ”對話框中選擇“ Basic e.g. XML or web service from PHP/JSP/ASP.NET )”選項,點擊“ Next ”后輸入項目名稱(這里設置為 MyFlexApp ),新建一個基本的 Flex 應用程序。 Eclipse 將打開默認的 Flex 設計視圖窗口,如下圖所示。編輯窗口分為項目導航區(qū)域、 Flex 組件區(qū)域、項目編輯設計區(qū)域、控制臺區(qū)域、屬性和狀態(tài)區(qū)域等幾個部分,這點與普通的 Java 應用程序類似。

    創(chuàng)建成功后, Eclipse 將新建一個完整的 Flex 應用程序結構,包括 .setting bin html-template 三個文件夾以及一個默認的 MyFlexApp.mxml 文件。 Flex 將每一個 mxml 文件視為一個單獨的頁面,每一個 mxml 文件最后將被編譯為對應的 swf 文件。

    Flex 組件區(qū)域拖動一個 Button 控件到設計區(qū)域,在屬性區(qū)域中設置其 ID 為“ myButton ”, Label 屬性為“ Click Me! ”。拖動一個 Label 控件到設計區(qū)域,將其 ID 屬性設置為“ myLabel ”。

    點擊項目編輯設計區(qū)域左上角的“ Source ”按鈕,切換到源碼視圖。此時 MyFlexApp.mxml 的內(nèi)容如下所示。

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    ?????? <mx:Button x="312" y="96" label="Click Me!" id="myButton" enabled="true"/>

    ?????? <mx:Label x="334" y="145" text="Label" id="myLabel"/>

    </mx:Application>

    MyFlexApp.mxml 符合標準的 XML 格式,以 <mx:Application> 作為根節(jié)點,其內(nèi)容包含頁面中所涉及到的 UI 組件以及必要的 ActionScript 代碼。我們注意到,剛才拖入的 Button 控件和 Label 都包含了 x y 屬性,這兩個屬性用于控制該控件在頁面中的相對位置。

    myButton 設置 click 事件,其響應代碼為“ myLabel.text=’Hello, the world.’; ”。修改后的 MyFlexApp.mxml 代碼為:

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    ?????? <mx:Button x="312" y="96" label="Click Me!" id="myButton" enabled="true"

    click="myLabel.text='Hello, the world.';"/>

    ?????? <mx:Label x="334" y="145" text="Label" id="myLabel"/>

    </mx:Application>

    即當點擊 myButton 按鈕的時候,將 myLabel 的文本替換為“ Hello, the world. ”。鼠標右擊 MyFlexApp 項目,選擇“ Run As à Flex Application ”,運行 Hello World 范例,其結果如下圖所示。

    在上面的應用中,我們將 Button 的響應事件和控件的代碼寫在一起。 Flex 支持將與響應事件有關的代碼剝離出來,包括剝離到 ActionScript 區(qū)域或者獨立的 as 文件中。下面的代碼段將 Button Click 事件剝離到 ActionScript 區(qū)域。

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    ?????? <mx:Script>

    ????????????? <![CDATA[

    ???????????????????? private function MyButtonClicked(event:MouseEvent):void {

    ??????????????????????????? myLabel.text = "Hello, the world.";

    ???????????????????? }

    ????????????? ]]>

    ?????? </mx:Script>

    ?????? <mx:Button x="312" y="96" label="Click Me!" id="myButton" enabled="true"

    click="MyButtonClicked(event);"/>

    ?????? <mx:Label x="334" y="145" text="Label" id="myLabel"/>

    </mx:Application>

    通常, Flex 應用程序開發(fā)的步驟如下所示:

    l? 使用 Flex 預定義的組件(窗口、按鈕、容器、網(wǎng)格等),按照需求定義一個用戶界面。

    l? 使用風格和主題來定義可見的設計。

    l? 增加動態(tài)動作,如應用程序之間的互動。

    l? 定義并在需要的時候連接相應的數(shù)據(jù)服務。

    l? 從源碼生成一個可以在 Flash 播放器中運行的 Swf 文件。

    版本信息(Versions

    Adobe 2004 3 月發(fā)布 Flex1.0 版本,隨后與童年的 10 月發(fā)布 Flex1.5 版本,這兩個版本的目標市場都是企業(yè)應用開發(fā)。其最初是作為一個 J2EE 應用,或者是 JSP 標簽庫而發(fā)布的,能夠就愛能夠運行中的 MXML ActionScript 編譯成為 Flash 應用程序即二進制的 Swf 文件。

    Flex1.5 是企業(yè)級的表現(xiàn)層服務器,用戶將所編寫的 MXML 文件上傳到服務器,由 Flex 編譯器將 MXML 編譯成 Swf 文件,從而創(chuàng)建表現(xiàn)層界面。或者直接在本機編譯 MXML 文件,然后上傳 Swf 文件。 Flex1.5 IDE 基于 Dreamweaver 提供,實現(xiàn)了設計和代碼視圖、高亮語法顯示、代碼鎖緊、應用預覽等基本的 IDE 功能。

    2005 10 月, Adobe 開放了其 Alpha 本本的 Flex2.0 ,并在經(jīng)歷了三個 Beta 版本后于次年的 5 月份發(fā)布了 Flex 2.0 Final 版本。隨后, Adobe 改變 Flex2 的許可模式,免費開放其中的“ Flex Framework ”。不同的是,新版 Flex Builder2 基于 Eclipse IDE 構建,充分利用 Eclipse IDE 的功能和特性,為 Flex 愛好者提供高效的開發(fā)、測試和部署環(huán)境。

    2007 6 月, Adobe 發(fā)布了 Flex 3 SDK Flex Builder 3 Beta 版本,同時將 Apollo 更名為 Adobe Integrated Runtime ,即 Adobe AIR Flex 3 Beta 3 Flex 3 的最后一個 Beta 版本,其中包括 Flex Builder 3 Beta 3 Flex SDK 3 等。與其他版本相比, Flex3 改進和更新的部分特性包括:

    l? 對設計 / 開發(fā)流程的改進

    Flex 3 中提供了 Skin Importer ,可以縮放、旋轉(zhuǎn)設計視圖,可以顯示 ItemRenderer 的設計視圖, Advanced Constraints CS3 整合、 CSS 概要以及 Flex 3 SDK style/skinning 等諸多改進。這些改進使得整個設計 / 開發(fā)流程更加簡單, Flex 程序的 Skinning 功能也更加強大。

    l? 對編碼環(huán)境的改進

    這次改進提高了編譯速度,緩存已編譯的類,提供更強的 AS3/MXML/CSS 語法提示、代碼查找、重構、代碼摘要、內(nèi)存測量、性能測量等功能,增強了模塊機制以及多個 SDK 支持等等。

    l? Flex 組件和 SDK 的改進

    提供了更多的類、組件和功能,比如 AdvancedDataGrid 、新的集合類、深層鏈接接口、資源包、動態(tài)本地化、支持容器的 Flex Component Kit for Flash CS3 等等,并且加強了與 Ajax 的整合,提供了高級視覺效果和對復雜的資源管理。

    l? 顯著的減少 Swf 文件的大小

    由于支持對 Flash Framework 的緩存, Flex 編譯器所生成的 Swf 文件大小顯著減小。

    社區(qū)視角(Community Perspective

    作為一個典型的 RIA 解決方案, Flex 可以說是目前最優(yōu)秀的。從 Flex 1.0 到現(xiàn)在被普遍接受的比較成熟的 Flex 2.0 Flex 逐漸證明了 Adobe RIA 領域的領跑者地位。將來隨著 Flex 3 的推出,可以預計 Adobe 將繼續(xù)在 RIA 領域處于領先的地位。

    需要指出的是,目前 RIA 的應用畢竟還是在相對有限的范圍, Adobe 依然需要在培育市場和開發(fā)者上多下功夫。最近 Adobe Flex 開源,就希望借助開源社區(qū)的力量推動 Flex 的快速發(fā)展。不過目前 Flex Builder 2 依然采取免費試用 + 收費的模式,這在一定程度上限制了吸引力。而且與其他成熟的 IDE 相比, Flex Builder 2 在編譯、人性化、易用性等方面依然存在差距,這方面還需多加努力。

    posted on 2008-08-01 14:55 eamoi 閱讀(3575) 評論(0)  編輯  收藏 所屬分類: AJAX
    主站蜘蛛池模板: 99久久婷婷免费国产综合精品| 精品视频免费在线| 亚洲国产精品18久久久久久| 亚洲AV无码国产一区二区三区| 特级做a爰片毛片免费看| a毛片全部播放免费视频完整18| 国产成人精品一区二区三区免费| 四虎精品视频在线永久免费观看| 成人毛片18岁女人毛片免费看| 亚洲国产精品无码久久久久久曰| 亚洲Av综合色区无码专区桃色| 亚洲午夜精品一区二区公牛电影院| 亚洲一卡2卡3卡4卡乱码 在线| 免费看一级毛片在线观看精品视频| 中文字幕乱码一区二区免费| 日本人的色道免费网站| 四虎影院永久免费观看| 国产亚洲精品a在线观看app| 亚洲综合中文字幕无线码| 一级毛片免费不卡直观看| 222www在线观看免费| 又大又硬又爽免费视频| 亚洲第一区香蕉_国产a| 亚洲日韩亚洲另类激情文学| a级毛片免费高清毛片视频| 亚洲人成网站免费播放| 精品亚洲视频在线观看| 亚洲另类视频在线观看| 九九九精品视频免费| 日本免费xxxx色视频| 亚洲国产精品成人| 亚洲大香伊人蕉在人依线| 国产亚洲精品欧洲在线观看| 性xxxxx大片免费视频| 免费在线视频一区| 亚洲国产美女福利直播秀一区二区| 精品一区二区三区免费毛片| 国产92成人精品视频免费| 中文字幕亚洲一区二区va在线| 亚洲一区二区三区无码国产| 国产精品小视频免费无限app|