重點講解 講義內容

何謂AS

  1. ActionScript (動作指令):
    • ActionScript源於JavaScript,簡稱AS,是Flash獨特的程式語言。
      如今發展到ActionScript3.0,臻至於完備 (CS3版本為AS3,用法與本講義使用Flash8版本的AS2大有不同)。
    • 運用AS,可獨立製作出一個互動功能的Flash介面,ex: 繪圖板、行事曆,但若要儲存修改過的數值,
      例如儲存做好的圖或行事曆,則必須與後端程式連結,由後端程式進行存取動作,或只能本機存取。
    • 將Flash中變數送到後端程式進行儲存,難度高且涉及層面廣(包含要會寫程式、建資料庫),
      因此本課程設計的測驗題庫雖有計分功能,關閉Flash後便會清除,無法紀錄。
  2. AS的程式碼編輯面板:
    • 在Flash當中,是在動作面板來編輯AS的程式碼的。
    • 程式碼可寫在影格影片片段元件按鈕元件中。方法:點選目標>打開動作面板>寫入語法。
      因此在動作面板上編輯AS程式碼之前,必須先確定滑鼠的焦點是放在影格還是元件上。
    • ActionScript無法寫在圖像元件上,也不能寫在非關鍵影格之上。
      滑鼠焦點若放在圖像元件上,或放在沒有影格的時間點上,再開啟動作面板,也不能寫入AS。
  3. 程式碼當中的備註:
    • 動作面板中,前置 // 這個符號的這一行文字便不會被執行,文字會呈現灰色ex: //到第一格播放
      通常是用以放在一整段要註解的語法的最後面,用文字敘述備註這一段語法的用途。
    • 要換行的大量備註文字,則是在文字區塊的前面加上 /* ,在結尾加上*/ (用法不同於單行備註)。
    • 備註的功能只是為了讓編輯者自己看了方便,且日後修改時不會忘記自己寫的是啥東西。
    • 有的編輯者寫備註,目的是在告知下載這個fla檔的其他編輯者:哪些部分是可以修改的變數,哪些不要動。
  4. AS編寫注意事項:
    • AS程式碼當中,字母大小寫有差。 ex: gotoAndPlay(1); 寫成 Gotoandplay(1); 就失效了。
    • AS程式碼中的每個符號標點都有意義,請特別注意。ex:分號; 是每段指令結束時必加的結尾符號。
    • AS程式碼中的標點符號必然是半型符號。 除非是被設定成"字串"來使用。
    • 括號 {} () 分號 ; 逗號 , ,以及加 +-*/=…這些符號前後用空白鍵稍微排版一下無妨。
    • 千萬注意!有更多的指令,它該大寫就大寫,該小寫就小寫;該連在一起的就不能按空白鍵分開;
      該加底線 _ 的就不能用 - 替代;用 . 點隔開的程式碼,前後都絕對都不能有空白鍵。

Top

定義名稱

  1. 定義名稱:
    • 定義名稱的方法:點選影格,或點選可定義名稱之物件後,在屬性面板<實體名稱>這輸入欄位可寫入名稱。
    • 定義名稱的對象:關鍵影格、影片片段元件、按鈕元件、動態文字物件。
      影格--- 關鍵影格可定義名稱。
      元件--- 影片片段元件按鈕元件可定義名稱,圖像元件不可。
      文字--- 動態文字輸入文字可定義名稱。
      P.S:動態文字、輸入文字,都屬於動態文字的一種。
      並非指文字做的動畫,而是定義名稱或變數之後,可透過AS來控制其文字樣式與內容呈現的"空白"文字欄位。
      ex: 〈面積體積算算看〉當中的正解,就是會配合AS設定的解答題號,來改變正解所顯示的數字。
    • 定義名稱的用途: 定義名稱後,可用AS控制這個指定的目標。
      ex: 將主場景中,某影格定義名稱FrameX > 在主場景舞台的按鈕上,寫入gotoAndPlay("FrameX");
  2. 定義名稱的性質與限制:
    • 定義名稱(實體名稱),不等同於元件實體對象(元件名稱)。
    • 既然定義物件名稱是為了要給AS使用,則定義名稱的大小寫當然也有差別,因為它亦屬於AS程式碼。
      P.S: 正確說法,應該說定義名稱本身也是AS程式碼。
      其實Flash整個軟體內所有操作、設定,基本上全部都是程式碼,
      只不過是透過物件導向模式,去編譯成我們現在這麼方便操作的軟體介面。
      然而物件導向終究有其極限,學到越高階的Flash動畫設計,就不得不慢慢探向程式碼的無限深淵了…
    • 定義名稱不要取中文名字 (寫程式時不方便)。
    • 定義名稱首字不得使用數字。
    • 定義名稱不要用到 - 這個符號也不可用空白鍵,可使用 _ 底線這個符號去分隔兩個意義單字。
    • 定義名稱若與系統既定名稱相衝,則Flash會發出警告訊息,因此不用強記。
    • 同場景(層級)之下,不同的影格其定義名稱不得重複、不同的元件其定義名稱不可重複;
      影格與元件可以有重複的定義名稱,但不建議採用,以免兩者混淆。
    • 一段移動補間動畫的區段中,各個關鍵影格中的同一個元件,務必都要定名,也務必定名一致。
      因為移動補間動畫,是將頭尾關鍵影格中的元件,視為"同樣的"元件在做一段動畫,所以名稱務必一致。
    • 建議定義名稱,採用有意義的單字命名,自己也比較容易記憶。

