- ActionScript 3.0從入門到精通(視頻實戰版)
- 蔣國強 岳元亞等編著
- 738字
- 2018-12-31 19:52:44
第一篇 ActionScript 3.0編程基礎
第1章 ActionScript 3.0概述
ActionScript 3.0是針對Flash Player運行時環境的編程語言,它具有處理各種人機交互、數據交互等功能。本章將粗略地介紹ActionScript語言的發展歷史、新增特色、編程環境,并編寫第一個ActionScript 3.0程序等內容。
1.1 關于ActionScript 3.0
ActionScript 3.0是隨著Adobe Flash CS3和Flex 2.0的推出而同步推出的腳本編程語言。本節將對ActionScript 3.0進行簡要的介紹,并通過一些具體的實例圖片,展示常見的ActionScript的應用領域。
1.1.1 ActionScript 3.0介紹
ActionScript 3.0與ActionScript以前的版本有本質上的不同。它是一門功能強大、符合業界標準的面向對象的編程語言。它在Flash編程語言中有著里程碑式的作用,是用來開發富Internet應用程序(Rich Internet Applications,RIA)的重要語言。
ActionScript 3.0在用于腳本撰寫的國際標準化編程語言ECMAScript的基礎之上,對該語言做了進一步的改進,可為開發人員提供用于富Internet應用程序的可靠的編程模型。開發人員可以獲得卓越的性能并簡化開發過程,便于利用非常復雜的應用程序、大的數據集和面向對象的、可重復使用的基本代碼。ActionScript 3.0在Flash Player 10中新的ActionScript虛擬機(AVM2)內執行,可為下一代RIA帶來性能突破。
Adobe公司于2007年6月11日推出了Adobe Integrated Runtime(AIR)的Beta版,正式提出了新的富Internet應用程序概念。2008年2月25日,AIR 1.0正式版和Flex 3.0集成發布。AIR允許開發人員使用Flex或HTML/CSS/JavaScript組合來構建桌面應用程序。它是一款連接本地操作系統與在線的網絡應用之間的橋梁,它能讓平常要在網絡上瀏覽使用的網頁程序(如Flash、HTML、JavaScript、AJAX)直接安裝在用戶的計算機上,可以直接在計算機上執行,不必打開網頁瀏覽器。
無論是IE支持的Flash Player播放器,還是AIR程序,都真正支持跨系統應用,其核心語言都是ActionScrpit 3.0。
1.1.2 ActionScript 3.0能做什么
最初在Flash中引入ActionScript,目的是為了實現對Flash影片的播放控制。而ActionScript發展到今天,其已經廣泛地應用到了多個領域,能夠實現豐富的應用功能。
ActionScript 3.0最基本的應用與創作工具Adobe Flash CS5結合,創建各種不同的應用特效,實現豐富多彩的動畫效果,使Flash創建的動畫更加人性化,更具有彈性效果。在這些基礎應用當中,應用最為廣泛的就是使用ActionScript腳本控制的彈性菜單。下面是一個彈性的效果,如圖1.1所示。

圖1.1 彈性菜單效果圖
隨著網絡技術的發展和網頁制作技術的進步,使用Flash與ActionScript腳本語言創作的網站,動畫效果更強,數據交互速度更快、更方便,成為RIA開發技術的典范。下面是一個Flash網站的首頁,效果如圖1.2所示。

圖1.2 Flash網站效果圖
網絡流媒體技術的廣泛應用,使得Flash與ActionScript結合創作的音樂播放器和視頻播放器在網絡上廣泛流行,特別是網絡視頻網站,已經成為Flash網絡應用中的一個熱點。圖1.3是一個網絡視頻播放器效果圖。

圖1.3 網絡視頻播放器效果圖
最近兩年,Flash游戲也成為Flash應用的一個重點領域,受到廣大游戲玩家的追捧。使用Flash與ActionScript創作的游戲,由于其具有方便、簡單易用、綠色且文件小等優勢,在網絡上廣泛流傳,也是企業開發的重點。下面是一款Flash賽車游戲的抓圖,效果如圖1.4所示。

