使用鍵盤來控制Movie Clip
(使用Button的on(keyPress)來處理鍵盤事件)

前言: 從本課程開始,我們主要在介紹如何使用ActionScript來控制Flash中的Movie Clip。
Movie Clip是Flash遊戲中最重要的元件。要打好遊戲程式設計的基礎,就必須熟悉如何使用ActionScript來控制Movie Clip

 


使用鍵盤來控制Movie Clip

即使是在目前滑鼠橫行的時代,市面上的遊戲還是有許多都是使用鍵盤作為操控的工具。
所以,在學習遊戲程式設計時,必須了解如何處理有關鍵盤的各種指令。

一般而言,當使用者按下鍵盤時,Flash就會發出事件的訊息,我們就針對某些特定的事件,撰寫對應的事件處理函式,來回應這些事件。
問題是,到底要在哪裡撰寫適當的事件處理函式呢?
Flash提供了兩種方式,讓我們可以撰寫有關鍵盤的事件處理函式。
第一種方式,是撰寫Button的on(keyPress)的事件處理函式。
第二種方式,是在Movie Clip的onClipEvent()中,以KeyDown 物件來偵測使用者按下那一個鍵,並針對該按鍵的鍵盤碼寫出對應的程式。


使用Button的on(keyPress)來處理鍵盤事件

範例如下:



請先用滑鼠左鍵在此 swf畫面點一下,再按左右方向鍵讓球移動


製作步驟如下

步驟 1

啟動Flash。
在第一格Frame輸入以下的程式碼,如圖 1所示


圖 1

步驟 2

隨便畫一個紅球,把它轉換為Movie Clip,並設其Instance Name為ball。
再設一個按鈕,把它轉為Button,然後把它放到場景之外,如圖 2所示


圖 2

步驟 3

在Button的Action中切換成專家模式,撰寫以下的程式碼,如圖 3所示


圖 3

Test Movie


程式說明:
在第一行的程式中on (keyPress "<Right>"),宣告這個函式要處理,按下右方向鍵的事件。keyPress代表鍵盤按下時所產生的事件,"<Right>"代表右方向鍵的鍵盤碼。
在接下來的{}大括號所包圍的程式區段,是這個函式的程式主體。這個命令句將主場景中,實體名稱為ball的Movie Clip實體(Instance),向右移五個像素點。_root代表主場景(或主時間線)。_x是Movie Clip的屬性之一,代表Movie Clip中心點的水平位置。
接下來的程式碼與之前的程式碼相近。唯一的差別只是在處理左方向鍵的事件,並把ball向左移。

在這邊要注意的有四點:

第一、 畫面的左上角為座標的原點,X軸向右遞增,向左遞減。Y軸向下遞增,向上遞減。

第二、 因為on(keyPress鍵盤碼)函式,以單一鍵盤碼為參數,所以,每一個不同的鍵盤事件,必須撰寫不同的事件處理函式。在這個例子中,我們要回應左方向鍵和右方向鍵兩個鍵所產生的事件,所以,必須撰寫兩個事件處理函式。

第三、 Flash 自5.0版開始,使用點表示法,作為場景中元件的指定方式,之前的版本則使用tellTarget的方式。點表示法,將整個Flash Movie視為一個階層式的架構,每一層以時間線作區隔。最上面一層為_root(即主場景或主時間線),放在主場景中的Movie Clip(切記:Movie Clip也有自己的時間線),就變成_root物件的屬性(物件導向程式設計的名詞,即物件中的資料),所以存取這個屬性時,必須以"點"作區隔。在這個範例中的ActionScript程式,我們以絕對表示法(即以_root作開頭)來存取ball這個實體。我們也可以使用相對表示法來存取ball這個實體。因為按鈕和ball實體位於相同一層的時間線,所以我們可以使用ball._x+=5;這樣的方式來移動ball這個實體。

第四、 雖然Flash會幫每一個在場景中的Movie Clip命名,但是養成好習慣,只要是要由程式控制的Movie Clip實體,最好都由您親自命名,而且要給個好名字。這樣在維護程式時,會比較容易。

 

下載原始檔

 


回課程目錄