中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 多媒體制作 > Flex 3程序設(shè)計基礎(chǔ)
全屏flash的尺寸分析 回到列表 讓FLVPlayer組件識別非flv后綴視頻
 Flex 3程序設(shè)計基礎(chǔ)

作者: 時間: 2008-12-16 文檔類型:原創(chuàng) 來自:藍(lán)色理想

第 1 頁 RIA概述
第 2 頁 Flex簡介
第 3 頁 MXML
第 4 頁 ActionScript
第 5 頁 Flex的事件機制
第 6 頁 使用Adobe Flex Builder
第 7 頁 在Flex中操作XML

1.4  ActionScript

ActionScript是為Adobe Flash設(shè)計的面向?qū)ο蟮某绦蛟O(shè)計語言,在Flex開發(fā)中,ActionScript的基本作用類似于傳統(tǒng)網(wǎng)頁開發(fā)中的JavaScript,同時ActionScript還要負(fù)責(zé)Flex程序的邏輯控制和業(yè)務(wù)建模。ActionScript遵循歐洲計算機制造商協(xié)會(ECMA)通過的ECMAScript標(biāo)準(zhǔn),而ECMAScript出自JavaScript派生出的標(biāo)準(zhǔn)ECMA-262,因此無論是使用語法還是技巧方面,ActionScript與JavaScript都非常相似。

作為Flex技術(shù)的組成部分,ActionScript充當(dāng)著更加重要的角色。如果說MXML是Flex亮麗的外表,那么ActionScipt就賦予了Flex聰慧的靈魂。對于開發(fā)者而言,在ActionScript上所下的功夫要大于MXML,MXML作為界面表現(xiàn)層需要更多的是外觀設(shè)計,而ActionScript則需要擔(dān)當(dāng)起用戶交互、數(shù)據(jù)處理和業(yè)務(wù)邏輯處理的重任。不僅如此,在MXML中所使用的Panel、Label等Flex內(nèi)建組件都是基于ActionScript類實現(xiàn)的,應(yīng)用ActionScript可以繼承這些內(nèi)建的組件對象來創(chuàng)建自定義的Flex組件,使得開發(fā)的靈活性大大增加。ActionScript的應(yīng)用還可以涉及到表現(xiàn)層數(shù)據(jù)模型以及異步遠(yuǎn)程請求及響應(yīng)的事務(wù)處理。

我們可以通過<mx:Script>標(biāo)簽在MXML文件中插入ActionScript代碼或?qū)階ctionScript類文件。而在編譯過程中,ActionScript代碼和MXML代碼都會被分離成ActionScript類,最終編譯器連接所有的ActionScript類,編譯生成SWF文件。

1.4.1  在MXML中使用ActionScript腳本

MXML使用<mx:Script>標(biāo)簽實現(xiàn)對ActionScript的內(nèi)部編譯支持,因此,ActionScript腳本代碼可直接在標(biāo)簽內(nèi)編寫,此時ActionScript以方法為基本單位獨立作用,可在MXML代碼中直接調(diào)用。這里需要注意的是,MXML內(nèi)部嵌入ActionScript代碼的方式并非使用了單獨的編譯機制,在MXML進(jìn)行編譯的過程中,內(nèi)部的ActionScript代碼會被抽取出去并創(chuàng)建獨立的ActionScript類文件,最后組合到SWF文件之中。

下面來看一看在MXML內(nèi)部使用ActionScript的示例程序。

示例1.2  使用ActionScript腳本

<?xml version="1.0" encoding="utf-8"?>
<!--此示例程序中要使用中文,因此進(jìn)行編碼聲明,請注意保存時選擇正確的編碼-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
public function changeText():void {
    disp1.text = "使用ActionScript";
}
]]>
</mx:Script>
<mx:Panel title="Flex ActionScript Test" paddingTop="10" paddingBottom="10"
  paddingLeft="10" paddingRight="10" x="10" y="10" fontSize="12">
<mx:Label id="disp1" text="Hello World. 世界,你好!" fontWeight="normal"
fontSize="24" fontFamily="Times New Roman" fontStyle="italic"
alpha="1.0"/>
<mx:Button label="點擊這里"  fontSize="16" click="changeText()"/>
</mx:Panel>
</mx:Application>

示例1.2的程序基本是對上一個HelloWorld示例的擴(kuò)充,我們對Label添加了一個id屬性,并在<mx:Script>中對這個id進(jìn)行引用,請?zhí)貏e注意<mx:Script>標(biāo)簽在MXML中的引用方式,其內(nèi)容為ActionScript代碼,因此要用<![CDATA[  ]]>括起來保證對其作為一個字符內(nèi)容的引用,否則ActionScript代碼中的操作符很容易與XML的關(guān)鍵字發(fā)生沖突,如<、>、&等符號在XML中都有特定的意義。

下面來看看這個示例的運行效果。