圖1.4 賽車游戲效果圖
Flash與ActionScript腳本語言結合,廣泛用于課件制作領域,不僅包含純粹的教育領域,其他的企業和政府機構的培訓課程,都已經開始使用Flash和ActionScript語言來進行創作和實施教學。下面是一個課件的頁面,效果如圖1.5所示。

圖1.5 課件應用效果圖
ActionScript 3.0的應用領域還有很多,特別是在應用面向對象編程的今天,其應用肯定會有一個更廣闊的天地。
1.2 ActionScript 3.0的新特色
ActionScript 3.0包括兩部分:核心語言和Flash Player API。核心語言用于定義編程語言的基本結構,比如聲明變量,創建表達式控制程序結構和數據類型等。Flash Player API由一系列用于實現特定功能的Flash Player類組成。
1.2.1 核心語言的新特色
ActionScript 3.0核心語言與ECMAScript標準兼容,并和新改進的一些功能區域進行結合。下面是ActionScript 3.0的一些新特點。
1. 運行時的異常處理機制
在ActionScript 2.0以及以前的版本中,許多運行時的錯誤都沒有記錄,也沒有給予反饋調試。這樣雖然能夠保證Flash Player的順利運行,程序不被中斷,但是會使程序的調試倍加困難。ActionScript 3.0中會出現更多的錯誤提示。運行時的異常用于常見的錯誤情形,能夠使用戶可靠地處理錯誤的應用程序。當程序運行出現異常時,還可以提供帶有源文件和行號的堆棧跟蹤,能夠幫助用戶快速定位錯誤,進一步改進調試的效率。
2. 運行時類型
在ActionScript 2.0中,嚴格數據類型的檢查只是局限于編譯過程。在運行的時候,由于所有值的類型都是動態的,并不含有類型信息。也就是說,類型注釋主要是為開發者提供一個幫助。在ActionScript 3.0中,類型信息在運行時依然保留,并且可以用于多種目的。Flash Player 10執行運行時類型檢查,增強了系統的類型安全性。類型信息還可以通過以本機形式表示變量,從而減少了內存的使用量,提高了性能。
3. 密封類
ActionScript 3.0中引入了密封類的概念。密封類只能擁有在編譯時定義的固定的一組屬性和方法,不能再添加其他屬性和方法。這樣就使編譯檢查更加嚴格,增強了程序的可靠性。由于不要求每一個對象實例都有一個內部散列表,從而提高了內存的使用率。當然這樣仍可以實現動態類,不過需要使用dynamic關鍵字實現。默認情況下,ActionScript 3.0的類都是密封類。
4. 閉包方法
ActionScript 3.0中使用閉包方法可以自動記起它的原始對象實例。此功能主要是為了改進ActionScript 2.0中this關鍵字無法記住自身指向的原始對象而加入的。
5. E4X
ActionScript 3.0實現了對先進的ECMAScript for XML的完全支持。E4X提供了一組操作XML的語言構造,使XML數據的處理更為簡單,成倍地降低了代碼的數量,簡化了XML應用程序的開發,大大提高了開發的效率。
6. 正則表達式
由于ECMAScript第3版語言規范中對正則表達式進行了定義,從而使ActionScript 3.0實現了對正則表達式的支持。使用正則表達式,大大增強了字符串處理功能。
7. 命名空間
ActionScript 3.0中的命名空間是一種創新機制,用以控制聲明的可見性。命名空間和用于控制聲明的public、private等可見的傳統訪問說明符類似。其本質是通過自定義路徑,能夠使用用戶所選擇的名字。用戶也可以聲明自己的命名空間,定義出不同的訪問控制權限。
8. 新基元類型
ActionScript 2.0中的數值類型只有Number,它是一種雙精度浮點數。ActionScript 3.0又增加了int和uint類型。int類型是一個帶符號的32位整數,而uint是無符號的整數,可用于儲存RGB顏色值和字節計算等。
1.2.2 Flash Player API 新功能
Flash Player API是為增強Flash Player容納ActionScript語言的能力而引入的一組類和功能。這種功能在ActionScript核心語言和Flash平臺之間建立了一座橋梁,大大提高了Flash應用程序的能力,并對核心語言起到了重要的補充作用。下面列出一些Flash Player API功能的新特點。
1. DOM3事件模型
模仿W3C DOM3事件規格建立的DOM3事件模型在ActionScript 3.0中更加清晰、高效。該事件模型提供了生成和處理事件信息的一種標準方法,從而使應用程序內的對象可以相互通信,保持狀態并能對更改做出響應。
2. 顯示列表API
新的顯示列表是ActionScript 3.0中的重大革新。原有的顯示結構發生了重大的改變,新的容器類用于顯示對象的存儲,比Movie Clip更加輕量、有效;新的深度管理體系由Flash Player自動管理深度,并提供了方法用于管理z軸。另外,由于有了顯示列表的存在,遍歷對象也就更加輕松自如。
此外,文本的改進和對二進制的支持也是新的特色。
1.3 Flash CS5的動作面板介紹
Flash CS5中可以使用動作面板、腳本窗口或者外部編輯器的創作環境中添加ActionScript代碼。本節就來介紹一下Flash CS5的動作面板窗口和Flash CS自帶的編輯器窗口,并將詳細介紹功能按鈕的作用。
1.3.1 動作面板概述
如果要在Flash CS5中加入ActionScript代碼,可以直接使用動作面板來輸入。
要打開動作面板,請執行下面的操作:單擊【窗口】|【動作】,或者按【F9】鍵。
打開后的動作面板如圖1.6所示。

