




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 AcionScript 3.0概述,ActionScript 3.0是針對(duì)Flash Player運(yùn)行時(shí)環(huán)境的編程語(yǔ)言,它用于處理各種人機(jī)交互、數(shù)據(jù)交互等功能。本章將粗略的介紹ActionScript語(yǔ)言的發(fā)展歷史、新增特色、編程環(huán)境等內(nèi)容,以及第一個(gè)ActionScript3.0程序。,1.1 關(guān)于ActionScript 3.0,ActionScript3.0是隨著Adobe Flash CS3和Flex 2.0的推出而同步推出的腳本編程語(yǔ)言。本節(jié)將對(duì)ActionScript3.0進(jìn)行簡(jiǎn)要的介紹,并通過(guò)一些具體的實(shí)例圖片,展示了常見(jiàn)的ActionScript的應(yīng)用領(lǐng)域。,1.1.1
2、 ActionScript 3.0介紹,ActionScript3.0與ActionScript以前的版本有個(gè)本質(zhì)上的不同。它是一門功能強(qiáng)大、符合業(yè)界標(biāo)準(zhǔn)的一門面向?qū)ο蟮木幊陶Z(yǔ)言。它在Flash編程語(yǔ)言中有著里程碑的作用,是用來(lái)開(kāi)發(fā)富應(yīng)用程序(RIA)的重要語(yǔ)言。 ActionScript 3.0在用于腳本撰寫的國(guó)際標(biāo)準(zhǔn)化編程語(yǔ)言ECMAScript的基礎(chǔ)之上,對(duì)該語(yǔ)言做了進(jìn)一步的改進(jìn),可為開(kāi)發(fā)人員提供用于豐富Internet應(yīng)用程序(RIA)的可靠的編程模型。開(kāi)發(fā)人員可以獲得卓越的性能并簡(jiǎn)化開(kāi)發(fā)過(guò)程,便于利用非常復(fù)雜的應(yīng)用程序、大的數(shù)據(jù)集和面向?qū)ο蟮?、可重?fù)使用的基本代碼。ActionScr
3、ipt 3.0在Flash Player 9中新的ActionScript虛擬機(jī)(AVM2)內(nèi)執(zhí)行,可為下一代RIA帶來(lái)性能突破。,1.1.2 ActionScript 3.0能做什么,最初在Flash中引入ActionScript,目的是為了實(shí)現(xiàn)對(duì)Flash影片的播放控制。而ActionScript發(fā)展到今天,其已經(jīng)廣泛的應(yīng)用到了多個(gè)領(lǐng)域,能夠?qū)崿F(xiàn)豐富的應(yīng)用功能。 ActionScript 3.0最基本的應(yīng)用與創(chuàng)作工具Adobe Flash CS3結(jié)合,創(chuàng)建各種不同的應(yīng)用特效,實(shí)現(xiàn)豐富多彩的動(dòng)畫效果,使Flash創(chuàng)建的動(dòng)畫更加人性話,更具有彈性效果。這些基礎(chǔ)應(yīng)用當(dāng)中,應(yīng)用最為廣泛的就是使用A
4、ctionScript腳本控制的彈性菜單。下面是一個(gè)彈性的效果,,1.2 ActionScript 3.0的新特色,ActionScript 3.0包括二部分:核心語(yǔ)言和Flash Player API。核心語(yǔ)言用于定義編程語(yǔ)言的基本結(jié)構(gòu), 比如聲明變量,創(chuàng)建表達(dá)式控制程序結(jié)構(gòu)和數(shù)據(jù)類型等。Flash Player API是由一系列用于實(shí)現(xiàn)特定功能的flash player類組成。,1.2.1 核心語(yǔ)言的新特色,ActionScript3.0核心語(yǔ)言與ECMAScript標(biāo)準(zhǔn)兼容,并和新改進(jìn)的一些功能區(qū)域進(jìn)行結(jié)合。下面是對(duì)一些其開(kāi)發(fā)者方便的地方和用法總結(jié)的一些新特點(diǎn): 1運(yùn)行時(shí)的異常處理機(jī)制
5、2運(yùn)行時(shí)類型 3密封類 4閉包方法 5E4X 6正則表達(dá)式 7命名空間 8新基元類型,1.2.1 Flash Player API 新功能,Flash Player API為增強(qiáng)Flash Player容納ActionScript語(yǔ)言的能力而引入的一組類和功能。這種功能把ActionScript核心語(yǔ)言和Flash平臺(tái)之間建立了一座橋梁,大大提高了Flash應(yīng)用程序的能力,并對(duì)核心語(yǔ)言起到了重要的補(bǔ)充作用。下面列出一些Flash Player API功能的新特點(diǎn): 1DOM3事件模型 2顯示列表API,1.3 Flash CS3的動(dòng)作面板介紹,Flash CS3中可以使用動(dòng)作面板、“腳本窗口”
6、或者外部編輯器的創(chuàng)作環(huán)境中田間ActionScript代碼。本節(jié)就來(lái)介紹一下Flash CS3的動(dòng)作面板窗口和Flash CS自帶的編輯器窗口,并將詳細(xì)的介紹功能按鈕的作用。,1.3.1 動(dòng)作面板概述,如果要在Flash CS3中加入ActionScript代碼,可以直接使用動(dòng)作面板來(lái)輸入。 要打開(kāi)動(dòng)作面板,請(qǐng)執(zhí)行下面的操作:?jiǎn)螕簟敬翱趞【動(dòng)作】,或者按【F9】。 打開(kāi)后的動(dòng)作面板如圖所示。 下面對(duì)圖中各部分的名稱及作用加以說(shuō)明。 A:腳本窗格,用于輸入代碼的地方。 B:面板菜單,單擊后可顯示動(dòng)作面板功能菜單 C:動(dòng)作工具箱,可以通過(guò)雙擊或者拖動(dòng)的方式將其中的ActionScript元素添加到
7、腳本窗格中。 D:腳本導(dǎo)航器,其有兩個(gè)功能,一是通過(guò)單擊其中的項(xiàng)目,可以將與該項(xiàng)目相關(guān)的代碼顯示在腳本窗口中,二是通過(guò)雙擊其中的項(xiàng)目,對(duì)該項(xiàng)目的代碼進(jìn)行固定操作。,1.3.2 腳本窗口概述,Action Script 3.0是很好的面向?qū)ο缶幊陶Z(yǔ)言,同樣Flash CS3也提供了一個(gè)很不錯(cuò)的腳本編輯器,這就是Flash的腳本窗口。使用腳本窗口可以創(chuàng)建或者導(dǎo)入外部的腳本文件,這些文件可以是ActionScript、Flash Communication或Flash JavaScript文件。,1.3.3 動(dòng)作面板和腳本窗口的工具介紹,在動(dòng)作面板和腳本窗口的上側(cè)都有一排功能按鈕,利用這些功能按鈕可
8、以很方面的進(jìn)行ActionScript代碼的輸入和編寫,下面對(duì)這些按鈕進(jìn)行具體的說(shuō)明。 :將新項(xiàng)目添加到腳本中按鈕,該按鈕主要用于顯示語(yǔ)言元素,這些元素同時(shí)也會(huì)顯示在“動(dòng)作”工具箱中。可以利用它來(lái)選擇要添加到腳本中的項(xiàng)目或者元素名稱。 :查找按鈕,主要用于查找并替換腳本中的文本。 :插入目標(biāo)路徑按鈕(僅限動(dòng)作面板),可以幫助為腳本中的某個(gè)動(dòng)作設(shè)置絕對(duì)或相對(duì)目標(biāo)路徑。 :語(yǔ)法檢查按鈕,用于檢查當(dāng)前腳本中的語(yǔ)法錯(cuò)誤。 :自動(dòng)套用格式按鈕,用來(lái)調(diào)整腳本的格式以實(shí)現(xiàn)正確的編碼語(yǔ)法和更好的可讀性。 :顯示代碼提示按鈕:用于在關(guān)閉了自動(dòng)代碼提示時(shí),可使用此按鈕來(lái)顯示正在吃力的代碼行的代碼提示。 :調(diào)試選項(xiàng)
9、按鈕(僅限動(dòng)作面板),用于設(shè)置和刪除斷點(diǎn),以便在調(diào)試時(shí)可以逐行執(zhí)行腳本中的每一行。,1.3.3 動(dòng)作面板和腳本窗口的工具介紹,:折疊成對(duì)大括號(hào)按鈕,用于對(duì)出現(xiàn)在當(dāng)前包含插入點(diǎn)的成對(duì)大括號(hào)或小括號(hào)間的代碼進(jìn)行折疊。 :折疊所選按鈕:用于折疊當(dāng)前所選的代碼塊。 :展開(kāi)全部按鈕:用于展開(kāi)當(dāng)前腳本中所有折疊的代碼。 :應(yīng)用塊注釋按鈕,用于將注釋標(biāo)記添加到所選代碼塊的開(kāi)頭和結(jié)尾。 :應(yīng)用行注釋按鈕,用于在插入點(diǎn)處或所選多行代碼中每一行的開(kāi)頭處添加單行注釋標(biāo)記。 :刪除注釋按鈕,用于從當(dāng)前行或當(dāng)前選擇內(nèi)容的所有行中刪除注釋標(biāo)記。 :顯示/隱藏工具箱按鈕,用于顯示或隱藏“動(dòng)作”工具箱。 :腳本助手按鈕(僅限
10、動(dòng)作面板),其用于打開(kāi)和關(guān)閉“腳本助手”模式。 :幫助按鈕,用于顯示“腳本”窗格中所選 ActionScript 元素的參考信息。 :面板菜單 (僅限動(dòng)作面板),包含適用于動(dòng)作面板的命令和首選參數(shù)。,1.4 ActionScript 3.0的首選參數(shù)設(shè)置,無(wú)論是在動(dòng)作面板還是腳本窗口中編輯ActionScript代碼,都可以通過(guò)設(shè)置首先參數(shù)來(lái)配置輸入的ActionScript代碼的格式。 要設(shè)置ActionScript 3.0的首選參數(shù),需要先打開(kāi)首選參數(shù)窗口。請(qǐng)執(zhí)行下面的操作:選擇【編輯】|【首選參數(shù)】,打開(kāi)首選參數(shù)對(duì)話框, 1. 工具提示樣式的代碼提示 2使用菜單樣式的代碼提示,1.5 面
11、向?qū)ο缶幊谈攀?ActionScript 3.0是為面向?qū)ο缶幊潭鴾?zhǔn)備的一種腳本語(yǔ)言。本節(jié)將簡(jiǎn)單介紹一下面向?qū)ο缶幊痰幕靖拍睢?面向?qū)ο缶幊?,英文為:Object Oriented Programming,簡(jiǎn)寫為OOP,意思為面向?qū)ο蟪绦蛟O(shè)計(jì),它是一種計(jì)算機(jī)編程架構(gòu)。 程序(program)是為實(shí)現(xiàn)特定目標(biāo)或者解決特定問(wèn)題而用計(jì)算機(jī)語(yǔ)言編寫的命令序列的集合。它可以是一些高級(jí)程序語(yǔ)言開(kāi)發(fā)出來(lái)的可以運(yùn)行的可執(zhí)行文件,也可以是一些應(yīng)用軟件制作出的可執(zhí)行文件,比如Flash編譯之后的SWF文件。 編程是指為了實(shí)現(xiàn)某種目的或需求,使用各種不同的程序語(yǔ)言進(jìn)行設(shè)計(jì),編寫能夠?qū)崿F(xiàn)這些需求的可執(zhí)行文件。,1.
12、6 Flash CS3的第一個(gè)“Welcome You”,Flash CS3中有兩種寫入ActionScript 3.0代碼的方法: 一種是在時(shí)間軸的關(guān)鍵幀加入ActionScript代碼。 另一種是在外部寫出呢個(gè)單獨(dú)的ActionScript類文件,然后在綁定或者導(dǎo)入到fla文件中來(lái)。 ActionScript中的類有三種用法:一是和Flash中的庫(kù)元件進(jìn)行綁定;二是和fla文件綁定;三是使用import關(guān)鍵字導(dǎo)入類。 ActionScript3.0開(kāi)發(fā)的程序,推薦文檔與代碼分離,不推薦把代碼寫在關(guān)鍵幀上。下面用兩種方法來(lái)開(kāi)始第一個(gè)“Welcome You”程序。 1在關(guān)鍵幀上加入代碼 2利
13、用文檔類制造第一個(gè)“Welcome You”程序,第2章 AS3.0編程語(yǔ)言基礎(chǔ),語(yǔ)法、數(shù)據(jù)、變量、運(yùn)算符和語(yǔ)句構(gòu)成了編程語(yǔ)言的基礎(chǔ)。本章將通過(guò)大量的測(cè)試代碼。詳細(xì)的介紹ActionScript 3.0中的語(yǔ)法、數(shù)據(jù)類型,變量以及運(yùn)算符。通過(guò)本章的學(xué)習(xí),為以后的面向?qū)ο缶幊虒⒋蛳乱粋€(gè)堅(jiān)實(shí)的基礎(chǔ)。,2.1 AS3.0語(yǔ)法,任何一門編程語(yǔ)言在編寫代碼時(shí)都必須遵循一定的規(guī)則,這個(gè)規(guī)則就是語(yǔ)法。本節(jié)將著重介紹從ActionScript 2.0開(kāi)始使用的點(diǎn)語(yǔ)法和區(qū)分大小寫,了解編程常用的標(biāo)點(diǎn)符號(hào)的使用,以及程序注釋的使用方法。,2.1.1 點(diǎn)語(yǔ)法,Flash中使用點(diǎn)(.)運(yùn)算符來(lái)訪問(wèn)對(duì)象的屬性和方法,點(diǎn)
14、運(yùn)算符主要用于下面的幾個(gè)方面。 1可以采用對(duì)象后面跟點(diǎn)運(yùn)算符的屬性名稱(方法)名稱來(lái)引用對(duì)象的屬性(方法)。 2可以采用點(diǎn)運(yùn)算符表示包路徑。 3可以使用點(diǎn)運(yùn)算符描述顯示對(duì)象的路徑。,2.1.2 標(biāo)點(diǎn)符號(hào)使用,在Flash中有多種標(biāo)點(diǎn)符號(hào)都很常用,分別為:分號(hào)(;)、逗號(hào)(,)、冒號(hào)(:)、小括號(hào)(())、中括號(hào)()和大括號(hào)()。這些標(biāo)點(diǎn)符號(hào)在Flash中都有各自不同的作用,可以幫助定義數(shù)據(jù)類型,終止語(yǔ)句或者構(gòu)建ActionScript代碼塊。 1分號(hào)(;):ActionScript語(yǔ)句用分號(hào)(;)字符表示語(yǔ)句結(jié)束。 2逗號(hào)(,):逗號(hào)的作用主要用于分割參數(shù),比如函數(shù)的參數(shù),方法的參數(shù)等等。 3
15、冒號(hào)(:):冒號(hào)的作用主要用于為變量指定數(shù)據(jù)類型。要為一個(gè)變量指明數(shù)據(jù)類型,需要使用var關(guān)鍵字和后冒號(hào)法為其指定。 4小括號(hào)(()):小括號(hào)在ActionScript3.0中有三種用途。 首先,在數(shù)學(xué)運(yùn)算方面,可以用來(lái)改變表達(dá)式的運(yùn)算順序。小括號(hào)內(nèi)的數(shù)學(xué)表達(dá)式優(yōu)先運(yùn)算。 其次,在表達(dá)式運(yùn)算方面,可以結(jié)合使用小括號(hào)和逗號(hào)運(yùn)算符,來(lái)優(yōu)先計(jì)算一系列表達(dá)式的結(jié)果并返回最后一個(gè)表達(dá)式的結(jié)果。 5中括號(hào)():中括號(hào)主要用于數(shù)組的定義和訪問(wèn), 6大括號(hào)():大括號(hào)主要用于編程語(yǔ)言程序控制,函數(shù)和類中。 在構(gòu)成控制結(jié)構(gòu)的每個(gè)語(yǔ)句前后添加大括號(hào)(例如if.else 或for),即使該控制結(jié)構(gòu)只包含一個(gè)語(yǔ)句。,
16、2.1.3 注釋,注釋是使用一些簡(jiǎn)單易懂的語(yǔ)言對(duì)代碼進(jìn)行簡(jiǎn)單的解釋的方法。注釋語(yǔ)句在編譯過(guò)程中并不會(huì)進(jìn)行求值運(yùn)算??梢杂米⑨寔?lái)描述代碼的作用,或者返回到文檔中的數(shù)據(jù)。注釋也可以幫助記憶編程的原理,并有助于其他人的閱讀。若代碼中有些內(nèi)容閱讀起來(lái)含義大不明顯,應(yīng)該對(duì)其添加注釋。 ActionScript3.0中的注釋語(yǔ)句有兩種:?jiǎn)涡凶⑨尯投嘈凶⑨尅?單行注釋以兩個(gè)單斜杠(/)開(kāi)始,之后的該行內(nèi)容均為注釋。比如下面的代碼: trace(1234)/輸出:1234,2.1.4 關(guān)鍵字和保留字,保留字,從字面上就很容易知道這是保留給ActionScript 3.0語(yǔ)言使用的英文單詞。因而不能使用這些單詞
17、作為變量、實(shí)例、類名稱等。如果在代碼中使用了這些單詞,編譯器會(huì)報(bào)錯(cuò)。 ActionScript3.0中的保留字分為3類:詞匯關(guān)鍵字、語(yǔ)法關(guān)鍵字和供將來(lái)使用的保留字。 1詞匯關(guān)鍵字 2句法關(guān)鍵字 3供將來(lái)使用的保留字。,2.2 變量和常量,變量和常量,都是為了儲(chǔ)存數(shù)據(jù)而創(chuàng)建的。變量和常量就像是一個(gè)容器,用于容納各種不同類型的數(shù)據(jù)。當(dāng)然對(duì)變量進(jìn)行操作,變量的數(shù)據(jù)就會(huì)發(fā)生改變,而常量則不會(huì)。 變量必須要先聲明后使用,否則編譯器就會(huì)報(bào)錯(cuò)。道理很簡(jiǎn)單,比如現(xiàn)在要去喝水,那么你首先要有一個(gè)杯子,否則怎么樣去裝水呢?要聲明變量的原因與此相同。,2.2.1 聲明變量的語(yǔ)法,在ActionScript 3.0中
18、,使用var關(guān)鍵字來(lái)聲明變量。格式如下所示。 var 變量名:數(shù)據(jù)類型; var 變量名:數(shù)據(jù)類型=值; 變量名加冒號(hào)加數(shù)據(jù)類型就是聲明的變量的基本格式。要聲明一個(gè)初始值,需要加上一個(gè)等號(hào)并在其后輸入響應(yīng)的值。但值的類型必須要和前面的數(shù)據(jù)類型一致。,2.2.2 變量的命名規(guī)則,變量的命名既是任意的,又是有規(guī)則,有目的的。隨手牽來(lái)、雜亂無(wú)章的命名在Flash里面容易引起代碼的混亂,也不容易進(jìn)行維護(hù)操作。 變量的命名首先要遵循下面的幾條原則: 它必須是一個(gè)標(biāo)識(shí)符。它的第一個(gè)字符必須是字母、下劃線(_)或美元記號(hào)($)。其后的字符必須是字母、數(shù)字、下劃線或美元記號(hào)。注意:不能使用數(shù)字作為變量名稱的第
19、一個(gè)字母。 它不能是關(guān)鍵字或動(dòng)作腳本文本,例如true、false、null或undefined。特別不能使用ActionScript的保留字,否則編譯器會(huì)報(bào)錯(cuò)。 它在其范圍內(nèi)必須是惟一的,不能重復(fù)定義變量。,2.2.3 變量的作用域,變量的作用域指可以使用或者引用該變量的范圍,通常變量按照其作用域的不同可以分為全局變量和局部變量。全局變量指在函數(shù)或者類之外定義的變量,而在類或者函數(shù)之內(nèi)定義的變量為局部變量。 全局變量在代碼的任何地方都可以訪問(wèn),所以在函數(shù)之外聲明的變量同樣可以訪問(wèn),如下面的代碼,函數(shù)Test()外聲明的變量i在函數(shù)體內(nèi)同樣可以訪問(wèn)。 var i:int=1; /定義Test函
20、數(shù) function Test() trace(i); Test()/輸出:1,2.2.4 變量的默認(rèn)值,變量的默認(rèn)值是指變量在沒(méi)有賦值之前的值。對(duì)于ActionScript3.0的數(shù)據(jù)類型來(lái)說(shuō),都有各自的默認(rèn)值,下面使用代碼來(lái)測(cè)試一下: 通過(guò)上面的代碼輸出,已經(jīng)可以得到這些數(shù)據(jù)類型變量的默認(rèn)值,分別為: Boolean型變量的默認(rèn)值是:false。 int型變量的默認(rèn)值是:0。 Number型變量的默認(rèn)值是:NaN。 Object型變量的默認(rèn)值是:null。 String型變量的默認(rèn)值是:null。 uint型變量的默認(rèn)值是:0。 *型變量的默認(rèn)值是:undefined。,2.2.5 使用c
21、onst聲明常量,Action Script 3.0中增加了一個(gè)const關(guān)鍵字,用于聲明常量。常量是指具有無(wú)法改變的固定值的屬性。比如Math.PI就是一個(gè)常量。常量可以看做一種特殊的變量,不過(guò)這種變量不能賦值,不能更改而已。 使用用const聲明常量的語(yǔ)法格式和var聲明的變量的格式一樣: const 常量名:數(shù)據(jù)類型; const 常量名:數(shù)據(jù)類型=值; 下面聲明常量的代碼: const g:Number=9.8;,2.3 基礎(chǔ)數(shù)據(jù)類型,和其它的面向?qū)ο蟮木幊痰臄?shù)據(jù)類型一樣,ActionScript3.0的數(shù)據(jù)類型同樣分為兩種,具體劃分方式如下所示。 基元型數(shù)據(jù)類型:Boolean、in
22、t、Number、String和uint。 復(fù)雜型數(shù)據(jù)類型:Array、Date、Error、Function、RegExp、XML和XMLList。 一般來(lái)說(shuō),基元值的處理速度通常比復(fù)雜值的處理速度要快。 基元型數(shù)據(jù)和復(fù)雜型數(shù)據(jù)類型的最大的區(qū)別是:基元型是值對(duì)類型數(shù)據(jù),而復(fù)雜型是引用類型數(shù)據(jù)。值對(duì)類型直接儲(chǔ)存數(shù)據(jù),使用它為另一個(gè)的變量賦值之后,若另一個(gè)變量改變,并不影響原變量的值。引用類型指向要操作的對(duì)象,另一個(gè)變量引用這個(gè)變量之后,若另一變量發(fā)生改變,原有的變量跟著也要發(fā)生改變。 基元型數(shù)據(jù)類型都是值對(duì)類型數(shù)據(jù),復(fù)雜型數(shù)據(jù)都是引用類型數(shù)據(jù)。 另外,最明顯的一個(gè)區(qū)別是,如果數(shù)據(jù)類型能夠使用n
23、ew關(guān)鍵字創(chuàng)建,那么它一定是引用型數(shù)據(jù)變量。,2.3.1 基礎(chǔ)數(shù)據(jù)類型說(shuō)明,本節(jié)通過(guò)大量的測(cè)試代碼,來(lái)說(shuō)明各種不同的數(shù)據(jù)類型的用法和使用中的注意事項(xiàng)。 1Boolean 數(shù)據(jù)類型 2數(shù)字:int、uint和Number 3String 數(shù)據(jù)類型 4Array數(shù)組類型 5Object數(shù)據(jù)類型 6Object數(shù)據(jù)類型,2.3.2 數(shù)據(jù)類型檢查,任何編程代碼在執(zhí)行前或者執(zhí)行時(shí)都要執(zhí)行數(shù)據(jù)類型的檢查,以避免出現(xiàn)數(shù)據(jù)錯(cuò)誤。ActionScript 3.0是動(dòng)態(tài)類型的語(yǔ)言,它默認(rèn)的是執(zhí)行時(shí)進(jìn)行數(shù)據(jù)類型檢查。同時(shí)它也在適合使用“嚴(yán)格模式”的編譯器在編譯時(shí)執(zhí)行數(shù)據(jù)類型檢查。在使用嚴(yán)格模式的編譯器中,數(shù)據(jù)類型檢
24、查既可以在執(zhí)行前執(zhí)行編譯器檢查,也可以在運(yùn)行時(shí)執(zhí)行運(yùn)行時(shí)檢查。在標(biāo)準(zhǔn)模式下,只支持默認(rèn)的執(zhí)行時(shí)數(shù)據(jù)類型檢查。 比如說(shuō)在程序編寫過(guò)程中,要明確傳遞變量值的類型和接受參數(shù)類型相同。比如下面的代碼: function func(mystr:String) trace(mystr); var str:String=welcome you; func(str);,2.3.3 隱式數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換是指把某個(gè)值轉(zhuǎn)換為其它類型的數(shù)據(jù)。類型的轉(zhuǎn)換有兩種方式:隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。隱式轉(zhuǎn)換又稱為強(qiáng)制轉(zhuǎn)換,由Flash Player在運(yùn)行時(shí)執(zhí)行。比如將2賦值給Boolean數(shù)據(jù)類型的變量,則Flash Pl
25、ayer會(huì)先將2轉(zhuǎn)換為布爾值true,然后再將其賦值給該變量。 隱式轉(zhuǎn)換可以稱為自動(dòng)轉(zhuǎn)換,是在程序編譯的過(guò)程中由程序本身來(lái)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。它主要發(fā)生在許多上下文中。主要分為以下幾種情況: 在賦值語(yǔ)句中。 在將值作為函數(shù)的參數(shù)傳遞時(shí)。 在從函數(shù)中返回值時(shí)。 在使用某些運(yùn)算符(如加法運(yùn)算符(+)的表達(dá)式中。,2.3.4 顯式數(shù)據(jù)類型轉(zhuǎn)換,顯式轉(zhuǎn)換是指代碼若指示編譯器將一個(gè)數(shù)據(jù)類型的變量視為屬于另一個(gè)類型的變量時(shí)執(zhí)行該轉(zhuǎn)換。該轉(zhuǎn)換主要利用數(shù)據(jù)類型的對(duì)象名稱來(lái)轉(zhuǎn)換。常用的數(shù)據(jù)轉(zhuǎn)換均為此方式。 顯示轉(zhuǎn)換是利用數(shù)據(jù)類型的對(duì)象名稱來(lái)轉(zhuǎn)換,常見(jiàn)的主要有下面的幾種。 1轉(zhuǎn)換為 int、uint 和 Numb
26、er 轉(zhuǎn)換為Boolean 轉(zhuǎn)換為 String,2.3.5 無(wú)類型說(shuō)明符,ActionScript 3.0引入了三種特殊類型的無(wú)類型說(shuō)明符:*,void和null。 使用*類型用于指定屬性是無(wú)類型的。使用*作為類型注釋與不使用類型注釋等效。從無(wú)類型屬性中讀取的表達(dá)式可視為無(wú)類型表達(dá)式。該說(shuō)明符主要用于兩個(gè)方面:將數(shù)據(jù)類型檢查延緩到運(yùn)行時(shí)和將undefined存儲(chǔ)在屬性中。 void用于說(shuō)明定函數(shù)無(wú)法返回任何值。void類型只有一個(gè)值:undefined。該說(shuō)明符僅用于聲明函數(shù)的返回類型。 null是一個(gè)沒(méi)有值的特殊數(shù)據(jù)類型。Null數(shù)據(jù)類型只有一個(gè)值:null。Null數(shù)據(jù)類型的不與任何類相
27、關(guān)聯(lián)。不可將Null數(shù)據(jù)類型用作屬性的類型注釋。,2.4 運(yùn)算符與表達(dá)式,學(xué)習(xí)一門編程語(yǔ)言,首先要弄清楚的就是如何對(duì)其中的數(shù)據(jù)進(jìn)行運(yùn)算。使用表達(dá)式來(lái)表達(dá)想要達(dá)到的效果,使用運(yùn)算符來(lái)進(jìn)行相關(guān)的運(yùn)算,這就是數(shù)據(jù)運(yùn)算的關(guān)鍵。本節(jié)主要介紹常用的運(yùn)算符的用法。,2.4.1 運(yùn)算符和表達(dá)式基礎(chǔ)知識(shí),運(yùn)算符是可以通過(guò)給出的一個(gè)或者多個(gè)值來(lái)產(chǎn)生另一個(gè)值的東西??梢哉f(shuō)它是一種特殊的函數(shù)。其中的值稱為“操作數(shù)”,具體包括字面值、變量和表達(dá)式。 運(yùn)算符分為三種:一元運(yùn)算符、二元運(yùn)算符、三元運(yùn)算符。一元運(yùn)算符只運(yùn)算一個(gè)值,例如遞增運(yùn)算符+;二元運(yùn)算符比較常見(jiàn),ActionScript 3.0中大部分運(yùn)算符都是二元運(yùn)算
28、符;三元運(yùn)算符具有三個(gè)操作數(shù),例如條件運(yùn)算符(?:)具有3個(gè)操作數(shù)。,2.4.2 賦值運(yùn)算符,賦值運(yùn)算符有兩個(gè)操作數(shù),它根據(jù)一個(gè)操作數(shù)的值對(duì)另一個(gè)操作數(shù)進(jìn)行賦值操作。ActionScript中的賦值運(yùn)算有12個(gè),,賦值運(yùn)算符,2.4.3 算術(shù)運(yùn)算符,算術(shù)運(yùn)算符共有6個(gè),分別為:加、減、乘、除、模運(yùn)算和求反運(yùn)算。 加、減、乘、除的運(yùn)算很簡(jiǎn)單,請(qǐng)看下面的代碼示例: var a:int=1; var b:int=2; var c:int=a+b; var d:int=a-b; var e:int=a*b; var f:int=a/b;,2.4.4 算術(shù)賦值運(yùn)算符,算術(shù)賦值運(yùn)算符和算術(shù)運(yùn)算符對(duì)應(yīng),共有
29、5個(gè),分別為+=、-=、*=、/=和%=。和賦值運(yùn)算符一樣,運(yùn)算符的左邊只能是變量。右側(cè)是一個(gè)要值、變量或表達(dá)式。 這種類型的賦值運(yùn)算符有時(shí)也叫做自賦值運(yùn)算符,就是利用自己進(jìn)行運(yùn)算并賦值給自己。比如下面的代碼語(yǔ)句: a+=1; 其要表達(dá)的運(yùn)算過(guò)程就是下面的的代碼要執(zhí)行的運(yùn)算過(guò)程。 a=a+1;,2.4.5 關(guān)系運(yùn)算符,關(guān)系運(yùn)算符用于比較兩個(gè)操作數(shù)的值的大小關(guān)系。常見(jiàn)的關(guān)系運(yùn)算符一般分為兩類:一類用于判斷大小關(guān)系,一類用于判斷相等關(guān)系。其具體情況如下: 判斷大小關(guān)系:大于運(yùn)算符、=大于等于運(yùn)算符、=小于等于運(yùn)算符。 判斷相等關(guān)系:等于運(yùn)算符、!=不等于運(yùn)算符、=嚴(yán)格等于運(yùn)算符、!=嚴(yán)格不等于運(yùn)算
30、符。 關(guān)系運(yùn)算符左右兩側(cè)可以是數(shù)值、變量或者表達(dá)式。關(guān)系表達(dá)式的結(jié)果是Boolean值,flase或者true。 1判斷大小關(guān)系的運(yùn)算符 2判斷相等關(guān)系的運(yùn)算符:,2.4.6 邏輯運(yùn)算符,邏輯運(yùn)算符有3個(gè),分別為: i-; trace(i);/輸出:4,2.4.9 三元條件運(yùn)算符,?:運(yùn)算符是唯一的一個(gè)三元運(yùn)算符,也就是說(shuō),這個(gè)運(yùn)算符有三個(gè)操作數(shù)。具體的語(yǔ)法格式如下: (條件表達(dá)式)?(表達(dá)式1):(表達(dá)式2) 格式說(shuō)明如下: 條件表達(dá)式:判斷表達(dá)式,通過(guò)邏輯判斷,得到一個(gè)Boolean型的結(jié)果。 表達(dá)式1:判斷表達(dá)式的結(jié)果為true,執(zhí)行該語(yǔ)句。 表達(dá)式2:判斷表達(dá)式的結(jié)果為false,執(zhí)行
31、該語(yǔ)句。,2.4.10 其它運(yùn)算符,在ActionScript3.0中還有幾個(gè)常見(jiàn)的運(yùn)算符,如:typeof、is、as。下面對(duì)這幾個(gè)運(yùn)算符進(jìn)行簡(jiǎn)單的說(shuō)明: 1typeof運(yùn)算符:typeof用于測(cè)試對(duì)象的的類型,使用的方法如下: typeof(對(duì)象); 2is運(yùn)算符:is運(yùn)算符用于判斷一個(gè)對(duì)象是不是屬于一種數(shù)據(jù)類型,返回Boolean型變量。如果對(duì)象屬于同一類型,則返回true,否則返回false。 3as運(yùn)算符:as運(yùn)算符和is運(yùn)算符的使用格式相同,但是返回的值不同。如果對(duì)象的類型相同,返回對(duì)象的值;若不同,則返回null。,2.4.11 運(yùn)算符的優(yōu)先級(jí),運(yùn)算符的優(yōu)先級(jí)順序決定了一個(gè)表達(dá)式
32、運(yùn)算順序。就像數(shù)學(xué)中的乘除運(yùn)算要優(yōu)于加減運(yùn)算一樣,ActionScript 3.0 中的各運(yùn)算符之間也有一個(gè)優(yōu)先運(yùn)算的順序。具體請(qǐng)參照表所示。,運(yùn)算符優(yōu)先順序表,第3章 AS3.0程序設(shè)計(jì),任何一門編程語(yǔ)言都要設(shè)計(jì)程序問(wèn)題,ActionScript 3.0也不例外。在本章中,將介紹ActionScript3.0系統(tǒng)的基本語(yǔ)句以及程序設(shè)計(jì)的一般過(guò)程。首先介紹一下程序控制的邏輯運(yùn)算,然后著重介紹條件語(yǔ)句和循環(huán)語(yǔ)句。,3.1 邏輯運(yùn)算,在程序設(shè)計(jì)的過(guò)程中,要實(shí)現(xiàn)程序設(shè)計(jì)的目的,必須進(jìn)行邏輯運(yùn)算。只有進(jìn)行邏輯運(yùn)算,才能控制程序不斷向最終要達(dá)到的目的前進(jìn),知道最后實(shí)現(xiàn)目標(biāo)。 邏輯運(yùn)算又稱為布爾運(yùn)算,通常
33、用來(lái)測(cè)試真假值。邏輯運(yùn)算主要使用條件表達(dá)式進(jìn)行判斷,如果符合條件,則返回結(jié)果true,不符合條件,返回結(jié)果false。 條件表達(dá)式中最常見(jiàn)的形式就是利 用關(guān)系運(yùn)算符進(jìn)行操作數(shù)比較,進(jìn)而得到判斷條件。 當(dāng)然,有的情況下需要控制的條件比較多,那么就需要使用邏輯表達(dá)式進(jìn)行邏輯運(yùn)算,得到一個(gè)的組合條件,并控制最后的輸出結(jié)果。 常見(jiàn)的條件表達(dá)式舉例如下: (a0):表示判斷條件為a0。若是,返回true;否則返回false。 (a=b) /執(zhí)行第二句代碼,給變量a賦值數(shù)值1 a=1; /執(zhí)行第三句代碼,變量a執(zhí)行遞加操作 a+;,3.2.2 選擇結(jié)構(gòu),當(dāng)程序有多種可能的選擇時(shí),就要使用選擇結(jié)構(gòu)。選擇那一
34、個(gè),要根據(jù)條件表達(dá)式的計(jì)算結(jié)果而定。結(jié)構(gòu)如圖所示。,3.2.3 循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)就是多次執(zhí)行同一組代碼,重復(fù)的次數(shù)由一個(gè)數(shù)值或條件來(lái)決定。結(jié)構(gòu)如圖所示。,3.3 選擇程序結(jié)構(gòu),選擇程序結(jié)構(gòu)就是利用不同的條件去執(zhí)行不同的語(yǔ)句或者代碼。ActionScript 3.0有三個(gè)可用來(lái)控制程序流的基本條件語(yǔ)句。其分別為if.else條件語(yǔ)句、if.else if條件語(yǔ)句、switch條件語(yǔ)句。本節(jié)將詳細(xì)講解這三種不同的選擇程序結(jié)構(gòu)。,3.3.1 if.else 條件語(yǔ)句,if.else條件語(yǔ)句判斷一個(gè)控制條件,如果該條件能夠成立,則執(zhí)行一個(gè)代碼塊,否則執(zhí)行另一個(gè)代碼塊。 if.else條件語(yǔ)句基本格式
35、如下: if(表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2; ,3.3.2 if.else if.else語(yǔ)句,if.else條件語(yǔ)句執(zhí)行的操作最多只有兩種選擇,要是有更多的選擇,那就可以使用if.else if.else條件語(yǔ)句。,3.3.3 Switch語(yǔ)句,Switch語(yǔ)句相等于一系列的if.else if.語(yǔ)句,但是要比if語(yǔ)句要清晰的多。switch 語(yǔ)句不是對(duì)條件進(jìn)行測(cè)試以獲得布爾值,而是對(duì)表達(dá)式進(jìn)行求值并使用計(jì)算結(jié)果來(lái)確定要執(zhí)行的代碼塊。 Switch語(yǔ)句格式如下: switch (表達(dá)式) case: 程序語(yǔ)句1; break; case: 程序語(yǔ)句2; break; case: 程序語(yǔ)
36、句3; break; default: 默認(rèn)執(zhí)行程序語(yǔ)句; ,3.4 循環(huán)程序結(jié)構(gòu),在現(xiàn)實(shí)生活中有很多規(guī)律性的操作,作為程序來(lái)說(shuō)就是要重復(fù)執(zhí)行某些代碼。其中重復(fù)執(zhí)行的代碼稱為循環(huán)體,能否重復(fù)操作,取決于循環(huán)的控制條件。循環(huán)語(yǔ)句可以認(rèn)為是由循環(huán)體和控制條件兩部分組成。 循環(huán)程序結(jié)構(gòu)的結(jié)構(gòu)一般認(rèn)為有兩種: 一種先進(jìn)行條件判斷,若條件成立,執(zhí)行循環(huán)體代碼,執(zhí)行完之后再進(jìn)行條件判斷,條件成立繼續(xù),否則退出循環(huán)。若第一次條件就不滿足,則一次也不執(zhí)行,直接退出。 另一種是先執(zhí)行依次操作,不管條件,執(zhí)行完成之后進(jìn)行條件判斷,若條件成立,循環(huán)繼續(xù),否則退出循環(huán)。,3.4.1 for循環(huán)語(yǔ)句,for循環(huán)語(yǔ)句是A
37、ctionScript編程語(yǔ)言中最靈活、應(yīng)用最為廣泛的語(yǔ)句。for循環(huán)語(yǔ)句語(yǔ)法格式如下: for(初始化;循環(huán)條件;步進(jìn)語(yǔ)句) 循環(huán)執(zhí)行的語(yǔ)句; 格式說(shuō)明如下: 初始化:把程序循環(huán)體中需要使用的變量進(jìn)行初始化。注意要使用var關(guān)鍵字來(lái)定義變量,否則編譯時(shí)會(huì)報(bào)錯(cuò)。 循環(huán)條件:邏輯運(yùn)算表達(dá)式,運(yùn)算的結(jié)果決定循環(huán)的進(jìn)程。若為flase,退出循環(huán),否則繼續(xù)執(zhí)行循環(huán)代碼。 步進(jìn)語(yǔ)句:算術(shù)表達(dá)式,用于改變循環(huán)變量的值。通常為使用+(遞增)或-(遞減)運(yùn)算符的賦值表達(dá)式。 循環(huán)執(zhí)行的語(yǔ)句:循環(huán)體,通過(guò)不斷改變變量的值,已達(dá)到需要實(shí)現(xiàn)的目標(biāo)。,3.4.2 while循環(huán)語(yǔ)句,while循環(huán)語(yǔ)句是典型的“當(dāng)型循
38、環(huán)”語(yǔ)句,意思是當(dāng)滿足條件時(shí),執(zhí)行循環(huán)體的內(nèi)容。while循環(huán)語(yǔ)句語(yǔ)法格式如下: while(循環(huán)條件) 循環(huán)執(zhí)行的語(yǔ)句 格式說(shuō)明如下: 循環(huán)條件:邏輯運(yùn)算表達(dá)式,運(yùn)算的結(jié)果決定循環(huán)的進(jìn)程。若為true,繼續(xù)執(zhí)行循環(huán)代碼,否則退出循環(huán)。 循環(huán)執(zhí)行的語(yǔ)句:循環(huán)體,其中包括變量改變賦值表達(dá)式,執(zhí)行語(yǔ)句并實(shí)現(xiàn)變量賦值。,3.4.3 do.while循環(huán)語(yǔ)句,dowhile循環(huán)是另一一種while循環(huán),它保證至少執(zhí)行一次循環(huán)代碼,這是因?yàn)槠涫窃趫?zhí)行代碼塊后才會(huì)檢查循環(huán)條件。dowhile循環(huán)語(yǔ)句語(yǔ)法格式如下: do 循環(huán)執(zhí)行的語(yǔ)句 while (循環(huán)條件) 循環(huán)執(zhí)行的語(yǔ)句:循環(huán)體,其中包括變量改變賦值
39、表達(dá)式,執(zhí)行語(yǔ)句并實(shí)現(xiàn)變量賦值。 循環(huán)條件:邏輯運(yùn)算表達(dá)式,運(yùn)算的結(jié)果決定循環(huán)的進(jìn)程。若為true,繼續(xù)執(zhí)行循環(huán)代碼,否則退出循環(huán)。,3.4.4 for.in和for each.in語(yǔ)句,for.in和for each.in語(yǔ)句都可以用于循環(huán)訪問(wèn)對(duì)象屬性或數(shù)組元素。下面分別使用兩種語(yǔ)句來(lái)訪問(wèn)對(duì)象中的屬性。代碼如下所示。 /定義一個(gè)對(duì)象lzxt,并添加屬性name和age var lzxt:Object = name:浪子嘯天, age:30; /執(zhí)行遍歷操作 for (var i:String in lzxt) /輸出屬性名稱和屬性值 trace(for in 語(yǔ)句輸出:+i + : + lz
40、xti); /執(zhí)行for each遍歷操作 for each (var k:String in lzxt) /輸出屬性值 trace(for each 語(yǔ)句輸出:+k); ,3.4.5 循環(huán)的嵌套,嵌套循環(huán)語(yǔ)句,就是在一個(gè)循環(huán)的循環(huán)體中存在另一個(gè)循環(huán)體,如此重復(fù)下去直到循環(huán)結(jié)束為止,即為循環(huán)中的循環(huán)。以for循環(huán)為例,格式如下所示。 for (初始化; 循環(huán)條件; 步進(jìn)語(yǔ)句) for (初始化; 循環(huán)條件; 步進(jìn)語(yǔ)句) 循環(huán)執(zhí)行的語(yǔ)句; ,3.4.6 循環(huán)流程控制語(yǔ)句,在ActionScript 3.0中可以使用break和continue來(lái)控制循環(huán)流程。break語(yǔ)句的結(jié)果是直接跳出循環(huán),不
41、再執(zhí)行后面的語(yǔ)句;continue語(yǔ)句的結(jié)果是停止當(dāng)前這一輪的循環(huán),直接跳到下一輪的循環(huán),而當(dāng)前輪次中continue后面的語(yǔ)句也不再執(zhí)行。 下面的兩個(gè)例子分別執(zhí)行循環(huán)變量從0遞增到10的過(guò)程,如果i等于4,分別執(zhí)行break和continue語(yǔ)句,看發(fā)生的情況。代碼如下所示。 /使用break控制循環(huán) for (var i:int=0; i10; i+) if (i=3) break; trace(當(dāng)前數(shù)字是:+i); ,第4章 函數(shù),函數(shù)在程序設(shè)計(jì)的過(guò)程中,是一個(gè)革命性的創(chuàng)新。利用函數(shù)編程,可以避免冗長(zhǎng)、雜亂的代碼;利用函數(shù)編程,可以重復(fù)利用代碼,提高程序效率;利用函數(shù)編程,可以便利的修改
42、程序,提高編程效率。 函數(shù)(Function)的準(zhǔn)確的定義為:執(zhí)行特定任務(wù),并可以在程序中重用的代碼塊。ActionScript 3.0中有兩類函數(shù):“方法”和“函數(shù)閉包”。具體是將函數(shù)稱為方法還是函數(shù)閉包,取決于定義函數(shù)的上下文。,4.1 定義函數(shù),在ActionScript 3.0中有兩種定義函數(shù)的方法:一種是常用的函數(shù)語(yǔ)句定義法;一種是ActionScript中獨(dú)有的函數(shù)表達(dá)式定義法。具體使用哪一種方法來(lái)定義,要根據(jù)編程習(xí)慣來(lái)選擇。一般的編程人員使用函數(shù)語(yǔ)句定義法,對(duì)于有特殊需求的編程人員,則使用函數(shù)表達(dá)式定義法。,4.1.1 函數(shù)語(yǔ)句定義法,函數(shù)語(yǔ)句定義法是程序語(yǔ)言中基本類似的定義方法
43、,使用function關(guān)鍵字來(lái)定義,其格式如下所示。 function 函數(shù)名(參數(shù)1:參數(shù)類型,參數(shù)2:參數(shù)類型):返回類型 /函數(shù)體 代碼格式說(shuō)明: function:定義函數(shù)使用的關(guān)鍵字。注意function關(guān)鍵字要以小寫字母開(kāi)頭。 函數(shù)名:定義函數(shù)的名稱。函數(shù)名要符合變量命名的規(guī)則,最好給函數(shù)取一個(gè)與其功能一致的名字。 小括號(hào):定義函數(shù)的必需的格式,小括號(hào)內(nèi)的參數(shù)和參數(shù)類型都可選。 返回類型:定義函數(shù)的返回類型,也是可選的,要設(shè)置返回類型,冒號(hào)和返回類型必須成對(duì)出現(xiàn),而且返回類型必須是存在的類型。 大括號(hào):定義函數(shù)的必需格式,需要成對(duì)出現(xiàn)。括起來(lái)的是函數(shù)定義的程序內(nèi)容,是調(diào)用函數(shù)時(shí)執(zhí)行
44、的代碼。,4.1.2 函數(shù)表達(dá)式定義法,函數(shù)表達(dá)式定義法有時(shí)也稱為函數(shù)字面值或匿名函數(shù)。這是一種較為繁雜的方法,在早期的ActionScript版本中廣為使用。其格式如下所示。 var 函數(shù)名:Function=function(參數(shù)1:參數(shù)類型,參數(shù)2:參數(shù)類型):返回類型 /函數(shù)體 代碼格式說(shuō)明: var:定義函數(shù)名的關(guān)鍵字,var關(guān)鍵字要以小寫字母開(kāi)頭。 函數(shù)名:定義的函數(shù)名稱。 Function:指示定義數(shù)據(jù)類型是Function類。注意Function為數(shù)據(jù)類型,需大寫字母開(kāi)頭。 =:賦值運(yùn)算符,把匿名函數(shù)賦值給定義的函數(shù)名。 function:定義函數(shù)的關(guān)鍵字,指明定義的是函數(shù) 小
45、括號(hào):定義函數(shù)的必需的格式,小括號(hào)內(nèi)的參數(shù)和參數(shù)類型都可選。 返回類型:定義函數(shù)的返回類型,可選參數(shù)。 大括號(hào):其中為函數(shù)要執(zhí)行的代碼。,4.1.3 兩種定義方法的區(qū)別和選擇,原則上,推薦使用使用函數(shù)語(yǔ)句定義法。因?yàn)檫@種方法更加簡(jiǎn)潔,更有助于保持嚴(yán)格模式和標(biāo)準(zhǔn)模式的一致性的。 下面要講解的是函數(shù)語(yǔ)句和函數(shù)表達(dá)式定義法之間存在的區(qū)別,具體內(nèi)容如下所示。 1兩種方法區(qū)別 2兩種方法的選擇 在兩種定義方法的選擇上,一般使用函數(shù)語(yǔ)句定義法。函數(shù)表達(dá)式定義函數(shù)主要用于:一是適合關(guān)注運(yùn)行時(shí)行為或動(dòng)態(tài)行為的編程,二是用于那些使用一次后便丟棄的函數(shù)或者向原型屬性附加的函數(shù)。函數(shù)表達(dá)式更多地用在動(dòng)態(tài)編程或標(biāo)準(zhǔn)模
46、式編程中。,4.2 調(diào)用函數(shù),函數(shù)只是一個(gè)編好的程序塊,在沒(méi)有被調(diào)用之前,什么也不會(huì)發(fā)生。只有通過(guò)調(diào)用函數(shù),函數(shù)的功能才能夠?qū)崿F(xiàn),才能體現(xiàn)出函數(shù)的高效率。通過(guò)本節(jié)的學(xué)習(xí),讀者將掌握一般的函數(shù)調(diào)用方法以及嵌套和遞歸調(diào)用函數(shù)的方法。,4.2.1 函數(shù)的一般調(diào)用,對(duì)于沒(méi)有參數(shù)的函數(shù),可以直接使用該函數(shù)的名字,并后跟一個(gè)圓括號(hào)(它被稱為“函數(shù)調(diào)用運(yùn)算符”)來(lái)調(diào)用。 下面定義一個(gè)不帶參數(shù)的函數(shù)HelloAS(),并在定義之后直接調(diào)用,其代碼如下。 function HelloAS() trace(AS3.0世界歡迎你!); HelloAS(); 代碼運(yùn)行后的輸出結(jié)果,如下所示。 /輸出:AS3.0世界歡
47、迎你!,4.2.2 嵌套和遞歸調(diào)用函數(shù),嵌套和遞歸調(diào)用是兩種類似函數(shù)調(diào)用方式,其本質(zhì)都是在調(diào)用函數(shù)時(shí)用一個(gè)函數(shù)就調(diào)用另一個(gè)函數(shù)。不同的是,嵌套調(diào)用是用一個(gè)函數(shù)去調(diào)用另一個(gè)函數(shù),而遞歸調(diào)用是函數(shù)調(diào)用自身函數(shù)。 1嵌套調(diào)用函數(shù) 2遞歸調(diào)用函數(shù),4.3 函數(shù)的返回值,主調(diào)函數(shù)通過(guò)函數(shù)的調(diào)用得到一個(gè)確定的值,此值被稱為函數(shù)的返回值。利用函數(shù)的返回值,可以通過(guò)函數(shù)進(jìn)行數(shù)據(jù)的處理、分析和轉(zhuǎn)換,并能最終獲取想要獲得的結(jié)果。在本節(jié)我們主要學(xué)習(xí)函數(shù)返回值的獲取方法和獲取過(guò)程中的注意事項(xiàng)。,4.3.1 return語(yǔ)句,AS從函數(shù)中獲取返回值,使用return語(yǔ)句來(lái)實(shí)現(xiàn),語(yǔ)法格式如下: return 返回值 re
48、turn:函數(shù)返回值的關(guān)鍵字,必須的。 返回值:函數(shù)中返回的數(shù)據(jù),既可以是字符串、數(shù)值等,也可以是對(duì)象,如數(shù)組、影片簡(jiǎn)介等。 下面定義一個(gè)求圓形面積的函數(shù),并返回圓面積的值,其代碼如下: function 圓面積(r:Number):Number var s:Number=Math.PI*r*r return s trace(圓面積(5),4.3.2 返回值類型,函數(shù)的返回類型在函數(shù)的定義中屬于可選參數(shù),如果沒(méi)有選擇,那么返回值的類型由return語(yǔ)句中返回值的數(shù)據(jù)類型來(lái)決定。 下面的代碼,return語(yǔ)句返回一個(gè)字符型數(shù)據(jù),來(lái)驗(yàn)證一下返回值的類型。 function 類型測(cè)試() var a
49、:String=這是一個(gè)字符串; return a; trace(typeof(類型測(cè)試(); 代碼運(yùn)行后的輸出結(jié)果,如下所示。 string,4.4 函數(shù)的參數(shù),函數(shù)通過(guò)參數(shù)向函數(shù)體傳遞數(shù)據(jù)和信息。ActionScript 3.0對(duì)函數(shù)的參數(shù)增加了一些新功能,同時(shí)也增加了一些限制。有大多數(shù)程序員都熟悉的按值或按引用傳遞參數(shù)這一概念,也有對(duì)很多人很陌生的arguments對(duì)象和.(rest)參數(shù)。,4.4.1 傳遞參數(shù)的語(yǔ)法,函數(shù)中傳遞的參數(shù)都位于函數(shù)格式的括號(hào)中,語(yǔ)法格式如下: (參數(shù)1:參數(shù)類型=默認(rèn)值,參數(shù)2:參數(shù)類型=默認(rèn)值) 下面定義一個(gè)個(gè)性化的歡迎語(yǔ)句,對(duì)不同的姓名給出對(duì)應(yīng)的問(wèn)候。
50、代碼如下所示。 function Welcome(username:String):void trace(歡迎你!+username); Welcome(張三); Welcome(小明); 代碼運(yùn)行后的輸出結(jié)果,如下所示。 歡迎你!張三 歡迎你!小明,4.4.2 傳遞參數(shù)的的兩種方法,許多編程語(yǔ)言中,參數(shù)的傳遞基本都是兩種類型:按值或者按引用傳遞。按值傳遞意味著將參數(shù)的值復(fù)制到局部變量中以便在函數(shù)內(nèi)使用。按引用傳遞意味著將只傳遞對(duì)參數(shù)的引用,而不傳遞實(shí)際值。要了解任何一門編程語(yǔ)言中的函數(shù),首先必須搞清楚的問(wèn)題就是參數(shù)的傳遞到底是按值還是按引用來(lái)傳遞參數(shù)。 在ActionScript 3.0 中
51、,所有的參數(shù)均按引用傳遞,因?yàn)樗械闹刀即鎯?chǔ)為對(duì)象。基元型數(shù)據(jù)是不變的對(duì)象,按按值還是按引用的效果一樣,通常可以看作是按值傳遞。按值傳遞,就是指參數(shù)被傳遞給函數(shù)后,被傳遞的變量就獨(dú)立了。若在函數(shù)中改變這個(gè)變量,原變量不會(huì)發(fā)生任何的變化。,4.4.3 給函數(shù)設(shè)置默認(rèn)參數(shù),在ActionScript 2.0中并不支持對(duì)函數(shù)設(shè)置默認(rèn)參數(shù),此為ActionScript 3.0的新功能。要給一個(gè)函數(shù)的參數(shù)設(shè)置默認(rèn)值,語(yǔ)法格式如下: function(參數(shù)1:參數(shù)類型=默認(rèn)值,參數(shù)2:參數(shù)類型=默認(rèn)值) 默認(rèn)參數(shù)是可選項(xiàng),可以設(shè)置默認(rèn)參數(shù),也可以不設(shè)置默認(rèn)參數(shù)。若設(shè)置了默認(rèn)參數(shù),則在調(diào)用函時(shí),若果沒(méi)有寫明
52、參數(shù),系統(tǒng)將使用在函數(shù)定義中為該參數(shù)指定的值。,4.4.4 arguments 對(duì)象和.(rest) 參數(shù),ActionScript3.0中有兩種函數(shù)調(diào)用時(shí)檢查參數(shù)數(shù)量的方法,分別為使用arguments對(duì)象和.(rest) 參數(shù)。 1arguments 對(duì)象 在函數(shù)中,可以使用arguments 對(duì)象來(lái)訪問(wèn)有關(guān)傳遞給該函數(shù)的參數(shù)的信息。arguments 對(duì)象是一個(gè)數(shù)組,其中按順序保存著傳遞給函數(shù)的所有參數(shù)??梢允褂脭?shù)組的訪問(wèn)方式來(lái)訪問(wèn)傳入的參數(shù)。它有一個(gè)length屬性記錄當(dāng)前傳入的參數(shù)數(shù)目;還有一個(gè)屬性callee提供對(duì)函數(shù)本身的引用,該引用可用于遞歸調(diào)用函數(shù)表達(dá)式。 2.(rest)參
53、數(shù) .(rest)參數(shù)是ActionScript3.0引入的新參數(shù)聲明。使用該參數(shù)可指定一個(gè)自己命名的數(shù)組參數(shù)來(lái)接受任意多個(gè)以逗號(hào)分隔的參數(shù)。,第5章 事件的發(fā)送和處理,事件處理系統(tǒng)是交互式程序設(shè)計(jì)的重要基礎(chǔ)。利用事件處理機(jī)制,可以方便的相應(yīng)用戶輸入和系統(tǒng)事件。ActionScript 3.0的事件機(jī)制基于文檔對(duì)象模型(DOM3),是業(yè)界標(biāo)準(zhǔn)的事件處理體系結(jié)構(gòu)。使用機(jī)制不僅方便,而且符合標(biāo)準(zhǔn)。ActionScript 3.0全新的事件處理機(jī)制是ActionScript編程語(yǔ)言中的重大改進(jìn),對(duì)ActionScript程序設(shè)計(jì)人員來(lái)說(shuō),在使用上也更加的方便和直觀。,5.1 事件處理基礎(chǔ),在本節(jié)將介
54、紹事件和處理的基本概念,了解常見(jiàn)的事件處理任務(wù)。對(duì)照ActionScript編程語(yǔ)言中不同版本的事件處理機(jī)制的異同,明確ActionScript 3.0中事件處理機(jī)制具有良好的性能。,5.1.1 事件和事件處理基礎(chǔ)知識(shí),事件和事件處理是面向?qū)ο缶幊痰幕A(chǔ)。本節(jié)將介紹事件和事件處理的基礎(chǔ)知識(shí)以及事件處理的方法和事件處理的任務(wù)。 1事件和事件處理基本概念 2ActionScript 3.0中的事件和事件處理 3ActionScript 3.0中的事件處理任務(wù) 在ActionScript 3.0編程過(guò)程中,常見(jiàn)的使用事件處理的任務(wù)有: 編寫代碼以響應(yīng)事件 阻止代碼響應(yīng)事件 處理事件對(duì)象 處理事件流
55、從類中調(diào)度事件 創(chuàng)建自定義事件類型,5.1.2 早期 ActionScript 版本中的事件處理,ActionScript 1.0使用on()和onClipEvent()兩個(gè)事件處理函數(shù)來(lái)處理事件。具體為: on()事件處理函數(shù),直接放在按鈕或者影片剪輯實(shí)例上。 onClipEvent()處理函數(shù),直接放在影片剪輯實(shí)例上。 這種方法把代碼直接夾在實(shí)例上,簡(jiǎn)單易于、方便直接,但是由于分散在各個(gè)不同的元件之上,難以管理和維護(hù)。特別是處理不是本人編寫的代碼,查看和找尋會(huì)浪費(fèi)太多的寶貴時(shí)間。 在ActionScript2.0中對(duì)事件處理進(jìn)行了改進(jìn),增加了一些事件處理機(jī)制,具體為: 回調(diào)函數(shù)事件:onl
56、oad、oninit、onComplete等。 事件偵聽(tīng)器:addListener()、addEventListener()。,5.1.3 ActionScript 3.0中的事件處理,在ActionScript 3.0引入了基于文檔對(duì)象模型(DOM3)唯一的一種事件處理模式,取代了以前各版本中存在的眾多的事件處理機(jī)制。在ActionScript3.0中值存在一種事件處理模型,雖然會(huì)對(duì)一些老版本的用戶和一些非開(kāi)發(fā)者造成一定的麻煩,但更加清晰,更加標(biāo)準(zhǔn),更符合面向?qū)ο箝_(kāi)發(fā)的需要。 對(duì)比ActionScript 2.0,ActionScript 3.0的事件處理體系具有以下幾個(gè)新特點(diǎn): 在Acti
57、onScript 3.0中,只能使用addEventListener()注冊(cè)偵聽(tīng)器。 在ActionScript 3.0中,可以對(duì)屬于事件流一部分的任何對(duì)象調(diào)用addEventListener()方法。 在ActionScript 3.0中,只有函數(shù)或方法可以是事件偵聽(tīng)器。,5.2 Event類,在ActionScript 3.0的事件處理系統(tǒng)中,事件對(duì)象主要有兩個(gè)作用:一是將事件信息儲(chǔ)存在一組屬性中,來(lái)代表具體事件;二是包含一組方法,用于操作事件對(duì)象和影響事件處理系統(tǒng)的行為。 在ActionScript 3.0中,在Flash播放器的應(yīng)用程序接口中,有一個(gè)Event類,作為所有事件對(duì)象的基類
58、,也就是說(shuō),程序中所發(fā)生的事件都必須是Event類或者其子類的實(shí)例。,5.2.1 了解Event類屬性,Event類公開(kāi)的屬性有:type、cancelable、target、currentTarget、eventphase、bubles。 1type屬性:每個(gè)事件對(duì)象都有關(guān)聯(lián)的事件類型。事件類型存儲(chǔ)以字符串的形式存儲(chǔ)在Event.type屬性中。利用事件類型,可以區(qū)分不同類型的事件。 2cancelable屬性:事件的默認(rèn)行為是否可以被阻止由布爾值表示,并存儲(chǔ)在Event.cancelable屬性中。此屬性時(shí)一個(gè)布爾值,默認(rèn)為flase。這個(gè)屬性一般是和preventDefault()方法結(jié)
59、合在一起使用的。 3target屬性:target屬性用于存儲(chǔ)對(duì)事件目標(biāo)的引用。 4其它屬性:currentTarget、eventphase和bubbles這三個(gè)屬性都是和ActionScript3的事件流機(jī)制有關(guān),在平時(shí)用到的不多。,5.2.2 了解Event類的方法,Event類的方法有7種:clone()、toString()、stopPropogation()、stopImmediatePropogation()、preventDefault()、isDefaultPrevented()和formatToString()。這些方法的用途如下: Event.clone()方法用于賦值Event子類實(shí)例,返回Event對(duì)象原始實(shí)例的副本。當(dāng)需要自定義Event子類時(shí),就必須要繼承Event.clone()方法,用于賦值自定義類的屬性。另外還要加上新的屬性,否則在偵聽(tīng)器重寫調(diào)用時(shí),這些屬性的值會(huì)出現(xiàn)錯(cuò)誤。 Event.toString()屬性返回一個(gè)包含Event對(duì)象的所有屬性的字符串。如果要自定義事件類,那么重寫toString()方法時(shí),可以使用formatToString()這個(gè)方法在返回的字符串中加入新的事件實(shí)例屬性。 Event.sto
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高質(zhì)量就業(yè)促進(jìn)路徑中的企業(yè)責(zé)任與機(jī)會(huì)
- 高等教育科研項(xiàng)目評(píng)估與績(jī)效管理機(jī)制
- 教育技術(shù)對(duì)商業(yè)決策的影響及價(jià)值創(chuàng)造
- 遼寧省沈陽(yáng)市第八十五中學(xué)2024年物理八上期末考試模擬試題含解析
- 河南省安陽(yáng)市殷都區(qū)2024年八年級(jí)數(shù)學(xué)第一學(xué)期期末統(tǒng)考模擬試題含解析
- 智能家居系統(tǒng)采購(gòu)合同第七章用戶隱私保護(hù)與安全
- 跨境寵物稅籌市場(chǎng)分析報(bào)告:趨勢(shì)挑戰(zhàn)與機(jī)遇
- 2025年精麻藥品培訓(xùn)考試試題庫(kù)(含參考答案)
- 水庫(kù)智能調(diào)度系統(tǒng)優(yōu)化技術(shù)研究及市場(chǎng)推廣策略
- 2025至2030黃銅管行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 山東畜牧獸醫(yī)單招考試題及答案
- 商戶安全生產(chǎn)培訓(xùn)課件
- 2025年西安高新區(qū)管委會(huì)招聘考試試卷
- 2024-2025學(xué)年成都市青羊區(qū)七年級(jí)下英語(yǔ)期末考試題(含答案)
- 死亡病例討論制度落實(shí)與質(zhì)控優(yōu)化
- 2018-2024年中國(guó)西瓜行業(yè)市場(chǎng)趨勢(shì)分析及投資潛力研究報(bào)告
- DB32∕T 5048-2025 全域土地綜合整治項(xiàng)目驗(yàn)收規(guī)范
- 2025屆河北中考道德與法治真題試卷【含答案】
- 電信防詐騙培訓(xùn)課件
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
- 第2課《說(shuō)和做》課件(共30張ppt) 部編版語(yǔ)文七年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論