AS中的键盘事件和鼠标事件相似,都是定义好的字符串,也可以是KeyboardEvent的属性,只有两种:
KEY_DOWN
KEY_UP
我们可以在一个特殊的对象上监听键盘事件,就像监听鼠标事件一样。为何实现这个功能我们可以设置对象焦点,以便能够捕获这些事件,可以这样写:stage.focus=r;
在很多情况下,监听键盘事件是否有焦点很有意义的。实现它只需直接对舞台进行键盘侦听
例如下面的代码:
package{
import flash.display.Sprite ;
public class clsRect extends Sprite
{
public function clsRect()
{
graphics.lineStyle(1,0);
graphics.beginFill(0x999999);
graphics.drawRect(0,0,200,100);
graphics.endFill();
}
}
}
package{
import flash.display.Sprite ;
import clsRect;
import flash.events.MouseEvent ;
import flash.events.KeyboardEvent;
public class ex6 extends Sprite
{
private var r:clsRect;
public function ex6()
{
r=new clsRect();
r.x=50;
r.y=50;
stage.addChild(r);
stage.addEventListener(MouseEvent.CLICK ,f);
r.addEventListener(KeyboardEvent.KEY_DOWN ,f_down);
}
private function f(e:MouseEvent )
{
stage.focus=r;
}
private function f_down(e:KeyboardEvent )
{
if(e.shiftKey)
{
switch(e.keyCode)
{
case 37:r.x-=10;break;
case 38:r.y-=10;break;
case 39:r.x+=10;break;
case 40:r.y+=10;break;
}
}else{
switch(e.keyCode){
case 37:r.x--;break;
case 38:r.y--;break;
case 39:r.x++;break;
case 40:r.y++;break;
}
}
}
}
}
通常人们关心的是按下的时什么键而不是你按下了键,使用键盘事件处理有几种方法可以读取输入的信息,前面说过,一个事件可以有一个事件对象来触发,该对象包括触发该事件的数据,在键盘上事件中有两个相关的属性,事件所涉及的:字符码(charCode)和键码(keyCode).
字符码表示是按下键所表示的真正字符,例如,用户按下“a”键,字符码就是“a”,如果用户同时按住shift键时,这样字符码就是“A”。
键码指按键所代表的数值,如果用户按下“a”键,它所对应的键码是65,无论是否按着其他键。