4.判断按键
既然是游戏,当然就要响应玩家的各种反应,除了鼠标,最直接的就是键盘了。响应键盘无非是判断玩家按下了哪一个键或者组合键,要实现这些其实很简单,我们既可以通过按钮或MC的事件来响应按键,也可以通过帧上的动作来响应,举例说明:
(1)按钮的keyPress方法:
先说按钮,按钮除了响应鼠标的一些动作(如:rollOver,release...)之外还有几个是响应固定按键的(如Enter,Left,Home,PageDown...),下面我们就来制作一个。建立一个按钮,拖到场景中,捆绑下面的AS:
on (keyPress "") {
trace("按下了Left键");
}
这样当我们在测试的环境下按下左方向键后,output窗口就会显示出"按下了Left键"。下面说说怎样使MC响应按键更复杂的按键。
(2)MC响应单个按键:
onClipEvent (keyDown) {
if (Key.isDown(72)) {
trace("按下了H键");
}
}
这样在测试的环境下按下H键,output窗口就会显示出"按下了H键",其中72是H键的keyCode值(其他按键的keyCode值将在附录中给出),如果不知道某个键的keyCode值也没关系,Flash为我们提供了getCode函数,将上面AS中的72替换成Key.getCode("H")会得到同样的效果。
源代码下载
(3)MC响应组合键:
onClipEvent (keyDown) {
if (Key.isDown(72) && Key.isDown(17)) {
trace("您按下的组合键是Ctrl+H");
}
}
在测试的环境中按下Ctrl+H键,output窗口就会显示出"您按下的组合键是Ctrl+H"
(4)利用帧上的动作响应按键:
新建一个flash文件,利用上面讲过的:在第一帧写AS,第二帧创建内容帧的方法,使影片形成循环以便随时进行判断,然后在第一帧中写入下面的几组代码,分别进行试验;如果你使用的是MX,也可以不建立第二帧,而是用试验代码代替 _root.onEnterFrame=function(){...}中的"..."来达到同样的效果:
//①
trace(Key.getCode());
//②
if (Key.isDown(72)) {
trace("按下了H键");
}
//③
if (Key.isDown(72) && Key.isDown(17)) {
trace("按下了Ctrl+H组合键");
}
//④
if (Key.isDown(17)) {
if (Key.isDown(72)) {
temp = "+H";
}
if (Key.isDown(71)) {
temp = "+G";
}
trace("按下了Ctrl"+temp+"键");
}
注:对于MC的(2)(3)两种情况,可以将keyDown事件改为enterFrame事件,其中(2)还可以替换为keyUp事件.
附:键码值表
| 字母和数字键的键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
|
A |
65 |
J |
74 |
S |
83 |
1 |
49 |
| B |
66 |
K |
75 |
T |
84 |
2 |
50 |
| C |
67 |
L |
76 |
U |
85 |
3 |
51 |
| D |
68 |
M |
77 |
V |
86 |
4 |
52 |
| E |
69 |
N |
78 |
W |
87 |
5 |
53 |
| F |
70 |
O |
79 |
X |
88 |
6 |
54 |
| G |
71 |
P |
80 |
Y |
89 |
7 |
55 |
| H |
72 |
Q |
81 |
Z |
90 |
8 |
56 |
| I |
73 |
R |
82 |
0 |
48 |
9 |
57 |
| 数字键盘上的键的键码值(keyCode) |
功能键键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
|
0 |
96 |
8 |
104 |
F1 |
112 |
F7 |
118 |
| 1 |
97 |
9 |
105 |
F2 |
113 |
F8 |
119 |
| 2 |
98 |
* |
106 |
F3 |
114 |
F9 |
120 |
| 3 |
99 |
+ |
107 |
F4 |
115 |
F10 |
121 |
| 4 |
100 |
Enter |
108 |
F5 |
116 |
F11 |
122 |
| 5 |
101 |
- |
109 |
F6 |
117 |
F12 |
123 |
| 6 |
102 |
. |
110 |
|
|
|
|
| 7 |
103 |
/ |
111 |
|
|
|
|
| 控制键键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
| BackSpace |
8 |
Esc |
27 |
Right Arrow |
39 |
-_ |
189 |
| Tab |
9 |
Spacebar |
32 |
Down Arrow |
40 |
.> |
190 |
| Clear |
12 |
Page Up |
33 |
Insert |
45 |
/? |
191 |
| Enter |
13 |
Page Down |
34 |
Delete |
46 |
`~ |
192 |
| Shift |
16 |
End |
35 |
Num Lock |
144 |
[{ |
219 |
| Control |
17 |
Home |
36 |
;: |
186 |
\| |
220 |
| Alt |
18 |
Left Arrow |
37 |
=+ |
187 |
]} |
221 |
| Cape Lock |
20 |
Up Arrow |
38 |
,< |
188 |
'" |
222 |