如圖1.3所示,這次運行的效果多了一個按鈕組件,即代碼中的<mx:Button>,并且我們設(shè)置了按鈕組件的click屬性,即設(shè)置了按鈕的單擊觸發(fā)為執(zhí)行ActionScript方法changeText(),接下來可以單擊按鈕查看效果,結(jié)果如圖1.4所示。

圖1.3  ActionScript測試運行效果一

圖1.4  ActionScript測試運行效果二

在圖1.4中,Label的文字內(nèi)容被替換成為字符串“使用ActionScript”。我們可以看到ActionScript代碼中changeText()方法的作用是,響應(yīng)一個按鈕單擊事件,通過屬性id引用MXML的界面組件,并通過用戶交互來處理組件的變化,這是ActionScript最常見的應(yīng)用方法。本示例中,通過changeText()方法對id為disp1的Label組件進(jìn)行text賦值操作,通過這個示例我們可以熟悉一下ActionScript的一些語法規(guī)則,public function changeText():void是ActionScript的方法定義,訪問控制字為public,而function是方法定義關(guān)鍵字,方法名稱為changeText,返回值類型為void。在MXML代碼中直接嵌入ActionScript時不需要設(shè)計ActionScript類,直接以方法作為執(zhí)行單位。

如果是簡單的事件響應(yīng)處理,如輸入校驗、組件可見性控制等處理,那么用上面的方法還沒有問題,但如果需要對數(shù)據(jù)進(jìn)行復(fù)雜的邏輯操作或者需要對MXML的組件進(jìn)行定制操作,就需要ActionScript類來完成了。

1.4.2  使用ActionScript類

在上面的示例中,我們把ActionScript代碼嵌入到MXML中使用,如果大量的程序腳本都集中在MXML文件內(nèi),會給開發(fā)和維護(hù)都會帶來極大的不便,因此在開發(fā)時要注意盡量將ActionScript代碼從MXML文件中分離出去。

對ActionScript代碼進(jìn)行分離的最簡單方法也是通過<mx:Script>標(biāo)簽來實現(xiàn),需要設(shè)置<mx:Script>標(biāo)簽的source屬性。例如我們的ActionScript文件是includes文件夾下的tools.as,那么可以通過<mx:Script source=“includes/tools.as”>來實現(xiàn)對ActionScript文件的引入,這樣ActionScript的代碼部分可以從MXML中分離出去。

但是僅僅用上述方式分離代碼還是不夠的,這種方式僅僅在書寫上將ActionScript代碼單獨分離出去,與HTML中引入JavaScript的方式是完全一致的,而文件對實際的程序設(shè)計和代碼維護(hù)并沒有起到作用,因此使用<mx:Script>的source屬性容易造成誤區(qū),導(dǎo)致ActionScript的濫用。對于規(guī)模較小或邏輯很清晰的RIA應(yīng)用,僅使用ActionScript方法就可以滿足大部分要求,而對于一個較大的軟件項目或者比較復(fù)雜的RIA應(yīng)用,必須對ActionScript類進(jìn)行設(shè)計。

ActoinScript是面向?qū)ο蟮某绦蛟O(shè)計語言,而類是面向?qū)ο蟪绦蛟O(shè)計語言的精髓。面向?qū)ο蟮奶匦?封裝、繼承和多態(tài))都被ActionScript很好地支持。使用ActionScript進(jìn)行開發(fā)時,可以使用所有的面向?qū)ο筇匦浴?/p>

在SDK的功能支持上提供了完善的API,使用ActionScript類可以實現(xiàn)系統(tǒng)的所有邏輯操作和數(shù)據(jù)模型處理,實現(xiàn)對系統(tǒng)的分層開發(fā),同時也用于進(jìn)行企業(yè)級模塊的構(gòu)建;對于界面開發(fā),可以使用ActionScript類對現(xiàn)有的MXML類繼承并進(jìn)行定制化開發(fā),也可以在組件操作上實現(xiàn)自定義的功能。

ActionScript使用包(Package)對類進(jìn)行組織,定義一個包的同時,相當(dāng)于隱含規(guī)定了一個命名空間,可以很好地解決類的組織問題。不同的包下可以放置同名的ActionScript類,在不同的包中調(diào)用類需要用Import語句來導(dǎo)入,因此可以很好地避免同名類的沖突問題。對于類文件在計算機中的物理位置—— 需要用與包名稱相對應(yīng)的文件夾名來存放,如net.airdev.book這樣一個包下的類文件,應(yīng)該在net\airdev\book\這樣的文件夾路徑之下進(jìn)行保存,包結(jié)構(gòu)與文件結(jié)構(gòu)完全對應(yīng)。有Java開發(fā)背景的開發(fā)者對包肯定不會陌生,ActionScript中包的使用與Java中是基本一致的。

下面對一個以Flex實現(xiàn)的四則運算計算器程序進(jìn)行結(jié)構(gòu)設(shè)計,并在程序中實現(xiàn)一個自定義組件,程序設(shè)計類圖如圖1.5所示。

圖1.5  Calculator程序設(shè)計類圖

我們把MXML文件視為一個控制表現(xiàn)層的類Class4MXML,在MXML中要建立輸入框、計算方法選擇按鈕和計算按鈕,其中計算按鈕使用一個繼承自Button的自定義組件MyButton。