Top

層級概念

  1. 何謂層級:
    • Flash當中所謂的層級,慣以場景稱之,類似我們電腦當中的資料夾。
    • 層級不是我們之前學的圖層概念。它跟圖層以及圖層中的物件前後排列順序,完全無干哦!
    • 主層級就是我們已知的主場景次層級就是主場景之下的元件內部場景
      例:以之前學過的〈扇形拼半圓動畫〉為例。
      主場景(主層級)中放置的是扇形_MC
      在舞台上快點扇形_MC兩下進入其中的場景,即為次層級
      再進入扇形_MC場景中的元件的內部,則為第3層場景
  2. Flash當中預設的兩種「層級指定方式」:
    • _root = 主層級 = 主場景。層級指定方式,是走絕對路徑。
    • _parent = 上一層級 = 上一層場景。層級指定方式,是走相對路徑。
    • 將以上兩種層級的指定方式,結合指定的定義名稱,便成為一個"路徑"
      再結合指令的操作,便可隨心所欲在任何層級之場景中,指定其他層級場景的動作。

      注意!必須考量到時間順序。假如寫入語法時被指定的對象根本還沒出現,語法會失效甚至會造成Flash關閉。
    • 我們之前下指令不必用到路徑、定義名稱,是因為指令只用以控制它所在的那個場景,
      但之後一定會用到,因此務必理解定義名稱以及層級的概念。

Top

指令運用

  1. 基本指令:
    • stop(); // 停止播放。可設定在想要停止的影格當中。
      若停止的時間點上有影片片段,影片片段中的動畫不受影響(因為是位在不同階層當中)。
      其下的其他指令不會被執行,因此它永遠放置於動作面板中,整段指令的最後面。
    • play(); // 播放。可開始跑動停止的影格。
    • gotoAndStop(); // 跳至並停止。
      gotoAndPlay(); // 跳至並播放。
      括弧內可加數字表示第幾影格,加"影格定義名稱"亦可指定。
    • stopAllSounds(); // 停止所有聲音。
  2. 按鈕上的AS的運用 (AS3.0之後停用此類指令):
    • on(release) { stop(); } //點選按鈕後停止播放。
      ex:按鈕位於主場景中,就是主場景停止播放。
    • on(release) { play(); } //點選按鈕後播放。
      ex:按鈕位於主場景中,就是主場景播放。
      on(release) { gotoAndStop(5); } //點選按鈕後停止在第5格。
      ex:按鈕位於主場景中,就是主場景停止在第5格。
      on(release) { gotoAndPlay("someFrame"); }//點選按鈕後,跳至並播放某影格。
      ex:按鈕位於某影片片段當中,就是該影片片段跳至並播放第5格。
      someFrame指的是某影格的定義名稱,請注意它有被雙引號包住。
    • on(release) { someMC.stop(); } //點選後,使某影片片段停止。
      on(release) { someMC.play(); } //點選後,使某影片片段播放。
      on(release) { someMC.gotoAndStop(5); } //點選後,使使某影片片停止在第5格。
      on(release) { someMC.gotoAndPlay("someFrame"); } //點選後使某影片片段跳至並播放某格。
      someMC指的是某一影片片段的定義名稱,請注意!someMC後面有個小點作銜接。
    • on(release) { someMC._visible = true; } //點選後,使某影片片段"顯示"。
      on(release) { someMC._visible = false; } //點選後,使某影片片段"隱藏"。
      此用法可用在點選正確答案的按鈕時,顯示"恭喜您答對了";點選錯誤答案時,顯示"答錯了"。
      同時要在someMC開始插入的時間點,先預設影格AS為someMC._visible = false; 隱藏起來。
  3. 影格中針對影片片段的AS運用:
    • someMC.onRelease = function() { gotoAndPlay("someFrame"); }
      //點選某影片片段後,該影片片段所在的場景就會跳至某影格,並開始播放。
      someMC.onRelease = function() { someMC.gotoAndPlay("someFrame"); }
      //點選某影片片段後,某影片片段就會跳至其本身的某影格,並開始播放。
    • 以上用法將someMC當作按鈕來使用了,甚至更方便、更能靈活運用。
    • 若要像按鈕一樣定義感應範圍,請直接做一塊透明色塊襯底。
    • 此用法必須在該影片片段與該影格位於同一個時間點上時使用。
    • 此用法若是針對移動補間動畫的MC,則該段移動補間的關鍵影格中的MC都要定義名稱才行。

Top

本教材講義網頁與範例皆由Unas 製作,歡迎連結分享或當作授課講義。
本網頁將會依學員每一日學習的進度,陸續進行教材的補充。講義若有錯誤,請不吝指正,謝謝。

2008/04/25 Upload.