Flash5ActionScript教程 四十五


b>捕获按键技术

  用户观看交互动画时,不仅使用鼠标,而且也会用键盘操作。因此,要设计复杂的交互动画,除了能够准确“感知”用户的鼠标位置外,还要能够捕获用户的按键。也就是说,除了掌握鼠标定位技术外,我们还必须掌握按键捕获技术。使用Flash5预定义的Key(键)对象的方法可以方便地检测用户的最后按键。Key对象不需要构造函数,要使用它的方法,直接调用该对象即可,如下所示:
Key.getCode();
  使用预定义Key对象,可以获得按键的虚拟键码或ASCII码值:
要获得最后按键的虚拟键码,使用Key对象的getCode方法。
要获得最后按键的ASCII码值,使用Key对象的getAscii方法。

  键盘上每一个物理键都有一个虚拟键码(如左箭头键的虚拟键码是37)。使用虚拟键码,可以确保动画的控制在每一种键盘上都是相同的。

  ASCII(美国信息交换用标准代码)码值被分配给每个字符集的前127个字符。ASCII 码值提供的是屏幕上每一种字符的信息。例如,字母“A”和字母“a”拥有不同的ASCII码值。

  Key.getCode方法常用在onClipEvent事件处理程序中。把keyDown作为参数传递给事件处理程序,该事件处理程序即指令动作脚本,仅当真正按下了某个键时才检查最后按键的值。下面这个动画使用Key.getCode创建太空船的导航控制
6 在工具箱Actions类型中双击if动作。
7 在Condition(条件)参数框中单击,在工具箱列表中选择Objects(对象),然后选择Key,双击getCode。
8 在工具箱Operators(操作符)类型中双击相等操作符(==) 。
9 在相等操作符右边输入虚拟键码(本例输入32)。
得到的代码应该如下所示:
onClipEvent(keyDown) {
if (Key.getCode() == 32) {
}
}
10 为设置的按键选择一个要执行的动作(例如,设置当空格键(32)被按下时执行跳转到下一帧动作)。
得到的代码应该如下所示:
onClipEvent(keyDown) {
if (Key.getCode() == 32) {
nextFrame();
} }

附录:键盘键与虚拟键码对照表
字母和数字键
数字小键盘的键
功能键
其它键
键码 键码 键码 键码
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87 -- -- -- ; : 186
X 88 -- -- -- -- = + 187
Y 89 -- -- -- -- - _ 189
Z 90 -- -- -- -- / ? 191
0 48 -- -- -- -- \Q ' 192
1 49 -- -- -- -- [ { 219
2 50 -- -- -- -- \ | 220
3 51 -- -- -- -- ] } 221
4 52 -- -- -- -- "" " 222
5 53 -- -- -- -- -- --
6 54 -- -- -- -- -- --
7 55 -- -- -- -- -- --
8 56 -- -- -- -- -- --
9 57 -- -- -- -- -- --