圖1.6 動作面板
下面對圖中各部分的名稱及作用加以說明。
A:腳本窗格,用于輸入代碼的地方。
B:面板菜單,單擊后可顯示動作面板功能菜單。
C:動作工具箱,可以通過雙擊或者拖動的方式將其中的ActionScript元素添加到腳本窗格中。
D:腳本導航器,其有兩個功能,一是通過單擊其中的項目,可以將與該項目相關的代碼顯示在腳本窗口中;二是通過雙擊其中的項目,對該項目的代碼進行固定操作。
1.3.2 腳本窗口概述
ActionScript 3.0是很好的面向對象編程語言,同樣Flash CS5也提供了一個很不錯的腳本編輯器,這就是Flash的腳本窗口。使用腳本窗口可以創建或者導入外部的腳本文件,這些文件可以是ActionScript、Flash Communication或Flash JavaScript文件。
要打開腳本窗口,請執行下面的操作:
1) 單擊【文件】|【新建】,打開“新建文檔”對話框,如圖1.7所示。

圖1.7 “新建文檔”對話框
2) 選擇“ActionScript文件”,單擊【確定】按鈕。打開的腳本窗口如圖1.8所示。

圖1.8 腳本窗口
這樣就可以在腳本窗口中編輯ActionScript代碼了。
1.3.3 動作面板和腳本窗口的工具介紹
在動作面板和腳本窗口的上部都有一排功能按鈕,利用這些功能按鈕可以很方便地進行ActionScript代碼的輸入和編寫,下面對這些按鈕進行具體的說明。
:將新項目添加到腳本中按鈕。該按鈕主要用于顯示語言元素,這些元素同時也會顯示在“動作”工具箱中。可以利用它來選擇要添加到腳本中的項目或者元素名稱。
:查找按鈕。主要用于查找并替換腳本中的文本。
:插入目標路徑按鈕(僅限動作面板)。可以幫助為腳本中的某個動作設置絕對或相對目標路徑。
:語法檢查按鈕。用于檢查當前腳本中的語法錯誤。
:自動套用格式按鈕。用來調整腳本的格式,以實現正確的編碼語法和更好的可讀性。
:顯示代碼提示按鈕。在關閉自動代碼提示時,可使用此按鈕來顯示正在執行的代碼行的代碼提示。
:調試選項按鈕(僅限動作面板)。用于設置和刪除斷點,以便在調試時可以逐行執行腳本中的每一行。
:折疊成對大括號按鈕。用于對出現在當前包含插入點的成對大括號或小括號間的代碼進行折疊。
:折疊所選按鈕。用于折疊當前所選的代碼塊。
:展開全部按鈕。用于展開當前腳本中所有折疊的代碼。
:應用塊注釋按鈕。用于將注釋標記添加到所選代碼塊的開頭和結尾。
:應用行注釋按鈕。用于在插入點處或所選多行代碼中每一行的開頭處添加單行注釋標記。
:刪除注釋按鈕。用于從當前行或當前選擇內容的所有行中刪除注釋標記。
:顯示/隱藏工具箱按鈕。用于顯示或隱藏“動作”工具箱。
:腳本助手按鈕(僅限動作面板)。用于打開和關閉“腳本助手”模式。
:幫助按鈕。用于顯示腳本窗口中所選ActionScript元素的參考信息。
:面板菜單(僅限動作面板)。包含適用于動作面板的命令和首選參數。
注意
在腳本窗口中要慎用“自動套用格式”按鈕,否則會造成未知的錯誤。比如下面的代碼:
return Math.floor((n - 1) * Math.random());
說明
在執行“自動套用格式”按鈕之后,變為:
return Math.floor(n - 1 * Math.random());
說明
代碼執行的語法和原意完全不同。
1.4 ActionScript 3.0的首選參數設置
無論是在動作面板還是在腳本窗口中編輯ActionScript代碼,都可以通過設置首選參數來配置輸入的ActionScript代碼的格式。
要設置ActionScript 3.0的首選參數,需要先打開首選參數窗口。請執行下面的操作:選擇【編輯】|【首選參數】,打開“首選參數”對話框,如圖1.9所示。

