AS中的键盘事件
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,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).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |