1 / 66

第 20 章

第 20 章. ActionScript 指令與語法. 本章提要. 20-1 變數與變數範圍 20-2 資料類型 20-3 運算子 20-4 判斷條件與迴圈 20-5 Flash 的路徑階層觀念. 20-1 變數與變數範圍. 變數 是用來讓程式暫存資料的 , 變數中所存的資料就叫做變數的「值」 , 變數的值可以是字串、數字、布林值 ... 等資料 ( 關於資料型態請參考 20-2 節 ) 。在使用變數時 , 必須要注意變數的有效範圍 , 否則可能造成程式運作結果錯誤。

Télécharger la présentation

第 20 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 20 章 ActionScript 指令與語法

  2. 本章提要 • 20-1 變數與變數範圍 • 20-2 資料類型 • 20-3 運算子 • 20-4 判斷條件與迴圈 • 20-5 Flash 的路徑階層觀念

  3. 20-1 變數與變數範圍 • 變數是用來讓程式暫存資料的, 變數中所存的資料就叫做變數的「值」, 變數的值可以是字串、數字、布林值...等資料 (關於資料型態請參考 20-2 節)。在使用變數時, 必須要注意變數的有效範圍, 否則可能造成程式運作結果錯誤。 • 由於在 Flash 中, 變數常應用在顯示文字方面, 所以 Flash 有一種特別的變數型態, 叫做文字欄位變數, 這種變數可從屬性面板設定, 使用起來十分簡單方便。

  4. 宣告變數與指定變數值 • 在 ActionScript 中不需要事先宣告也可以直接使用變數。事先宣告變數的意思是指, 以 var 指令告訴 Flash, 程式待會兒需要使用這個名稱的變數, 請電腦在一開始執行程式時就為該變數保留一些記憶體空間。 • 若是沒有事先宣告, 則 Flash 會在該變數第一次出現時, 才依需要分配記憶體空間給它。

  5. 宣告變數與指定變數值 • 不過有經驗的程式設計師都會建議你在使用變數前先行宣告, 這樣一方面可以確認變數的有效範圍 (請參考稍後的說明), 避免程式錯誤;另一方面, 養成這樣的好習慣, 對於日後學習其它規定更嚴格的程式語言時會很有幫助 (許多程式語言如 Java 、C...等在使用變數時必須事先宣告)。 • 以下介紹 ActionScript 中宣告變數與指定變數值的指令。

  6. var • var指令可用來宣告變數, 位於陳述式/變數類別下, 請在變數欄輸入欲宣告的變數名稱:

  7. var

  8. var • 我們再說明以下的範例:

  9. 變數的命名規則 • ActionScript 的變數命名, 有一些重要規則需要遵守: • 雖然 Flash 可以接受任何 Unicode 文字 (包含中文), 但為了確保與其它版本的 Flash 相容, 也要確保能與其它網頁程式 (JavaScript、ASP、PHP...等) 相容, 變數名稱最好以英文命名。 • 變數名稱不能使用除了 「_」 (底線) 之外的特殊符號, 中間也不能有空格。

  10. 變數的命名規則 • 變數名稱不能使用 ActionScript 的關鍵字 (如:play、stop、goto...等), 也不能使用布林值 (true、false)。為了避開這個問題, 一般變數命名習慣使用「my」 做開頭, 後面接著第一個字母大寫的單字, 例如「myComputer」。如此一來, 即使變數命名成「myPlay」, 也不會造成程式錯誤。

  11. 變數的命名規則 • 變數沒有大小寫之分, 所以「car」、「CAR」、「Car」都會被當成同一個變數。不過為了方便辨識, 建議你統一大小寫的寫法。最好使用有意義的變數名稱, 像撰寫程式時, 存放得分的變數就可以命名為「myScore」, 而不要命名成「a1」、「a2」、「x 」 ...之類無意義的名稱, 以免日後連自己都記不清楚該變數的用途。

  12. set variable • set variable指令是用來指定值給變數, 位於陳述式/變數類別下。它有變數與值兩個參數需要設定, 在變數欄位中輸入變數名稱;在值欄位中輸入要指定給該變數的值。

  13. set variable

  14. set variable

  15. 變數的有效範圍 • ActionScript 中的變數可分為時間軸變數、區域變數與全域變數3 種。大部份的時候, 我們宣告的變數都是時間軸變數;只有在函數、自訂函數 (function 指令) 中宣告的變數才屬於區域變數;至於全域變數需要在宣告變數後, 指定變數值時再特別指定:

  16. 變數的有效範圍 • 區域變數:區域變數只有在函數執行的時候才存在, 函數執行完畢後就消失。 • 時間軸變數:時間軸變數一旦經宣告後, 在哪裡都可以讀取到它, 不過必須注意它被宣告時所在的路徑階層 (請參考20-5 節), 才能正確讀取到它。 • 全域變數:全域變數和時間軸變數類似, 一旦宣告後, 不論在哪裡都可以讀取到它。差別在於全域變數不需要指定路徑也能夠讀取。

  17. 變數的有效範圍 • 以下是一個區域變數與時間軸變數的簡單範例:

  18. 變數的有效範圍 • trace輸出結果會變成 myVar1 的值為 10 , 而 myVar2 的值為 undefined (未定義)。 • 從這個結果我們可以明顯地看出, 在函數內宣告的 myVar2 是一個區域變數, 在 testVar函數執行完畢後就消失了。

  19. 文字欄位變數的應用 • 文字欄位變數是 Flash 特有的變數型態, 它直接與文字欄位 (動態文字與輸入文字) 相關聯。你可以替文字欄位設定一個專有的變數, 則變數的值就會直接顯示在該文字欄位中。以下是文字欄位變數的簡單應用: • 首先使用文字工具拉曳出一個文字物件。

  20. 文字欄位變數的應用 • 開啟屬性面板, 將文字類型設為動態文字(或輸入文字)。然後在變數欄中輸入變數名稱, 即完成變數宣告的工作。

  21. 文字欄位變數的應用 • 接著在文字欄位所在圖層上方, 建立獨立的 Actions 圖層, 然後在文字欄位所在影格的上方影格設定如下的 ActionScript , 就可以按下 [Ctrl] + [Enter] 鍵測試影片:

  22. 文字欄位變數的應用

  23. 文字欄位變數的應用 • 相反地, 如果使用文字工具直接在該文字欄位鍵入文字, 該文字就會變成變數值, 若將文字欄位設定成輸入文字類型, 便可以讓使用者輸入資料, 做為變數值來應用。

  24. 20-2 資料類型 • 資料類型是指儲存在變數或 ActionScript 元件中的資料形式 (例如影片片段元件的寬度) , 可分為:字串、數值、布林值、Null、undefined、影片片段及物件, 以下分別進行說明。

  25. 字串 • 字串是用雙引號「" "」或單引號「' '」括起來的文字與數字, 如以下程式指定變數值時, 在文字的前後加上雙引號, 就表示指定該值的資料類型為字串:

  26. 如何得知資料類型 • 你可以用 typeof 指令 (屬於運算子/各種運算子類別) 來檢驗資料的類型, 例如我們想要得知 myData 變數中的資料類型。 • 輸出結果為 String, 即是指字串類型。

  27. 數值 • 數值包括正負整數與正負實數 (包含小數點的數字)。數值資料類型不能有英文字母、雙引號或是其它任何除了小數點「.」與負號「-」之外的特殊符號。如以下程式都是指定數值類型的資料做為變數值:

  28. 數值 • 以下是錯誤的寫法:

  29. 布林值 • 布林值類型的資料只有兩種, 一為 true (真), 一為 false (偽)。在比較運算式中, 布林值常被用來顯示結果: • 由於 10<20 ( 「<」 屬於比較運算子, 請參考 20-3 的說明) 這個運算式是成立的 (數字 10 的確小於 20) , 所以如上的程式會傳回 true 的值, 並顯示於輸出視窗中。

  30. Null • Null 資料類型只有一個值, 就是 null, 這個值代表沒有資料, 它有一些比較特殊的應用, 例如將它當做函數的參數, 讓函數執行時忽略該參數...等。

  31. undefined • undefined 資料類型只有一個值, 就是undefined。當變數尚未被賦予任何值時, 其預設值就是 undefined (未定義)。以下程式就是宣告變數後尚未指定其值, 就要求輸出其值, 因此得到的值就會是 undefined。

  32. 影片片段 • 影片片段資料類型是 ActionScript 中唯一具有實體圖像的資料型態, 它記錄了影片片段實體的變數、屬性 (Properties) 與方法 (Method)。在以下的程式裡, 我們把一個實體名稱為 fish 的影片片段實體 X 座標位置資料, 存入名為 myVar 的變數中:

  33. 物件 • 此處物件是指 ActionScript 中虛擬的物件, 與我們在舞台中繪製的形狀填色、線條之類的物件不同。在 Flash 的 ActionScript 中, 使用者可以創造程式中虛擬的物件, 藉以統一控制各種屬性。物件的每個屬性都有名稱和值, 而屬性的值可以是任何資料類型。

  34. 關於資料類型的轉換 • 由於 ActionScript 對於資料類型的規定並不是那麼嚴格, 因此有時候依據程式執行需要, Flash 會自動幫你做一些資料類型的轉換, 這個動作會讓某些原來看似不合理的程式能夠正常執行, 例如:

  35. 20-3 運算子 • 所謂的運算子, 就是加、減、乘、除之類的符號, 但在 ActionScript 中還有許多功能特殊的運算子, 其中有的運算子意義與數學裡的運算符號並不一致, 舉個最普通的例子, 就是「=」運算子, 在 ActionScript 中它屬於「指定運算子」 , 功用是在指定值給變數, 而不像在數學裡「=」是「等於」的意思。

  36. 運算子 • Flash 中的運算子都列在運算子類別下, 依功能分類分別是比較運算子、位元運算子、數學運算子、邏輯運算子、指定及其他運算子。以下我們僅選擇最基本的數學、比較、邏輯 3 類加以列表說明。

  37. 數學運算子

  38. 比較運算子

  39. 邏輯運算子

  40. 20-4 判斷條件與迴圈 • 判斷條件與迴圈是讓程式根據各種條件, 判斷是否執行某些程式, 或是決定程式執行順序的語法。你可以在陳述式/ 判斷條件/ 迴圈類別中找到這類指令, 以下我們僅針對最常使用的 if條件式加以詳述, 並列表補充說明其餘同類語法。

  41. if 條件式 • if 指令的運作方式是:當判斷條件傳回值為 true 時, 執行接下來大括弧中的程式, 若傳回 false , 就不執行該程式。 • 因此 if 指令只有一個參數需要設定, 就是判斷條件, 你必須在該欄位中輸入用來判斷的運算式、變數, 而且必須注意判斷條件欄位中的運算式或變數, 必須傳回布林值 (也就是 true 或 false), 這樣 if 指令才能正常進行判斷。

  42. if 條件式

  43. if 條件式 • 再以一個簡單的範例來說明:

  44. 其他常用判斷條件或迴圈指令

  45. Flash 獨有的影格迴圈 • 前述的迴圈指令都是純程式製作的迴圈, 但是 Flash 本身含有時間軸, 故其順序播放的特性提供了另一種迴圈方式, 也就是利用 goto 指令來製造影格迴圈。 • 例如我們在第 5 格影格設定了影格動作, 又在動畫最後 1 格以 goto 指令讓動畫跳到第 3 格影格播放, 這樣動畫會一直在第 3 階到最後 1 格影格間重複播放而形成迴圈。

  46. Flash 獨有的影格迴圈 • 迴圈中的程式, 即影格 5 的影格動作, 就會一再地被執行。不過影格迴圈會有明顯的時間差, 不像一般迴圈指令執行的頻率那麼高。

  47. 20-5 Flash 的路徑階層觀念 • 由於使用 ActionScript 操控各類實體 (影片片段、按鈕、文字) 時, 必須正確指定目標 (包含實體的路徑和名稱), 而路徑一旦錯誤, 實體就接收不到 ActionScript 的訊息, 也無法依據程式執行動作。由於 Flash 動畫的元素眾多、結構龐大, 再加上 Flash 還可以動態載入外部檔案, 所以弄清楚舞台上實體的路徑階層, 就變成使用 ActionScript 重要的基本知識之一了。

  48. Flash 的路徑階層觀念 • 我們在第 19 章的練習中並不需要指定任何目標實體, Flash 就知道 stop 或 goto 指令是要控制整個主動畫。 • 這是因為全域函數/時間軸控制項類別下的指令, 主要就是針對整個時間軸主動畫設計的, 所以這些指令中不需要指定目標參數。

  49. Flash 的路徑階層觀念 • 此外當你沒有指定程式的作用目標時, ActioinScript 就會把該程式所在位置的實體 (19-4 節程式所在的位置是主動畫的時間軸上) 當成作用目標。 • 有鑒於 Flash 路徑階層觀念的重要性, 以下我們詳加說明 Flash 動畫中各階層的關係, 以奠定你日後活用 ActionScript 的基礎。

  50. 階層 • 每個新開啟的 Flash 文件都有一個時間軸主動畫, 這個主動畫可以隨著影格、場景的增加一直延伸。原始的時間軸主動畫, 在 Flash 階層 (level) 中名為「_root」, 也就是根目錄動畫。在 19-4 節範例檔 19-02.fla 中, 若以指定目標的方式撰寫, 可寫成如下的程式:

More Related