Actionscript-教程3.0完全自學
《Actionscript-教程3.0完全自學》由會員分享,可在線閱讀,更多相關《Actionscript-教程3.0完全自學(498頁珍藏版)》請在裝配圖網上搜索。
1、,單擊此處編輯母版標題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,第,1,章,AcionScript 3.0,概述,ActionScript 3.0是針對Flash Player運行時環境的編程語言,它用于處理各種人機交互、數據交互等功能。本章將粗略的介紹ActionScript語言的進展歷史、新增特色、編程環境等內容,以及第一個ActionScript3.0程序。,1.1,關于,ActionScript 3.0,ActionScript3.0是隨著Adobe Flash CS3和Flex 2.0的推出而同步推出的腳本編程語言。本節將對ActionScr
2、ipt3.0進展簡要的介紹,并通過一些具體的實例圖片,呈現了常見的ActionScript的應用領域。,1.1.1 ActionScript 3.0,介紹,ActionScript3.0與ActionScript以前的版本有個本質上的不同。它是一門功能強大、符合業界標準的一門面對對象的編程語言。它在Flash編程語言中有著里程碑的作用,是用來開發富應用程序〔RIA〕的重要語言。,,ActionScript 3.0在用于腳本撰寫的國際標準化編程語言ECMAScript的根底之上,對該語言做了進一步的改進,可為開發人員供給用于豐富Internet應用程序〔RIA〕的牢靠的編程模型。開發人員可以獲
3、得卓越的性能并簡化開發過程,便于利用特殊簡潔的應用程序、大的數據集和面對對象的、可重復使用的根本代碼。ActionScript 3.0在Flash Player 9中新的ActionScript虛擬機〔AVM2〕內執行,可為下一代RIA帶來性能突破。,1.1.2 ActionScript 3.0,能做什么,最初在Flash中引入ActionScript,目的是為了實現對Flash影片的播放把握。而ActionScript進展到今日,其已經廣泛的應用到了多個領域,能夠實現豐富的應用功能。,,ActionScript 3.0最根本的應用與創作工具Adobe Flash CS3結合,創立各種不同的
4、應用特效,實現豐富多彩的動畫效果,使Flash創立的動畫更加人性話,更具有彈性效果。這些根底應用當中,應用最為廣泛的就是使用ActionScript腳本把握的彈性菜單。下面是一個彈性的效果,,1.2 ActionScript 3.0,的新特色,ActionScript 3.0包括二局部:核心語言和Flash Player API。核心語言用于定義編程語言的根本構造, 比方聲明變量,創立表達式把握程序構造和數據類型等。Flash Player API是由一系列用于實現特定功能的flash player類組成。,1.2.1,核心語言的新特色,ActionScript3.0核心語言與ECMAScr
5、ipt標準兼容,并和新改進的一些功能區域進展結合。下面是對一些其開發者便利的地方和用法總結的一些新特點:,,1.運行時的特殊處理機制,,2.運行時類型,,3.密封類,,4.閉包方法,,5.E4X,,6.正則表達式,,7.命名空間,,8.新基元類型,1.2.1 Flash Player API,新功能,Flash Player API為增加Flash Player容納ActionScript語言的力氣而引入的一組類和功能。這種功能把ActionScript核心語言和Flash平臺之間建立了一座橋梁,大大提高了Flash應用程序的力氣,并對核心語言起到了重要的補充作用。下面列出一些Flash P
6、layer API功能的新特點:,,1.DOM3大事模型,,2.顯示列表API,1.3 Flash CS3,的動作面板介紹,Flash CS3中可以使用動作面板、“腳本窗口”或者外部編輯器的創作環境中田間ActionScript代碼。本節就來介紹一下Flash CS3的動作面板窗口和Flash CS自帶的編輯器窗口,并將具體的介紹功能按鈕的作用。,1.3.1,動作面板概述,假設要在Flash CS3中參與ActionScript代碼,可以直接使用動作面板來輸入。,,要翻開動作面板,請執行下面的操作:單擊【窗口|【動作】,或者按【F9】。,,翻開后的動作面板如以以下圖。,,下面對圖中各局部的名
7、稱及作用加以說明。,,A:腳本窗格,用于輸入代碼的地方。,,B:面板菜單,單擊后可顯示動作面板功能菜單,,C:動作工具箱,可以通過雙擊或者拖動的方式將其中的ActionScript元素添加到腳本窗格中。,,D:腳本導航器,其有兩個功能,一是通過單擊其中的工程,可以將與該工程相關的代碼顯示在腳本窗口中,二是通過雙擊其中的工程,對該工程的代碼進展固定操作。,1.3.2,腳本窗口概述,Action Script 3.0是很好的面對對象編程語言,同樣Flash CS3也供給了一個很不錯的腳本編輯器,這就是Flash的腳本窗口。使用腳本窗口可以創立或者導入外部的腳本文件,這些文件可以是ActionScr
8、ipt、Flash Communication或Flash JavaScript文件。,1.3.3,動作面板和腳本窗口的工具介紹,在動作面板和腳本窗口的上側都有一排功能按鈕,利用這些功能按鈕可以很方面的進展ActionScript代碼的輸入和編寫,下面對這些按鈕進展具體的說明。,,:將新工程添加到腳本中按鈕,該按鈕主要用于顯示語言元素,這些元素同時也會顯示在“動作”工具箱中??梢岳盟鼇磉x擇要添加到腳本中的工程或者元素名稱。,,:查找按鈕,主要用于查找并替換腳本中的文本。,,:插入目標路徑按鈕〔僅限動作面板〕,可以幫助為腳本中的某個動作設置確定或相對目標路徑。,,:語法檢查按鈕,用于檢查當前腳
9、本中的語法錯誤。,,:自動套用格式按鈕,用來調整腳本的格式以實現正確的編碼語法和更好的可讀性。,,:顯示代碼提示按鈕:用于在關閉了自動代碼提示時,可使用此按鈕來顯示正在吃力的代碼行的代碼提示。,,:調試選項按鈕〔僅限動作面板〕,用于設置和刪除斷點,以便在調試時可以逐行執行腳本中的每一行。,1.3.3,動作面板和腳本窗口的工具介紹,:折疊成對大括號按鈕,用于對消逝在當前包含插入點的成對大括號或小括號間的代碼進展折疊。,,:折疊所選按鈕:用于折疊當前所選的代碼塊。,,:開放全部按鈕:用于開放當前腳本中全部折疊的代碼。,,:應用塊注釋按鈕,用于將注釋標記添加到所選代碼塊的開頭和結尾。,,:應用行注釋
10、按鈕,用于在插入點處或所選多行代碼中每一行的開頭處添加單行注釋標記。,,:刪除注釋按鈕,用于從當前行或當前選擇內容的全部行中刪除注釋標記。,,:顯示/隱蔽工具箱按鈕,用于顯示或隱蔽“動作”工具箱。,,:腳本助手按鈕〔僅限動作面板〕,其用于翻開和關閉“腳本助手”模式。,,:幫助按鈕,用于顯示“腳本”窗格中所選 ActionScript 元素的參考信息。,,:面板菜單 〔僅限動作面板〕,包含適用于動作面板的命令和首選參數。,,,1.4 ActionScript 3.0,的首選參數設置,無論是在動作面板還是腳本窗口中編輯ActionScript代碼,都可以通過設置首先參數來配置輸入的ActionS
11、cript代碼的格式。,,要設置ActionScript 3.0的首選參數,需要先翻開首選參數窗口。請執行下面的操作:選擇【編輯】|【首選參數】,翻開首選參數對話框,,,1. 工具提示樣式的代碼提示,,2.使用菜單樣式的代碼提示,1.5 面對對象編程概述,ActionScript 3.0是為面對對象編程而預備的一種腳本語言。本節將簡潔介紹一下面對對象編程的根本概念。,,面對對象編程,英文為:Object Oriented Programming,簡寫為OOP,意思為面對對象程序設計,它是一種計算機編程架構。,,程序〔program〕是為實現特定目標或者解決特定問題而用計算機語言編寫的命令序列
12、的集合。它可以是一些高級程序語言開發出來的可以運行的可執行文件,也可以是一些應用軟件制作出的可執行文件,比方Flash編譯之后的SWF文件。,,編程是指為了實現某種目的或需求,使用各種不同的程序語言進展設計,編寫能夠實現這些需求的可執行文件。,1.6 Flash CS3,的第一個“,Welcome You”,Flash CS3中有兩種寫入ActionScript 3.0代碼的方法:,,一種是在時間軸的關鍵幀參與ActionScript代碼。,,另一種是在外部寫出呢個單獨的ActionScript類文件,然后在綁定或者導入到fla文件中來。,,ActionScript中的類有三種用法:一是和F
13、lash中的庫元件進展綁定;二是和fla文件綁定;三是使用import關鍵字導入類。,,ActionScript3.0開發的程序,推舉文檔與代碼分別,不推舉把代碼寫在關鍵幀上。下面用兩種方法來開頭第一個“Welcome You”程序。,,1.在關鍵幀上參與代碼,,2.利用文檔類制造第一個“Welcome You”程序,第2章 AS3.0編程語言根底,語法、數據、變量、運算符和語句構成了編程語言的根底。本章將通過大量的測試代碼。具體的介紹ActionScript 3.0中的語法、數據類型,變量以及運算符。通過本章的學習,為以后的面對對象編程將打下一個堅實的根底。,2.1 AS3.0,語法,任
14、何一門編程語言在編寫代碼時都必需遵循確定的規章,這個規章就是語法。本節將著重介紹從ActionScript 2.0開頭使用的點語法和區分大小寫,了解編程常用的標點符號的使用,以及程序注釋的使用方法。,2.1.1,點語法,Flash中使用點〔.〕運算符來訪問對象的屬性和方法,點運算符主要用于下面的幾個方面。,,1.可以承受對象后面跟點運算符的屬性名稱〔方法〕名稱來引用對象的屬性〔方法〕。,,2.可以承受點運算符表示包路徑。,,3.可以使用點運算符描述顯示對象的路徑。,2.1.2,標點符號使用,在Flash中有多種標點符號都很常用,分別為:分號〔;〕、逗號〔,〕、冒號〔:〕、小括號〔〕、中括號〔[
15、]〕和大括號〔{}〕。這些標點符號在Flash中都有各自不同的作用,可以幫助定義數據類型,終止語句或者構建ActionScript代碼塊。,,1.分號〔;〕:ActionScript語句用分號(;)字符表示語句完畢。,,2.逗號〔,〕:逗號的作用主要用于分割參數,比方函數的參數,方法的參數等等。,,3.冒號〔:〕:冒號的作用主要用于為變量指定數據類型。要為一個變量指明數據類型,需要使用var關鍵字和后冒號法為其指定。,,4.小括號〔〕:小括號在ActionScript3.0中有三種用途。,,首先,在數學運算方面,可以用來轉變表達式的運算挨次。小括號內的數學表達式優先運算。,,其次,在表達式運算
16、方面,可以結合使用小括號和逗號運算符,來優先計算一系列表達式的結果并返回最終一個表達式的結果。,,5.中括號〔[]〕:中括號主要用于數組的定義和訪問,,,6.大括號〔{}〕:大括號主要用于編程語言程序把握,函數和類中。,,在構成把握構造的每個語句前后添加大括號〔例如if..else 或for〕,即使該把握構造只包含一個語句。,2.1.3,注釋,注釋是使用一些簡潔易懂的語言對代碼進展簡潔的解釋的方法。注釋語句在編譯過程中并不會進展求值運算。可以用注釋來描述代碼的作用,或者返回到文檔中的數據。注釋也可以幫助記憶編程的原理,并有助于其他人的閱讀。假設代碼中有些內容閱讀起來含義大不明顯,應當對其添加注
17、釋。,,ActionScript3.0中的注釋語句有兩種:單行注釋和多行注釋。,,單行注釋以兩個單斜杠〔//〕開頭,之后的該行內容均為注釋。比方下面的代碼:,,trace(“1234“)//輸出:1234,2.1.4 關鍵字和保存字,保存字,從字面上就很簡潔知道這是保存給ActionScript 3.0語言使用的英文單詞。因而不能使用這些單詞作為變量、實例、類名稱等。假設在代碼中使用了這些單詞,編譯器會報錯。,,ActionScript3.0中的保存字分為3類:詞匯關鍵字、語法關鍵字和供將來使用的保存字。,,1.詞匯關鍵字,,2.句法關鍵字,,3.供將來使用的保存字。,2.2,變量和常量,變
18、量和常量,都是為了儲存數據而創立的。變量和常量就像是一個容器,用于容納各種不同類型的數據。固然對變量進展操作,變量的數據就會發生轉變,而常量則不會。,,變量必需要先聲明后使用,否則編譯器就會報錯。道理很簡潔,比方現在要去喝水,那么你首先要有一個杯子,否則怎么樣去裝水呢?要聲明變量的緣由與此一樣。,2.2.1,聲明變量的語法,在ActionScript 3.0中,使用var關鍵字來聲明變量。格式如下所示。,,var 變量名:數據類型;,,var 變量名:數據類型=值;,,變量名加冒號加數據類型就是聲明的變量的根本格式。要聲明一個初始值,需要加上一個等號并在其后輸入響應的值。但值的類型必需要和前面
19、的數據類型全都。,2.2.2 變量的命名規章,變量的命名既是任意的,又是有規章,有目的的。順手牽來、雜亂無章的命名在Flash里面簡潔引起代碼的混亂,也不簡潔進展維護操作。,,變量的命名首先要遵循下面的幾條原則:,,它必需是一個標識符。它的第一個字符必需是字母、下劃線〔_〕或美元記號〔$〕。其后的字符必需是字母、數字、下劃線或美元記號。留意:不能使用數字作為變量名稱的第一個字母。,,它不能是關鍵字或動作腳本文本,例如true、false、null或undefined。特殊不能使用ActionScript的保存字,否則編譯器會報錯。,,它在其范圍內必需是惟一的,不能重復定義變量。,2.2.3,
20、變量的作用域,變量的作用域指可以使用或者引用該變量的范圍,通常變量依據其作用域的不同可以分為全局變量和局部變量。全局變量指在函數或者類之外定義的變量,而在類或者函數之內定義的變量為局部變量。,,全局變量在代碼的任何地方都可以訪問,所以在函數之外聲明的變量同樣可以訪問,如下面的代碼,函數Test外聲明的變量i在函數體內同樣可以訪問。,,var i:int=1;,,//定義Test函數,,function Test {,,trace(i);,,},,Test//輸出:1,2.2.4,變量的默認值,變量的默認值是指變量在沒有賦值之前的值。對于,ActionScript3.0,的數據類型來說,都有各自
21、的默認值,下面使用代碼來測試一下:,,通過上面的代碼輸出,已經可以得到這些數據類型變量的默認值,分別為:,,Boolean,型變量的默認值是:,false,。,,int,型變量的默認值是:,0,。,,Number,型變量的默認值是:,NaN,。,,Object,型變量的默認值是:,null,。,,String,型變量的默認值是:,null,。,,uint,型變量的默認值是:,0,。,,*型變量的默認值是:,undefined,。,2.2.5,使用,const,聲明常量,Action Script 3.0中增加了一個const關鍵字,用于聲明常量。常量是指具有無法轉變的固定值的屬性。比方Math
22、.PI就是一個常量。常量可以看做一種特殊的變量,不過這種變量不能賦值,不能更改而已。,,使用用const聲明常量的語法格式和var聲明的變量的格式一樣:,,const 常量名:數據類型;,,const 常量名:數據類型=值;,,下面聲明常量的代碼:,,const g:Number=9.8;,2.3 根底數據類型,和其它的面對對象的編程的數據類型一樣,ActionScript3.0的數據類型同樣分為兩種,具體劃分方式如下所示。,,基元型數據類型:Boolean、int、Number、String和uint。,,簡潔型數據類型:Array、Date、Error、Function、RegExp、X
23、ML和XMLList。,,一般來說,基元值的處理速度通常比簡潔值的處理速度要快。,,基元型數據和簡潔型數據類型的最大的區分是:基元型是值對類型數據,而簡潔型是引用類型數據。值對類型直接儲存數據,使用它為另一個的變量賦值之后,假設另一個變量轉變,并不影響原變量的值。引用類型指向要操作的對象,另一個變量引用這個變量之后,假設另一變量發生轉變,原有的變量跟著也要發生轉變。,,基元型數據類型都是值對類型數據,簡潔型數據都是引用類型數據。,,另外,最明顯的一個區分是,假設數據類型能夠使用new關鍵字創立,那么它確定是引用型數據變量。,2.3.1 根底數據類型說明,本節通過大量的測試代碼,來說明各種不同
24、的數據類型的用法和使用中的留意事項。,,1.Boolean 數據類型,,2.數字:int、uint和Number,,3.String 數據類型,,4.Array數組類型,,5.Object數據類型,,6.Object數據類型,2.3.2,數據類型檢查,任何編程代碼在執行前或者執行時都要執行數據類型的檢查,以避開消逝數據錯誤。ActionScript 3.0是動態類型的語言,它默認的是執行時進展數據類型檢查。同時它也在適合使用“嚴格模式”的編譯器在編譯時執行數據類型檢查。在使用嚴格模式的編譯器中,數據類型檢查既可以在執行前執行編譯器檢查,也可以在運行時執行運行時檢查。在標準模式下,只支持默認的執
25、行時數據類型檢查。,,比方說在程序編寫過程中,要明確傳遞變量值的類型和承受參數類型一樣。比方下面的代碼:,,function func(mystr:String) {,,trace(mystr);,,},,var str:String=“welcome you“;,,func(str);,2.3.3,隱式數據類型轉換,數據類型轉換是指把某個值轉換為其它類型的數據。類型的轉換有兩種方式:隱式轉換和顯式轉換。隱式轉換又稱為強制轉換,由Flash Player在運行時執行。比方將2賦值給Boolean數據類型的變量,則Flash Player會先將2轉換為布爾值true,然后再將其賦值給該變量。,,
26、隱式轉換可以稱為自動轉換,是在程序編譯的過程中由程序本身來進展數據類型的轉換。它主要發生在很多上下文中。主要分為以下幾種狀況:,,在賦值語句中。,,在將值作為函數的參數傳遞時。,,在從函數中返回值時。,,在使用某些運算符〔如加法運算符〔+〕〕的表達式中。,2.3.4,顯式數據類型轉換,顯式轉換是指代碼假設指示編譯器將一個數據類型的變量視為屬于另一個類型的變量時執行該轉換。該轉換主要利用數據類型的對象名稱來轉換。常用的數據轉換均為此方式。,,顯示轉換是利用數據類型的對象名稱來轉換,常見的主要有下面的幾種。,,1.轉換為 int、uint 和 Number,,2.轉換為Boolean,,3.轉換為
27、 String,2.3.5,無類型說明符,ActionScript 3.0引入了三種特殊類型的無類型說明符:*,void和null。,,使用*類型用于指定屬性是無類型的。使用*作為類型注釋與不使用類型注釋等效。從無類型屬性中讀取的表達式可視為無類型表達式。該說明符主要用于兩個方面:將數據類型檢查延緩到運行時和將undefined存儲在屬性中。,,void用于說明定函數無法返回任何值。void類型只有一個值:undefined。該說明符僅用于聲明函數的返回類型。,,null是一個沒有值的特殊數據類型。Null數據類型只有一個值:null。Null數據類型的不與任何類相關聯。不行將Null數據類型
28、用作屬性的類型注釋。,2.4,運算符與表達式,學習一門編程語言,首先要弄清晰的就是如何對其中的數據進展運算。使用表達式來表達想要到達的效果,使用運算符來進展相關的運算,這就是數據運算的關鍵。本節主要介紹常用的運算符的用法。,2.4.1 運算符和表達式根底學問,運算符是可以通過給出的一個或者多個值來產生另一個值的東西??梢哉f它是一種特殊的函數。其中的值稱為“操作數”,具體包括字面值、變量和表達式。,,運算符分為三種:一元運算符、二元運算符、三元運算符。一元運算符只運算一個值,例如遞增運算符++;二元運算符比較常見,ActionScript 3.0中大局部運算符都是二元運算符;三元運算符具有三個
29、操作數,例如條件運算符〔?:〕具有3個操作數。,2.4.2,賦值運算符,賦值運算符有兩個操作數,它依據一個操作數的值對另一個操作數進展賦值操作。ActionScript中的賦值運算有12個,,,賦值運算符,運算符,執行的運算,=,賦值,*=,乘法賦值,/=,除法賦值,%=,求模賦值,+=,加法賦值,-=,減法賦值,<<=,按位向左移位賦值,>>=,按位向右移位賦值,>>>=,按位無符號向右移位賦值,&=,按位,",與,",賦值,^=,按位,",異或,",賦值,|=,按位,",或,",賦值,2.4.3,算術運算符,算術運算符共有6個,分別為:加、減、乘、除、模運算和求反運算。,,加、減、乘、除的
30、運算很簡潔,請看下面的代碼例如:,,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,算術賦值運算符,算術賦值運算符和算術運算符對應,共有5個,分別為+=、-=、*=、/=和%=。和賦值運算符一樣,運算符的左邊只能是變量。右側是一個要值、變量或表達式。,,這種類型的賦值運算符有時也叫做自賦值運算符,就是利用自己進展運算并賦值給自己。比方下面的代碼語句:,,a+=1;,,其要表達的運算過程就是下面的的代碼要執行的運算過程。,,a=a+1;,2.4.5,關
31、系運算符,關系運算符用于比較兩個操作數的值的大小關系。常見的關系運算符一般分為兩類:一類用于推斷大小關系,一類用于推斷相等關系。其具體狀況如下:,,推斷大小關系:>大于運算符、=大于等于運算符、<=小于等于運算符。,,推斷相等關系:==等于運算符、!=不等于運算符、===嚴格等于運算符、!==嚴格不等于運算符。,,關系運算符左右兩側可以是數值、變量或者表達式。關系表達式的結果是Boolean值,flase或者true。,,1.推斷大小關系的運算符,,2.推斷相等關系的運算符:,2.4.6 規律運算符,規律運算符有3個,分別為:&&規律“與”運算符、||規律“或”運算符和!規律“非”運算符。規
32、律運算符常用于規律運算,運算的結果為Boolean型。,,規律與〔&&〕和規律或〔||〕運算表達式要求左右兩側的表達式或者變量必需是Boolean型的值。,,&&:左右兩側有一個為flase,結果都為flase;只有兩側都為true,結果才為true。,,||:左右兩側有一個為true,結果都為true;只有兩側都為false,結果才為false。,2.4.7,按位和按位賦值運算符,按位運算符共有6個,分別為:&按位“與”、^按位“異或”、|按位“或”、>按位右移位、>>>按位無符號移位。同樣,按位賦值運算符也有6個,比照按位運算符分別為:&=按位“與”賦值、^=按位“異或”賦值、|=按位“或
33、”賦值、>=按位右移位賦值、>>>=按位無符號移位賦值。,,按位操作需要把十進制的整數,轉換為二進制的數,然后進展操作。,,按位與操作過程:按位與操作的規章為:1+1=1,1+0=0,0+1=0,0+0=0。比方11&34,11轉二進制數為001011,34轉二進制數為100010?,F在依據位置從右向左第一位分別為1和0,所以取與后仍為0,依次取與的最終結果為000010。000010轉為十進制數為2,所以最終的輸出結果為2。代碼如下所示。,,var a:int=11;,,var b:int=34;,,trace(a//輸出為:2,2.4.8,遞加遞減運算符,++遞加運算符和—遞減運算符常用于
34、循環計算過程中,對循環中的變量進展遞加或者遞減操作。比方i++,它等價于i=i+1。測試代碼如下:,,var i:int=0,,i++,,trace(i)//輸出:1,,同樣,i—等價于i=i-1。測試代碼如下:,,var i:int=5;,,i--;,,trace(i);//輸出:4,2.4.9,三元條件運算符,?:運算符是唯一的一個三元運算符,也就是說,這個運算符有三個操作數。具體的語法格式如下:,,(條件表達式)?〔表達式1〕:(表達式2),,格式說明如下:,,條件表達式:推斷表達式,通過規律推斷,得到一個Boolean型的結果。,,表達式1:推斷表達式的結果為true,執行該語句。,,
35、表達式2:推斷表達式的結果為false,執行該語句。,2.4.10,其它運算符,在ActionScript3.0中還有幾個常見的運算符,如:typeof、is、as。下面對這幾個運算符進展簡潔的說明:,,1.typeof運算符:typeof用于測試對象的的類型,使用的方法如下:,,typeof(對象);,,2.is運算符:is運算符用于推斷一個對象是不是屬于一種數據類型,返回Boolean型變量。假設對象屬于同一類型,則返回true,否則返回false。,,3.as運算符:as運算符和is運算符的使用格式一樣,但是返回的值不同。假設對象的類型一樣,返回對象的值;假設不同,則返回null。,2.
36、4.11,運算符的優先級,運算符的優先級挨次預備了一個表達式運算挨次。就像數學中的乘除運算要優于加減運算一樣,ActionScript 3.0 中的各運算符之間也有一個優先運算的挨次。具體請參照表所示。,運算符優先挨次表,組,運算符,主要,[] {x:y} () f(x) new x.y x[y] @ :: ..,后綴,x++ x--,一元,++x --x + - ~ ! delete typeof void,乘法,* / %,加法,+ -,按位移位,> >>>,關系, = as in instanceof is,等于,== != === !==,按位,",與,",&,按位,",異或,",^
37、,按位,",或,",|,邏輯,",與,",&&,邏輯,",或,",||,條件,?:,賦值,= *= /= %= += -= >= >>>= &= ^= |=,逗號,,,第,3,章,AS3.0,程序設計,任何一門編程語言都要設計程序問題,ActionScript 3.0也不例外。在本章中,將介紹ActionScript3.0系統的根本語句以及程序設計的一般過程。首先介紹一下程序把握的規律運算,然后著重介紹條件語句和循環語句。,3.1 規律運算,在程序設計的過程中,要實現程序設計的目的,必需進展規律運算。只有進展規律運算,才能把握程序不斷向最終要到達的目的前進,知道最終實現目標。,,規律運算又稱
38、為布爾運算,通常用來測試真假值。規律運算主要使用條件表達式進展推斷,假設符合條件,則返回結果true,不符合條件,返回結果false。,,條件表達式中最常見的形式就是利 用關系運算符進展操作數比較,進而得到推斷條件。,,固然,有的狀況下需要把握的條件比較多,那么就需要使用規律表達式進展規律運算,得到一個的組合條件,并把握最終的輸出結果。,,常見的條件表達式舉例如下:,,〔a>0〕:表示推斷條件為a>0。假設是,返回true;否則返回false。,,〔a==b〕&&〔a>0〕:表示推斷條件為a大于0,并且a與b相等。假設是,返回true,否則返回false。,,〔a==b〕||〔a>0〕:表示推
39、斷條件為a大于0,或者a與b相等。假設是,返回true,否則返回false。,3.2 程序的三種構造,在程序設計的過程中,假設把握程序,如何安排每句代碼執行的先后次序,這個先后執行的次序,稱之為“構造”。常見的程序構造有三種:挨次構造、選擇構造和循環構造。本節將逐個介紹一下這三種程序構造的概念和流程。,3.2.1 挨次構造,挨次構造最簡潔,就是依據代碼的挨次,一句一句的執行操作,構造如圖3-1所示。,,ActionScript代碼中的簡潔語句都是依據挨次進展處理,這就是挨次構造。請看下面的例如代碼。,,//執行的第一句代碼,初始化一個變量,,var a:int;,,//執行其次句代碼,給變
40、量a賦值數值1,,a=1;,,//執行第三句代碼,變量a執行遞加操作,,a++;,3.2.2 選擇構造,當程序有多種可能的選擇時,就要使用選擇構造。選擇那一個,要依據條件表達式的計算結果而定。構造如以以下圖。,3.2.3 循環構造,循環構造就是屢次執行同一組代碼,重復的次數由一個數值或條件來預備。構造如以以下圖。,3.3 選擇程序構造,選擇程序構造就是利用不同的條件去執行不同的語句或者代碼。ActionScript 3.0有三個可用來把握程序流的根本條件語句。其分別為if..else條件語句、if..else if條件語句、switch條件語句。本節將具體講解這三種不同的選擇程序構造。,
41、3.3.1 if..else,條件語句,if..else條件語句推斷一個把握條件,假設該條件能夠成立,則執行一個代碼塊,否則執行另一個代碼塊。,,if..else條件語句根本格式如下:,,if(表達式){,,語句1,,},,else,,{,,語句2;,,},3.3.2 if..else if..else,語句,if..else,條件語句執行的操作最多只有兩種選擇,要是有更多的選擇,那就可以使用,if..else if..else,條件語句。,3.3.3 Switch,語句,Switch語句相等于一系列的if..else if..語句,但是要比if語句要清晰的多。switch 語句不是對條
42、件進展測試以獲得布爾值,而是對表達式進展求值并使用計算結果來確定要執行的代碼塊。,,Switch語句格式如下:,,switch (表達式) {,,case:,,程序語句1;,,break;,,case:,,程序語句2;,,break;,,case:,,程序語句3;,,break;,,default:,,默認執行程序語句;,,},3.4 循環程序構造,在現實生活中有很多規律性的操作,作為程序來說就是要重復執行某些代碼。其中重復執行的代碼稱為循環體,能否重復操作,取決于循環的把握條件。循環語句可以認為是由循環體和把握條件兩局部組成。,,循環程序構造的構造一般認為有兩種:,,一種先進展條件推斷,假
43、設條件成立,執行循環體代碼,執行完之后再進展條件推斷,條件成立連續,否則退出循環。假設第一次條件就不滿足,則一次也不執行,直接退出。,,另一種是先執行依次操作,不管條件,執行完成之后進展條件推斷,假設條件成立,循環連續,否則退出循環。,3.4.1 for,循環語句,for循環語句是ActionScript編程語言中最靈敏、應用最為廣泛的語句。for循環語句語法格式如下:,,for(初始化;循環條件;步進語句) {,,循環執行的語句;,,},,格式說明如下:,,初始化:把程序循環體中需要使用的變量進展初始化。留意要使用var關鍵字來定義變量,否則編譯時會報錯。,,循環條件:規律運算表達式,運算
44、的結果預備循環的進程。假設為flase,退出循環,否則連續執行循環代碼。,,步進語句:算術表達式,用于轉變循環變量的值。通常為使用++〔遞增〕或--〔遞減〕運算符的賦值表達式。,,循環執行的語句:循環體,通過不斷轉變變量的值,已到達需要實現的目標。,3.4.2 while,循環語句,while循環語句是典型的“當型循環”語句,意思是當滿足條件時,執行循環體的內容。while循環語句語法格式如下:,,while(循環條件) {,,循環執行的語句,,},,格式說明如下:,,循環條件:規律運算表達式,運算的結果預備循環的進程。假設為true,連續執行循環代碼,否則退出循環。,,循環執行的語句:循環
45、體,其中包括變量轉變賦值表達式,執行語句并實現變量賦值。,3.4.3 do..while,循環語句,do…while循環是另一一種while循環,它保證至少執行一次循環代碼,這是由于其是在執行代碼塊后才會檢查循環條件。do…while循環語句語法格式如下:,,do {,,循環執行的語句,,} while (循環條件),,循環執行的語句:循環體,其中包括變量轉變賦值表達式,執行語句并實現變量賦值。,,循環條件:規律運算表達式,運算的結果預備循環的進程。假設為true,連續執行循環代碼,否則退出循環。,3.4.4 for..in,和,for each..in,語句,for..in和for ea
46、ch..in語句都可以用于循環訪問對象屬性或數組元素。下面分別使用兩種語句來訪問對象中的屬性。代碼如下所示。,,//定義一個對象lzxt,并添加屬性name和age,,var lzxt:Object = {name:“浪子嘯天“, age:30};,,//執行遍歷操作,,for (var i:String in lzxt) {,,//輸出屬性名稱和屬性值,,trace(“for in 語句輸出:“+i + “: “ + lzxt[i]);,,},,//執行for each遍歷操作,,for each (var k:String in lzxt) {,,//輸出屬性值,,trace(“for e
47、ach 語句輸出:“+k);,,},3.4.5,循環的嵌套,嵌套循環語句,就是在一個循環的循環體中存在另一個循環體,如此重復下去直到循環完畢為止,即為循環中的循環。以for循環為例,格式如下所示。,,for (初始化; 循環條件; 步進語句) {,,for (初始化; 循環條件; 步進語句) {,,循環執行的語句;,,},,},3.4.6 循環流程把握語句,在ActionScript 3.0中可以使用break和continue來把握循環流程。break語句的結果是直接跳出循環,不再執行后面的語句;continue語句的結果是停頓當前這一輪的循環,直接跳到下一輪的循環,而當前輪次中conti
48、nue后面的語句也不再執行。,,下面的兩個例子分別執行循環變量從0遞增到10的過程,假設i等于4,分別執行break和continue語句,看發生的狀況。代碼如下所示。,,//使用break把握循環,,for (var i:int=0; i<10; i++) {,,if (i==3) {,,break;,,},,trace(“當前數字是:“+i);,,},第,4,章 函數,函數在程序設計的過程中,是一個革命性的創新。利用函數編程,可以避開冗長、雜亂的代碼;利用函數編程,可以重復利用代碼,提高程序效率;利用函數編程,可以便利的修改程序,提高編程效率。,,函數(Function)的準確的定義為:
49、執行特定任務,并可以在程序中重用的代碼塊。ActionScript 3.0中有兩類函數:“方法”和“函數閉包”。具體是將函數稱為方法還是函數閉包,取決于定義函數的上下文。,4.1,定義函數,在ActionScript 3.0中有兩種定義函數的方法:一種是常用的函數語句定義法;一種是ActionScript中獨有的函數表達式定義法。具體使用哪一種方法來定義,要依據編程習慣來選擇。一般的編程人員使用函數語句定義法,對于有特殊需求的編程人員,則使用函數表達式定義法。,4.1.1,函數語句定義法,函數語句定義法是程序語言中根本類似的定義方法,使用function關鍵字來定義,其格式如下所示。,,fun
50、ction 函數名(參數1:參數類型,參數2:參數類型…):返回類型{,,//函數體,,},,代碼格式說明:,,function:定義函數使用的關鍵字。留意function關鍵字要以小寫字母開頭。,,函數名:定義函數的名稱。函數名要符合變量命名的規章,最好給函數取一個與其功能全都的名字。,,小括號:定義函數的必需的格式,小括號內的參數和參數類型都可選。,,返回類型:定義函數的返回類型,也是可選的,要設置返回類型,冒號和返回類型必需成對消逝,而且返回類型必需是存在的類型。,,大括號:定義函數的必需格式,需要成對消逝。括起來的是函數定義的程序內容,是調用函數時執行的代碼。,4.1.2,函數表達式定
51、義法,函數表達式定義法有時也稱為函數字面值或匿名函數。這是一種較為繁雜的方法,在早期的ActionScript版本中廣為使用。其格式如下所示。,,var 函數名:Function=function(參數1:參數類型,參數2:參數類型…):返回類型{,,//函數體,,},,代碼格式說明:,,var:定義函數名的關鍵字,var關鍵字要以小寫字母開頭。,,函數名:定義的函數名稱。,,Function:指示定義數據類型是Function類。留意Function為數據類型,需大寫字母開頭。,,=:賦值運算符,把匿名函數賦值給定義的函數名。,,function:定義函數的關鍵字,指明定義的是函數,,小括號
52、:定義函數的必需的格式,小括號內的參數和參數類型都可選。,,返回類型:定義函數的返回類型,可選參數。,,大括號:其中為函數要執行的代碼。,4.1.3 兩種定義方法的區分和選擇,原則上,推舉使用使用函數語句定義法。由于這種方法更加簡潔,更有助于保持嚴格模式和標準模式的全都性的。,,下面要講解的是函數語句和函數表達式定義法之間存在的區分,具體內容如下所示。,,1.兩種方法區分,,2.兩種方法的選擇,,在兩種定義方法的選擇上,一般使用函數語句定義法。函數表達式定義函數主要用于:一是適合關注運行時行為或動態行為的編程,二是用于那些使用一次后便丟棄的函數或者向原型屬性附加的函數。函數表達式更多地用在動
53、態編程或標準模式編程中。,4.2,調用函數,函數只是一個編好的程序塊,在沒有被調用之前,什么也不會發生。只有通過調用函數,函數的功能才能夠實現,才能表達出函數的高效率。通過本節的學習,讀者將把握一般的函數調用方法以及嵌套和遞歸調用函數的方法。,4.2.1,函數的一般調用,對于沒有參數的函數,可以直接使用該函數的名字,并后跟一個圓括號(它被稱為“函數調用運算符”)來調用。,,下面定義一個不帶參數的函數HelloAS,并在定義之后直接調用,其代碼如下。,,function HelloAS {,,trace(“AS3.0世界歡送你!“);,,},,HelloAS;,,代碼運行后的輸出結果,如下所示。
54、,,/輸出:AS3.0世界歡送你!,4.2.2,嵌套和遞歸調用函數,嵌套和遞歸調用是兩種類似函數調用方式,其本質都是在調用函數時用一個函數就調用另一個函數。不同的是,嵌套調用是用一個函數去調用另一個函數,而遞歸調用是函數調用自身函數。,,1,.嵌套調用函數,,2,.遞歸調用函數,4.3,函數的返回值,主調函數通過函數的調用得到一個確定的值,此值被稱為函數的返回值。利用函數的返回值,可以通過函數進展數據的處理、分析和轉換,并能最終獵取想要獲得的結果。在本節我們主要學習函數返回值的獵取方法和獵取過程中的留意事項。,4.3.1 return,語句,AS從函數中獵取返回值,使用return語句來實現
55、,語法格式如下:,,return 返回值,,return:函數返回值的關鍵字,必需的。,,返回值:函數中返回的數據,既可以是字符串、數值等,也可以是對象,如數組、影片簡介等。,,下面定義一個求圓形面積的函數,并返回圓面積的值,其代碼如下:,,function 圓面積(r:Number):Number{,,var s:Number=Math.PI*r*r,,return s,,},,trace(圓面積(5)),4.3.2,返回值類型,函數的返回類型在函數的定義中屬于可選參數,假設沒有選擇,那么返回值的類型由return語句中返回值的數據類型來預備。,,下面的代碼,return語句返回一個字符型數
56、據,來驗證一下返回值的類型。,,function 類型測試 {,,var a:String=“這是一個字符串“;,,return a;,,},,trace(typeof(類型測試));,,代碼運行后的輸出結果,如下所示。,,string,4.4,函數的參數,函數通過參數向函數體傳遞數據和信息。ActionScript 3.0對函數的參數增加了一些新功能,同時也增加了一些限制。有大多數程序員都生疏的按值或按引用傳遞參數這一概念,也有對很多人很生疏的arguments對象和...(rest)參數。,4.4.1,傳遞參數的語法,函數中傳遞的參數都位于函數格式的括號中,語法格式如下:,,(參數1:參數
57、類型=默認值,參數2:參數類型=默認值),,下面定義一個共性化的歡送語句,對不同的姓名給出對應的問候。代碼如下所示。,,function Welcome(username:String):void {,,trace(“歡送你!“+username);,,},,Welcome(“張三“);,,Welcome(“小明“);,,代碼運行后的輸出結果,如下所示。,,歡送你!張三,,歡送你!小明,4.4.2,傳遞參數的的兩種方法,很多編程語言中,參數的傳遞根本都是兩種類型:按值或者按引用傳遞。按值傳遞意味著將參數的值復制到局部變量中以便在函數內使用。按引用傳遞意味著將只傳遞對參數的引用,而不傳遞實際值。
58、要了解任何一門編程語言中的函數,首先必需搞清晰的問題就是參數的傳遞究竟是按值還是按引用來傳遞參數。,,在ActionScript 3.0 中,全部的參數均按引用傳遞,由于全部的值都存儲為對象。基元型數據是不變的對象,按按值還是按引用的效果一樣,通??梢钥醋魇前粗祩鬟f。按值傳遞,就是指參數被傳遞給函數后,被傳遞的變量就獨立了。假設在函數中轉變這個變量,原變量不會發生任何的變化。,4.4.3,給函數設置默認參數,在ActionScript 2.0中并不支持對函數設置默認參數,此為ActionScript 3.0的新功能。要給一個函數的參數設置默認值,語法格式如下:,,function(參數1:參數
59、類型=默認值,參數2:參數類型=默認值),,默認參數是可選項,可以設置默認參數,也可以不設置默認參數。假設設置了默認參數,則在調用函時,假設果沒有寫明參數,系統將使用在函數定義中為該參數指定的值。,4.4.4 arguments,對象和,...(rest),參數,ActionScript3.0中有兩種函數調用時檢查參數數量的方法,分別為使用arguments對象和..(rest) 參數。,,1.arguments 對象,,在函數中,可以使用arguments 對象來訪問有關傳遞給該函數的參數的信息。arguments 對象是一個數組,其中按挨次保存著傳遞給函數的全部參數??梢允褂脭到M的訪問方
60、式來訪問傳入的參數。它有一個length屬性記錄當前傳入的參數數目;還有一個屬性callee供給對函數本身的引用,該引用可用于遞歸調用函數表達式。,,2....(rest)參數,,...(rest)參數是ActionScript3.0引入的新參數聲明。使用該參數可指定一個自己命名的數組參數來承受任意多個以逗號分隔的參數。,第5章 大事的發送和處理,大事處理系統是交互式程序設計的重要根底。利用大事處理機制,可以便利的相應用戶輸入和系統大事。ActionScript 3.0的大事機制基于文檔對象模型〔DOM3〕,是業界標準的大事處理體系構造。使用機制不僅便利,而且符合標準。ActionScrip
61、t 3.0全新的大事處理機制是ActionScript編程語言中的重大改進,對ActionScript程序設計人員來說,在使用上也更加的便利和直觀。,5.1 大事處理根底,在本節將介紹大事和處理的根本概念,了解常見的大事處理任務。比照ActionScript編程語言中不同版本的大事處理機制的異同,明確ActionScript 3.0中大事處理機制具有良好的性能。,5.1.1 大事和大事處理根底學問,大事和大事處理是面對對象編程的根底。本節將介紹大事和大事處理的根底學問以及大事處理的方法和大事處理的任務。,,1.大事和大事處理根本概念,,2.ActionScript 3.0中的大事和大事處理,
62、,3.ActionScript 3.0中的大事處理任務,,在ActionScript 3.0編程過程中,常見的使用大事處理的任務有:,,編寫代碼以響應大事,,阻擋代碼響應大事,,處理大事對象,,處理大事流,,從類中調度大事,,創立自定義大事類型,5.1.2 早期 ActionScript 版本中的大事處理,ActionScript 1.0使用on和onClipEvent兩個大事處理函數來處理大事。具體為:,,on大事處理函數,直接放在按鈕或者影片剪輯實例上。,,onClipEvent處理函數,直接放在影片剪輯實例上。,,這種方法把代碼直接夾在實例上,簡潔易于、便利直接,但是由于分散在各個不同
63、的元件之上,難以治理和維護。特殊是處理不是本人編寫的代碼,查看和找尋會鋪張太多的珍貴時間。,,在ActionScript2.0中對大事處理進展了改進,增加了一些大事處理機制,具體為:,,回調函數大事:onload、oninit、onComplete等。,,大事偵聽器:addListener、addEventListener。,5.1.3 ActionScript 3.0中的大事處理,在ActionScript 3.0引入了基于文檔對象模型〔DOM3〕唯一的一種大事處理模式,取代了以前各版本中存在的眾多的大事處理機制。在ActionScript3.0中值存在一種大事處理模型,雖然會對一些老版本
64、的用戶和一些非開發者造成確定的麻煩,但更加清晰,更加標準,更符合面對對象開發的需要。,,比照ActionScript 2.0,ActionScript 3.0的大事處理體系具有以下幾個新特點:,,在ActionScript 3.0中,只能使用addEventListener注冊偵聽器。,,在ActionScript 3.0中,可以對屬于大事流一局部的任何對象調用addEventListener方法。,,在ActionScript 3.0中,只有函數或方法可以是大事偵聽器。,5.2 Event,類,在ActionScript 3.0的大事處理系統中,大事對象主要有兩個作用:一是將大事信息儲存在
65、一組屬性中,來代表具體大事;二是包含一組方法,用于操作大事對象和影響大事處理系統的行為。,,在ActionScript 3.0中,在Flash播放器的應用程序接口中,有一個Event類,作為全部大事對象的基類,也就是說,程序中所發生的大事都必需是Event類或者其子類的實例。,5.2.1,了解,Event,類屬性,Event類公開的屬性有:type、cancelable、target、currentTarget、eventphase、bubles。,,1.type屬性:每個大事對象都有關聯的大事類型。大事類型存儲以字符串的形式存儲在Event.type屬性中。利用大事類型,可以區分不同類型的大
66、事。,,2.cancelable屬性:大事的默認行為是否可以被阻擋由布爾值表示,并存儲在Event.cancelable屬性中。此屬性時一個布爾值,默認為flase。這個屬性一般是和preventDefault方法結合在一起使用的。,,3.target屬性:target屬性用于存儲對大事目標的引用。,,4.其它屬性:currentTarget、eventphase和bubbles這三個屬性都是和ActionScript3的大事流機制有關,在尋常用到的不多。,5.2.2,了解,Event,類的方法,Event類的方法有7種:clone、toString、stopPropogation、stopImmediatePropogation、preventDefault、isDefaultPrevented和formatToString。這些方法的用途如下:,,Event.clone方法用于賦值Event子類實例,返回Event對象原始實例的副本。當需要自定義Event子類時,就必需要繼承Event.clone方法,用于賦值自定義類的屬性。另外還要加上新的屬性,否則在偵聽器重寫調用時,這些屬性的
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。