当你需要通过键盘和动画产生交互时,比如,利用方向键控制游戏中的角色,就需要借助键盘(Key)对象获取按键的内容,然后利用Key对象的方法控制动画。本节将详细讲解Key对象并通过几个实例讨论通过Key对象在动画中产生键盘交互的方法。
1.键盘对象的方法详解
Key对象包括以下6种常用的方法:
(1)Key.getAscii()
语法:Key.getAscii();
功能:返回最近被按下或松开的按键所代表的ASCII值。
通过Key.getAscii()方法可精确地传回字符值。当键盘上有键被按下时,该按键会对应到一个ASCII码,例如,字母A键对应的ASCII值为97,你可以通过Key.getAscii()方法返回该按键对应的ASCII值。
(2)key.getCode()
语法:key.getCode();
功能:返回最近被按下或松开的按键的对应码。
如果你只想知道用户是否按下某个键而不理会它的ASCII值,那么,key.getCode()最适合你用。Flash替每个按键都赋予一个对应码,例如,按键A的对应码是65,按键Shift的对应码是16。key.getCode()的返回值就是这些按键的对应码。在Flash的帮助文档中可以查到关于按键对应码的详细信息。
Flash事先定义了一组常量(Key对象的属性)来存储一些常用键按键的对应码,例如常量Key.SPACE就等于32,因此当你需要在程序中应用这些按键时,可以直接使用这些常量,而不必再查阅它们的按键对应码。下面是一些按键常量的名称和意义,如表7-2-1所示。
表7-2-1
属性(按键常量)
意义
Key.BACKSPACE
与 Backspace 键的键控代码值 (8) 关联的常量。
Key.CAPSLOCK
与 Caps Lock 键的键控代码值 (20) 关联的常量。
Key.CONTROL
与 Ctrl 键的键控代码值 (17) 关联的常量。
Key.DELETEKEY
与 Delete 键的键控代码值 (46) 关联的常量。
Key.DOWN
与向下箭头键的键控代码值 (40) 关联的常量。
Key.END
与 End 键的键控代码值 (35) 关联的常量。
Key.ENTER
与 Enter 键的键控代码值 (13) 关联的常量。
Key.ESCAPE
与 Escape 键的键控代码值 (27) 关联的常量。
Key.HOME
与 Home 键的键控代码值 (36) 关联的常量。
Key.INSERT
与 Insert 键的键控代码值 (45) 关联的常量。
Key.LEFT
与左箭头键的键控代码值 (37) 关联的常量。
Key.PGDN
与 Page Down 键的键控代码值 (34) 关联的常量。
Key.PGUP
与 Page Up 键的键控代码值 (33) 关联的常量。
Key.RIGHT
与右箭头键的键控代码值 (39) 关联的常量。
Key.SHIFT
与 Shift 键的键控代码值 (16) 关联的常量。
Key.SPACE
与空格键的键控代码值 (32) 关联的常量。
Key.TAB
与 Tab 键的键控代码值 (9) 关联的常量。
Key.UP
与向上箭头键的键控代码值 (38) 关联的常量。
(3)key.isDown()
语法:key.isDown(keyCode);
功能:侦测键盘上指定的按键是否被按下,如果返回值为true则表示被按下。
KeyCode可以是按键对应码,也可以是如7-2-1所示的按键常量。
(4)key.isToggled()
语法:key.isToggled(keyCode);
功能:侦测键盘上的Caps Lock或Num Lock的指示灯是否亮着。
例如:
onClipEvent(enterFrame){
if(key.isToggled(144){
this.stop();
}
}
上面这段动作脚本的功能是,当键盘上的Num Lock指示灯是亮着时,影片对象动画停止。
(5)key.addListener()
语法:key.addListener(实例名);
功能:将某个对象赋予响应按键事件功能,实例名可以是指定的按钮、影片剪辑(包括_root)、文字字段甚至是自定义对象的实例名称。
除了按钮和影片剪辑可以接收键盘事件外,对于那些无法接收除了按键信息的对象,例如,自定义对象和文字字段对象等,都可以利用key.addListener()方法赋予它们接收和处理按键信息的能力。Key对象提供onKeyDown和onKeyUp两个事件处理程序,让通过key.addListener()方法指定响应Key事件的实例使用。
(6)key.removeListener()
语法:key.removeListener(实例名);
功能:取消指定实例响应Key事件的功能。