響應鍵盤的方法作為AS中的一個重要組成部分,在如今已經越來越廣泛的使用,尤其是在 FLASH游戲制作中,如果缺少了響應鍵盤的方法,那是不可能的,而響應鍵盤的方法主要的四種,分別是:
1、利用按鈕進行檢測
2、利用KEY對象
3、利用鍵盤偵聽的方法
4、利用影片剪輯的keyUp和keyDown事件來實現響應鍵盤
只有熟練掌握了這些方法,然後加以變通的話,就會得到很多意想不到的效果,下面我就結合理論和自己的想法簡要的介紹一下。
第一種響應鍵盤的方法:利用按鈕進行檢測來實現響應鍵盤
在按鈕的on事件處理函數中不但可以對鼠標事件作出響應,而且可以對鍵盤事件作出響應。 如在按鈕的動作面板中加入如下所示的代碼,在敲擊鍵盤上的X鍵時輸出窗口中將提示:X is pressed
在按鈕上加上:
on (keyPress "x") {
trace("X is pressed");
}
但是要注意的是:檢測鍵盤上的字母鍵時,字母都應為小寫。如果要檢測鍵盤中的特殊鍵, Flash中有一些專門的代碼來表示它們,下面列出了一些常用的功能鍵的表示代碼:
如要檢測鍵盤上的鍵,可以使用下面的ActionScript:
on (keyPress "") {
trace("Left is pressed");
}
另外,你可以在一個按鈕中加入若干個on函數,也可以在一個on函數中結合多種事件,這使 您可以為按鈕定義自己熟悉常用的快捷鍵,如下所示:
on (release, keyPress "") {
_root.myMC.prevFrame();
}
on (release, keyPress "") {
_root.myMC.nextFrame();
}
上面的第一個語句實現單擊按鈕或按鍵盤上的左方向鍵,控制影片剪輯myMC回退1幀,而上面的第二個語句實現單擊按鈕或按鍵盤上的右方向鍵,控制影片剪輯myMC前進1幀。
第二種響應鍵盤的方法:利用Key對象來實現響應鍵盤的操作 (3lian素材)
利用按鈕檢測按鍵動作很有效,但是並不利於檢測持續按下的鍵,所以不適合於制作某些通過鍵盤控制的游戲。
這時,您就需要用到Key對象。Key對象包含在動作面板的“對象”/“影片”目錄下面,它由Flash內置的一系列方法、常量和函數構成。使用Key對象可以檢測某個鍵是否被按下,如要檢測左方向鍵是否被按下,可以使用如下ActionScript:
if (Key.isDown(Key.LEFT)) {
trace("The left arrow is down");
}
函數Key.isDown返回一個布爾值,當該數中的參數對應的鍵被按下時返回true,否則返回false。常量Key.LEFT代表鍵盤上的左方向鍵。當左方向鍵被按下時,該函數返回true。
Key對象中的常量代表了鍵盤上相應的鍵,下面列出了一些基本的常量:
一些功能鍵的表示:
Key.BACKSPACE Key.ENTER Key.PGDN
Key.CAPSLOCK Key.ESCAPE Key.RIGHT
Key.CONTROL Key.HOME Key.SHIFT
Key.DELETEKEY Key.INSERT Key.SPACE
Key.DOWN Key.LEFT Key.TAB
Key.END Key.PGUP Key.UP
以上是鍵盤上的功能鍵,那麼如何表示鍵盤上的字母鍵呢?
Key對象提供了一個函數Key.getCode來實現這一功能,如下所示:
if (Key.isDown(Key.getCode("x"))) {
trace("X is pressed");
}
上面腳本的意思就是,利用Key.getCode函數來告訴系統你是否按下了x鍵,如果按下了x鍵以後,函數Key.isDown則會返回true,在輸出窗口就會輸出X is pressed。
第三種響應鍵盤的方法:利用鍵盤偵聽的方法來實現響應鍵盤(個人習慣用這種方法)
假設在影片剪輯的onClipEvent(enterFrame)事件處理函數中檢測按鍵動作,而影片剪輯所在的時間軸較長,或計算機運算速度較慢,就有可能出現這種情況:即當在鍵盤上按下某個鍵時還未來得及處理onClipEvent(enterFrame)函數,那麼按鍵動作將被忽略,這樣的話,很多你想要的效果就會無法實現了。
另外,還有一個需要解決的問題就是,在某些游戲(如射擊)中,我們需要按一次鍵就執行一次動作(發射一發子彈),即使長時間按住某個鍵不放也只能算作一次按鍵,而Key對象並不能區別是長時間按住同一個鍵還是快速地多次按鍵。
所以如果要解決這個問題,就需要用到鍵盤偵聽的方法。你可以使用 “偵聽器(listener)”來偵聽鍵盤上的按鍵動作。