版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 20 章,ActionScript 指令與語法,2,本章提要,20-1 變數與變數範圍 20-2 資料類型 20-3 運算子 20-4 判斷條件與迴圈 20-5 Flash 的路徑階層觀念,3,20-1 變數與變數範圍,變數是用來讓程式暫存資料的, 變數中所存的資料就叫做變數的值, 變數的值可以是字串、數字、布林值.等資料 (關於資料型態請參考 20-2 節)。在使用變數時, 必須要注意變數的有效範圍, 否則可能造成程式運作結果錯誤。 由於在 Flash 中, 變數常應用在顯示文字方面, 所以 Flash 有一種特別的變數型態, 叫做文字欄位變數, 這種變數可從屬性面板設定, 使用起來十分
2、簡單方便。,4,宣告變數與指定變數值,在 ActionScript 中不需要事先宣告也可以直接使用變數。事先宣告變數的意思是指, 以 var 指令告訴 Flash, 程式待會兒需要使用這個名稱的變數, 請電腦在一開始執行程式時就為該變數保留一些記憶體空間。 若是沒有事先宣告, 則 Flash 會在該變數第一次出現時, 才依需要分配記憶體空間給它。,5,宣告變數與指定變數值,不過有經驗的程式設計師都會建議你在使用變數前先行宣告, 這樣一方面可以確認變數的有效範圍 (請參考稍後的說明), 避免程式錯誤;另一方面, 養成這樣的好習慣, 對於日後學習其它規定更嚴格的程式語言時會很有幫助 (許多程式語言
3、如 Java 、C.等在使用變數時必須事先宣告)。 以下介紹 ActionScript 中宣告變數與指定變數值的指令。,6,var,var 指令可用來宣告變數, 位於陳述式/變數類別下, 請在變數欄輸入欲宣告的變數名稱:,7,var,8,var,我們再說明以下的範例:,9,變數的命名規則,ActionScript 的變數命名, 有一些重要規則需要遵守: 雖然 Flash 可以接受任何 Unicode 文字 (包含中文), 但為了確保與其它版本的 Flash 相容, 也要確保能與其它網頁程式 (JavaScript、ASP、PHP.等) 相容, 變數名稱最好以英文命名。 變數名稱不能使用除了 _
4、 (底線) 之外的特殊符號, 中間也不能有空格。,10,變數的命名規則,變數名稱不能使用 ActionScript 的關鍵字 (如:play、stop、goto.等), 也不能使用布林值 (true、false)。為了避開這個問題, 一般變數命名習慣使用my 做開頭, 後面接著第一個字母大寫的單字, 例如myComputer。如此一來, 即使變數命名成myPlay, 也不會造成程式錯誤。,11,變數的命名規則,變數沒有大小寫之分, 所以car、CAR、Car都會被當成同一個變數。不過為了方便辨識, 建議你統一大小寫的寫法。最好使用有意義的變數名稱, 像撰寫程式時, 存放得分的變數就可以命名為m
5、yScore, 而不要命名成a1、a2、x .之類無意義的名稱, 以免日後連自己都記不清楚該變數的用途。,12,set variable,set variable 指令是用來指定值給變數, 位於陳述式/變數類別下。它有變數與值兩個參數需要設定, 在變數欄位中輸入變數名稱;在值欄位中輸入要指定給該變數的值。,13,set variable,14,set variable,15,變數的有效範圍,ActionScript 中的變數可分為時間軸變數、區域變數與全域變數 3 種。大部份的時候, 我們宣告的變數都是時間軸變數;只有在函數、自訂函數 (function 指令) 中宣告的變數才屬於區域變數;至
6、於全域變數需要在宣告變數後, 指定變數值時再特別指定:,16,變數的有效範圍,區域變數:區域變數只有在函數執行的時候才存在, 函數執行完畢後就消失。 時間軸變數:時間軸變數一旦經宣告後, 在哪裡都可以讀取到它, 不過必須注意它被宣告時所在的路徑階層 (請參考20-5 節), 才能正確讀取到它。 全域變數:全域變數和時間軸變數類似, 一旦宣告後, 不論在哪裡都可以讀取到它。差別在於全域變數不需要指定路徑也能夠讀取。,17,變數的有效範圍,以下是一個區域變數與時間軸變數的簡單範例:,18,變數的有效範圍,trace 輸出結果會變成 myVar1 的值為 10 , 而 myVar2 的值為 unde
7、fined (未定義)。 從這個結果我們可以明顯地看出, 在函數內宣告的 myVar2 是一個區域變數, 在 testVar 函數執行完畢後就消失了。,19,文字欄位變數的應用,文字欄位變數是 Flash 特有的變數型態, 它直接與文字欄位 (動態文字與輸入文字) 相關聯。你可以替文字欄位設定一個專有的變數, 則變數的值就會直接顯示在該文字欄位中。以下是文字欄位變數的簡單應用: 首先使用文字工具拉曳出一個文字物件。,20,文字欄位變數的應用,開啟屬性面板, 將文字類型設為動態文字 (或輸入文字)。然後在變數欄中輸入變數名稱, 即完成變數宣告的工作。,21,文字欄位變數的應用,接著在文字欄位所在
8、圖層上方, 建立獨立的 Actions 圖層, 然後在文字欄位所在影格的上方影格設定如下的 ActionScript , 就可以按下 Ctrl + Enter 鍵測試影片:,22,文字欄位變數的應用,23,文字欄位變數的應用,相反地, 如果使用文字工具直接在該文字欄位鍵入文字, 該文字就會變成變數值, 若將文字欄位設定成輸入文字類型, 便可以讓使用者輸入資料, 做為變數值來應用。,24,20-2 資料類型,資料類型是指儲存在變數或 ActionScript 元件中的資料形式 (例如影片片段元件的寬度) , 可分為:字串、數值、布林值、Null、undefined、影片片段及物件, 以下分別進行
9、說明。,25,字串,字串是用雙引號 或單引號 括起來的文字與數字, 如以下程式指定變數值時, 在文字的前後加上雙引號, 就表示指定該值的資料類型為字串:,26,如何得知資料類型,你可以用 typeof 指令 (屬於運算子/各種運算子類別) 來檢驗資料的類型, 例如我們想要得知 myData 變數中的資料類型。 輸出結果為 String, 即是指字串類型。,27,數值,數值包括正負整數與正負實數 (包含小數點的數字)。數值資料類型不能有英文字母、雙引號或是其它任何除了小數點.與負號-之外的特殊符號。如以下程式都是指定數值類型的資料做為變數值:,28,數值,以下是錯誤的寫法:,29,布林值,布林值
10、類型的資料只有兩種, 一為 true (真), 一為 false (偽)。在比較運算式中, 布林值常被用來顯示結果: 由於 1020 ( 屬於比較運算子, 請參考 20-3 的說明) 這個運算式是成立的 (數字 10 的確小於 20) , 所以如上的程式會傳回 true 的值, 並顯示於輸出視窗中。,30,Null,Null 資料類型只有一個值, 就是 null, 這個值代表沒有資料, 它有一些比較特殊的應用, 例如將它當做函數的參數, 讓函數執行時忽略該參數.等。,31,undefined,undefined 資料類型只有一個值, 就是undefined。當變數尚未被賦予任何值時, 其預設值
11、就是 undefined (未定義)。以下程式就是宣告變數後尚未指定其值, 就要求輸出其值, 因此得到的值就會是 undefined。,32,影片片段,影片片段資料類型是 ActionScript 中唯一具有實體圖像的資料型態, 它記錄了影片片段實體的變數、屬性 (Properties) 與方法 (Method)。在以下的程式裡, 我們把一個實體名稱為 fish 的影片片段實體 X 座標位置資料, 存入名為 myVar 的變數中:,33,物件,此處物件是指 ActionScript 中虛擬的物件, 與我們在舞台中繪製的形狀填色、線條之類的物件不同。在 Flash 的 ActionScript
12、中, 使用者可以創造程式中虛擬的物件, 藉以統一控制各種屬性。物件的每個屬性都有名稱和值, 而屬性的值可以是任何資料類型。,34,關於資料類型的轉換,由於 ActionScript 對於資料類型的規定並不是那麼嚴格, 因此有時候依據程式執行需要, Flash 會自動幫你做一些資料類型的轉換, 這個動作會讓某些原來看似不合理的程式能夠正常執行, 例如:,35,20-3 運算子,所謂的運算子, 就是加、減、乘、除之類的符號, 但在 ActionScript 中還有許多功能特殊的運算子, 其中有的運算子意義與數學裡的運算符號並不一致, 舉個最普通的例子, 就是=運算子, 在 ActionScript
13、 中它屬於指定運算子 , 功用是在指定值給變數, 而不像在數學裡=是等於的意思。,36,運算子,Flash 中的運算子都列在運算子類別下, 依功能分類分別是比較運算子、位元運算子、數學運算子、邏輯運算子、指定及其他運算子。以下我們僅選擇最基本的數學、比較、邏輯 3 類加以列表說明。,37,數學運算子,38,比較運算子,39,邏輯運算子,40,20-4 判斷條件與迴圈,判斷條件與迴圈是讓程式根據各種條件, 判斷是否執行某些程式, 或是決定程式執行順序的語法。你可以在陳述式/ 判斷條件/ 迴圈類別中找到這類指令, 以下我們僅針對最常使用的 if 條件式加以詳述, 並列表補充說明其餘同類語法。,41
14、,if 條件式,if 指令的運作方式是:當判斷條件傳回值為 true 時, 執行接下來大括弧中的程式, 若傳回 false , 就不執行該程式。 因此 if 指令只有一個參數需要設定, 就是判斷條件, 你必須在該欄位中輸入用來判斷的運算式、變數, 而且必須注意判斷條件欄位中的運算式或變數, 必須傳回布林值 (也就是 true 或 false), 這樣 if 指令才能正常進行判斷。,42,if 條件式,43,if 條件式,再以一個簡單的範例來說明:,44,其他常用判斷條件或迴圈指令,45,Flash 獨有的影格迴圈,前述的迴圈指令都是純程式製作的迴圈, 但是 Flash 本身含有時間軸, 故其順
15、序播放的特性提供了另一種迴圈方式, 也就是利用 goto 指令來製造影格迴圈。 例如我們在第 5 格影格設定了影格動作, 又在動畫最後 1 格以 goto 指令讓動畫跳到第 3 格影格播放, 這樣動畫會一直在第 3 階到最後 1 格影格間重複播放而形成迴圈。,46,Flash 獨有的影格迴圈,迴圈中的程式, 即影格 5 的影格動作, 就會一再地被執行。不過影格迴圈會有明顯的時間差, 不像一般迴圈指令執行的頻率那麼高。,47,20-5 Flash 的路徑階層觀念,由於使用 ActionScript 操控各類實體 (影片片段、按鈕、文字) 時, 必須正確指定目標 (包含實體的路徑和名稱), 而路徑
16、一旦錯誤, 實體就接收不到 ActionScript 的訊息, 也無法依據程式執行動作。由於 Flash 動畫的元素眾多、結構龐大, 再加上 Flash 還可以動態載入外部檔案, 所以弄清楚舞台上實體的路徑階層, 就變成使用 ActionScript 重要的基本知識之一了。,48,Flash 的路徑階層觀念,我們在第 19 章的練習中並不需要指定任何目標實體, Flash 就知道 stop 或 goto 指令是要控制整個主動畫。 這是因為全域函數/時間軸控制項類別下的指令, 主要就是針對整個時間軸主動畫設計的, 所以這些指令中不需要指定目標參數。,49,Flash 的路徑階層觀念,此外當你沒有
17、指定程式的作用目標時, ActioinScript 就會把該程式所在位置的實體 (19-4 節程式所在的位置是主動畫的時間軸上) 當成作用目標。 有鑒於 Flash 路徑階層觀念的重要性, 以下我們詳加說明 Flash 動畫中各階層的關係, 以奠定你日後活用 ActionScript 的基礎。,50,階層,每個新開啟的 Flash 文件都有一個時間軸主動畫, 這個主動畫可以隨著影格、場景的增加一直延伸。原始的時間軸主動畫, 在 Flash 階層 (level) 中名為_root, 也就是根目錄動畫。在 19-4 節範例檔 19-02.fla 中, 若以指定目標的方式撰寫, 可寫成如下的程式:,
18、51,階層,52,階層,這個原始的時間軸主動畫 _root, 也稱為_level0。既然有 _level0 (第 0 階層), 那麼就有 _level1、_level2。例如當你利用 loadMovie 指令 (在全域函數/瀏覽器/網路類別下) 動態載入外部 Flash 影片檔 (.swf) 到目前所在動畫中, 就可以指定要將這個 .swf 檔載入哪一階層。,53,階層,54,階層,Flash 動畫的每個階層都有獨立的時間軸, 而且每個階層只能有一個時間軸主動畫, 若你將 .swf 檔載入已有時間軸主動畫的階層中 (例如 _level0), 則後載入者將把原始存在的動畫取代掉。,55,階層,由
19、於每個階層都有獨立的時間軸, 所以每個階層的時間軸主動畫都稱為 _root。舉例來說, 如果你在 _level1 主動畫設定 _root.stop();, 因為沒有指定是哪一個階層, 所以停止播放的將是 _level1 的時間軸主動畫;若設定的程式為特別指定 level0 的 _level0.stop(); , 那麼停止播放的將會是 _level0 的時間軸主動畫。,56,實體目標路徑與深度,在第 6 章我們介紹過, 舞台中的實體 (影片片段、按鈕、文字) 可以命名好讓 ActionScript 控制, 而舞台中的實體除了名稱之外, 還有一個深度 (depth) 屬性。 實體的深度就是該實體所在位置的高低 (亦即 Z 軸位置, 可以有負值), 不同的實體原則上不可以存在於同一個深度。,57,實體目標路徑與深度,例如以 duplicateMovieClip 或attachMovie 等指令即時複製或載入影片片段實體時, 必須指定載入的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省郴州市第五完全中学2025-2026学年初三下学期第二次诊断性测试物理试题含解析
- 2025-2026学年湖北省通城市隽水镇南门中学初三5月毕业考试数学试题理试题含解析
- 护理课件设计应用
- 2025年前台防疫礼仪专项训练
- 护理学导社:社区护理与健康服务
- 护理教学设计:护理团队协作
- 慢性肾炎患者的水分与电解质平衡护理
- 护理员血糖仪使用技巧实操
- 护理带教中的情绪管理能力
- 2026六年级数学上册 数与形计算技巧
- 2025年湖南省法院系统招聘74名聘用制书记员(公共基础知识)测试题附答案解析
- 2026年体外诊断试剂区域经销协议
- 《JBT13745-2019 斜轴式推流曝气机》(2026年)实施指南
- 重要电力用户管理培训课件
- 消防员心理健康讲座
- 糖尿病足感染抗菌药物疗程与方案优化方案
- 病理学基础绪论课件
- JJF 2344-2025电针治疗仪校准规范
- 2026年春学期部编版小学语文五年级下册教学计划附教学进度表
- 燃气具安装维修培训课件
- DB22∕T 3259-2021 健康儿童及青少年心肌酶参考区间规范
评论
0/150
提交评论