圖1.9 “首選參數”對話框
通過首選參數設置,可以設置如下參數:
?自動縮進:若勾選了該選項,則在輸入左小括號“(”或左大括號“{”之后輸入的文本將按照“制表符大小”設置自動縮進。
?制表符大小:指定新行中將縮進的字符數目。
?代碼提示:若選擇此選項,則在動作面板或者腳本窗口中能夠啟用代碼提示,方便代碼輸入。
?延遲:指定代碼提示出現之前的延遲時間(以秒為單位)。
?字體:指定用于腳本的字體。
?使用動態字體映射:選中此選項可確保所選的字體系列呈現每個字符。如果沒有,Flash會替換上一個包含必需字符的字體系列。
?打開/導入:指定打開或導入ActionScript文件時使用的字符編碼格式。
?保存/導出:指定保存或導出ActionScript文件時使用的字符編碼。
?重新加載修改的文件:指定腳本文件被修改、移動或刪除時將如何操作。
?語法顏色:指定在腳本中輸入的代碼顯示的顏色。
?語言:打開“ActionScript設置”對話框,可以在其中設置ActionScript 2.0或3.0的類路徑。
對于初學者來說,編寫ActionScript代碼時,使用代碼提示是一個很好的主意。下面就來介紹幾種使用代碼提示的方法。
1. 工具提示樣式的代碼提示
在需要括號的元素(例如方法名稱、for、if或do while之類的命令等)后輸入一個左括號“(”以顯示代碼提示,如圖1.10所示。

圖1.10 代碼工具提示樣式
這樣,可以根據提示輸入相應的代碼,以提高用戶編寫腳本的速度。要使代碼提示消失,可以輸入右括號“)”或者用鼠標左鍵單擊該語句之外的地方。
2. 使用菜單樣式的代碼提示
通過在變量或者對象名稱后輸入“.”來顯示代碼提示,如圖1.11所示。

圖1.11 代碼菜單提示樣式
可用向上和向下箭頭鍵選擇要使用的屬性和方法。要使代碼提示消失,可以選擇需要的屬性,或者用鼠標左鍵單擊語句之外的地方。
1.5 面向對象編程概述
ActionScript 3.0是為面向對象編程而準備的一種腳本語言。本節將簡單介紹一下面向對象編程的基本概念。
面向對象編程(Object Oriented Programming,OOP)是指面向對象程序設計,它是一種計算機編程架構。
程序(program)是為實現特定目標或者解決特定問題而用計算機語言編寫的命令序列的集合。它可以是一些用高級程序語言開發的可以運行的可執行文件,也可以是一些用應用軟件制作的可執行文件,比如Flash編譯之后的SWF文件。
編程是指為了實現某種目的或需求,使用各種不同的程序語言進行設計,編寫能夠實現這些需求的可執行文件。
面向對象編程的基本原則是程序由多個能夠起到不同功能的組織單元或者對象組合而成。其要達到的基本目標是:重用性、靈活性和可擴展性。在整體設計的過程中,需要使每一個對象(單元)都能夠接收和處理數據信息,并能夠發出反饋信息。為了實現這些目標,就需要使用類、對象控制數據和信息,使用繼承實現功能的衍生。
抽象意義上的對象是一種將狀態和行為結合在一起的軟件構造,其目的是用來描述真實世界的一個物理或概念性的對象。實際意義上的對象指一個具體的實體或實例,即實實在在存在著的物體。
在通常情況下,對象使用屬性和方法來描述。屬性指對象狀態所對應的數據,比如人這一對象,它有身高、體重等屬性。方法指對象所能發生的行為,比如人有吃飯、穿衣等行為。
另外,需要知道對象在什么時間發生了什么行為,或者對象在什么時間執行了某些操作,還需要了解執行的是什么操作。為了達到這個目的,在編程過程中使用“事件”這一概念來描述對象做了什么,有什么動作,或者接受了什么動作。
類是抽象化的對象。將大量對象共有的屬性和方法抽象出來,用一個統一的文件來定義和管理,這就是類。
類是抽象化的概念,比如“自行車”。對象是類的具體化,比如“我的自行車”。
繼承是指一個對象直接使用另一對象的屬性和方法。比如“汽車”是一個大的對象,它可以分為各種不同的車型,如小汽車、卡車、公共汽車等。它們都具有汽車的共有特征,如都有4個輪子、都能夠被駕駛等。這樣就可以用“汽車”這一對象來概括它們共有的這些特征,然后各種不同車型的車都可以使用“汽車”對象的屬性和方法,這就是繼承。習慣上將上一級對象的類稱為“父類”,將從父類繼承而得到的類稱為“子類”。
接口是指實現在計算機不同功能層之間相互通信的實施規則。API(Application Programming Interface)指應用程序編程接口,是實現程序不同功能之間相互通信的接口技術和方法。
1.6 Flash CS5的第一個“Welcome You”
Flash CS5中有兩種寫入ActionScript 3.0代碼的方法:
?在時間軸的關鍵幀加入ActionScript代碼。
?在外部寫出一個單獨的ActionScript類文件,然后綁定或者導入到fla文件中。
ActionScript中的類有3種用法:一是和Flash中的庫元件進行綁定;二是和fla文件綁定;三是使用import關鍵字導入類。
用ActionScript 3.0開發的程序中,推薦文檔與代碼分離,不推薦把代碼寫在關鍵幀上。下面用兩種方法來開始第一個“Welcome You”程序。
1.6.1 在關鍵幀上加入代碼
打開Flash CS5,新建一個Flash文件(ActionScript 3.0)。建好后,單擊時間軸的第一幀,打開動作面板,輸入如下代碼:
trace("Welcome You");
效果如圖1.12所示。

圖1.12 動作面板編寫代碼效果
按下【Ctrl+Enter】組合鍵,測試影片。這時可以看到有一個Flash Player窗口和一個輸出面板窗口,面板中顯示“Welcome You”,效果如圖1.13所示。

圖1.13 輸出窗口顯示效果
第一種Welcome You程序大功告成!
說明
trace()語句的作用是向“輸出”面板發送特定信息。比如,測試SWF文件,當單擊按鈕或播放幀時,可以將結果發送到“輸出”面板。trace()語句類似于JavaScript alert語句。
其用法格式為:
trace(... arguments);
說明
參數為要計算的一個或多個參數或者表達式,多個參數使用逗號隔開。
1.6.2 利用文檔類制作第一個“Welcome You”程序
ActionScript 3.0的一個新特色就是文檔類,也就是把外部的ActionScript類文件和fla文件進行綁定,編譯的時候將SWF文件看做類的一個實例。
下面來具體操作一下:
打開Flash CS5,新建一個Flash文件(ActionScript 3.0),保存為Welcome.fla。
打開腳本窗口,新建一個ActionScript文件,保存為Welcome.as,注意要和Welcome.fla放在同一個目錄下。在代碼窗口輸入如下代碼:
package { import flash.display.Sprite public class Welcome extends Sprite { public function Welcome() { trace("Welcome You"); } } }
回到welcome.fla窗口,按下【Ctrl+F3】組合鍵,打開“屬性”面板,在文檔類文本框中輸入“Welcome”,如圖1.14所示。

圖1.14 綁定文檔類效果圖
按下【Ctrl+Enter】組合鍵,測試影片。這時可以看到有一個Flash Player窗口和一個輸出面板窗口,面板中顯示“Welcome You”。輸出的效果如圖1.15所示。

圖1.15 輸出窗口顯示效果
至此,第二種Welcome You程序大功告成!
1.7 練習題
1. 關于AS 3.0下面描述正確的是( )。
A. AS 3.0不能創建動態類,類的屬性和方法只能是固定的
B. Flash Player 10中,AS 3.0在新的虛擬機(AVM2)內執行,以前版本的ActionScript在AVM1內執行
C. AS 3.0 this仍然不能準確記錄當前引用的原始對象位置
D. 在Flash CS5中,可以將AS 2.0代碼寫到時間軸上,AS 3.0代碼則不可以寫到時間軸上
2. Flash CS5打開動作面板的快捷鍵是( )。
A. F1
B. F6
C. F9
D. F10
3. AS 3.0中增加了int、uint數值類型,簡述它們和Number類型的區別。
4. 實踐
1)用Flash CS5(或Flash CS4)新建一個AS 3.0 Flash文件,新建文檔類Welcome.as,輸出“hello world”。
2)用Flash CS5(或Flash CS4)新建一個AS 3.0 Flash文件,在時間軸添加代碼,輸出“hello world”。
第一種方法是代碼和文檔分離,推薦的開發方式。
第二種是AS 2.0常用的方式,不再推薦。
5. 簡述AS 3.0比AS 2.0有了哪些變化。
- 程序設計與實踐(VB.NET)
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- 精通軟件性能測試與LoadRunner實戰(第2版)
- SQL Server 2016數據庫應用與開發習題解答與上機指導
- Raspberry Pi Robotic Projects(Third Edition)
- 玩轉.NET Micro Framework移植:基于STM32F10x處理器
- Clojure Polymorphism
- Arduino電子設計實戰指南:零基礎篇
- Getting Started with Electronic Projects
- 循序漸進Vue.js 3前端開發實戰
- Build Your Own PaaS with Docker
- Go語言編程之旅:一起用Go做項目
- Tkinter GUI Application Development Blueprints
- 面向對象程序設計教程(C#版)
- Getting Started with SQL Server 2014 Administration