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,无论是否按着其他键。

charCode:按下或释放的键的字符代码值.
keyCode:按下或释放的键的代码值.
{
数字0-9: 48-57
a-z:  65-90
BackSpace:8  Tab:9  Clear:12  Enter13  Shif16  Ctrl17  Alt18  CapsLock20  Esc27  Space32  PageUp33  PageDown34
End35  Home36  左37  上38   右39  下40  Insert45  Delete46  Help47  Numlock144   :186  ;187  -=189   ~192  [219  
\220  ]221   '"222
小键盘:0-9:96-105
*106  +107  Enter108  -109  .110  /111
F1-F15:112-126
}
keyLoction:指示键在键盘上的位置.
ctrlKey:指示Ctrl键是处于活动状态(true)还是非活动状态(false).
shiftKey:指示Sift键是处于活动状态(true)还是非活动状态(false).