程序需要負(fù)責(zé)計算的功能模塊,因此我們設(shè)計一個Calculator類,這個類提供一個計算方法run,該方法需要三個參數(shù),兩個操作數(shù)arg1、arg2和一個計算方法標(biāo)記method。

代碼文件夾結(jié)構(gòu)如下:

C:\user\test.mxml
C:\user\myControls\Calculator.as
C:\user\myControls\MyButton.as

示例1.3a  計算器應(yīng)用程序的MXML代碼

<!--Test.mxml-->
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml xmlns:cmp= "myControls.*" >
<!--聲明一個名為cmp的命名空間,以此來引用myControls包中的自定義組件-->
<mx:Script>
<![CDATA[
import myControls.*;
//通過import命令導(dǎo)入myControls包中的類
var calcul = new Calculator();
//實例化一個Calculator類
]]>
</mx:Script>
<mx:Panel title="Flex ActionScript Test" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" layout="absolute" height="180" width="304">
<!--把Panel的layout屬性設(shè)置為absolute,從而對這個Panel上的組件進(jìn)行坐標(biāo)定位-->
<mx:Label id="ta1" text="Calculator Test" fontWeight="bold" fontSize="16" width="250" height="30" x="10" y="10"/>
<mx:TextInput id="n1" width="77" x="10" y="46"/>
<mx:TextInput id="n2" width="77" x="198" y="46"/>
<mx:TextInput id="res" width="77" x="74" y="99" enabled="false"/>
<!--設(shè)置輸入和輸出所需要的TextInput組件-->
<cmp:MyButton click="res.text=calcul.run(Number(n1.text), Number(n2.text),tp.value).toString()" x="196.5" y="99"/>
<!--配置一個自定義組件MyButton,并設(shè)定該組件的單擊事件執(zhí)行calc1的run方法,并將結(jié)果轉(zhuǎn)換成String類型,顯示在id為res的TexInput組件上-->
<mx:Label x="47.5" y="101" text="=" width="18"/>
<mx:ComboBox id="tp" x="112" y="46" width="60">
<mx:dataProvider>
<mx:Array>
<mx:Object label="+" data="0" />
<mx:Object label="-" data="1" />
<mx:Object label="*" data="2" />
<mx:Object label="/" data="3" />
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<!--配置可選擇的操作符,支持四則運算-->
</mx:Panel>
</mx:Application>

這個MXML的編寫方法與前面的示例基本一致,只是增加了命名空間以支持自定義組件Mybutton的使用,并對各個組件的定位進(jìn)行了一些坐標(biāo)控制。

示例1.3b  計算器應(yīng)用程序的ActionScript代碼

//Calculator.as
package myControls {
//包聲明
public class Calculator {
//類聲明
public function run(a:Number,b:Number,c:Number):Number {
//函數(shù)聲明。變量a和b為操作數(shù),變量c為計算類型
var res:Number;
//計算結(jié)果通過res變量返回
if(c==0){
res = a + b;
}
else if(c==1){
res = a - b;
}
else if(c==2){
res = a * b;
}
else if(c==3){
res = a / b;
}
return res;
}
}
}
//MyButton.as
package myControls {
import mx.controls.Button;
import flash.events.MouseEvent;
import mx.controls.Label;
public class MyButton extends Button {
public function MyButton() {
this.label = "GO";
this.setActualSize(100, 30);
}
}
}

示例1.3的程序由以上3個程序文件組成,text.mxml為表現(xiàn)層,在MXML初始化時創(chuàng)建了一個Calculator的實例;Calculator.as和MyButton.as 分別對應(yīng)兩個功能模型,Calculator類提供了一個計算器方法,而MyButton類則繼承了MXML的標(biāo)準(zhǔn)組件Button類,本程序中的自定義組件僅僅是在組件構(gòu)造方法中實現(xiàn)了對label屬性和定位的初始化,在實際應(yīng)用過程中,對組件類的繼承可以進(jìn)行更復(fù)雜的定制化操作。

程序運行效果如圖1.6所示。

圖1.6  Calculator程序的運行效果

出處:藍(lán)色理想
責(zé)任編輯:bluehearts

上一頁 MXML 下一頁 Flex的事件機制

◎進(jìn)入論壇RIA設(shè)計與應(yīng)用版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
Flex 3 RIA開發(fā)詳解與精深實踐
網(wǎng)站運營的認(rèn)識
用免費Flex3 SDK開發(fā)flash10應(yīng)用
Making Things Move 第四章
Making Things Move 第三章
作者文章 更多作者文章
《游戲藝術(shù)工廠》上冊上市
產(chǎn)品設(shè)計與用戶體驗
搜狐博客模板設(shè)計大賽獲獎名單
首屆"全國科技動漫大賽"邀請函
Flex 3 RIA開發(fā)詳解與精深實踐
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大福“敬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:4/71個記錄/頁 轉(zhuǎn)到 頁 共7個記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2