[as3]as3代码操作键盘事件的范例
在AS3中,键盘事件是由KeyboardEvent类来处理的,属于flash.events包里面,有两种类型的键盘事 件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP,对于键的代码获得我们通过keyCode这个属性
其实键盘事件使用起来还是相当方便,下面直接看实例:
建立一个新的AS文件main.as,输入下面代码:
- package {
- import flash.display.Sprite;
- import flash.events.KeyboardEvent;
- import flash.ui.Keyboard;
- import flash.events.MouseEvent;
- public class main extends Sprite {
- private function keyEvt(event:KeyboardEvent):void {
- trace(event.keyCode);
- switch (event.keyCode) {
- case Keyboard.UP :
- event.target.y-=10;
- break;
- case Keyboard.DOWN :
- event.target.y+=10;
- break;
- case Keyboard.LEFT :
- event.target.x-=10;
- break;
- case Keyboard.RIGHT :
- event.target.x+=10;
- break;
- default :
- break;
- }
- }
- public function main():void {
- var sp:Sprite=new Sprite();
- sp.graphics.beginFill(0x0000ff);
- sp.graphics.drawRect(200,200,100,100);
- sp.graphics.endFill();
- addChild(sp);
- sp.buttonMode=true;
- sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt);
- }
- }
- }
以上代码主要功能为绘制一个矩形,然后通过键盘的方向键控制其运动。关于如何将这文档类运用到FLA文件中去,我这就不啰嗦了。值得注意的是,我这 里的sp为一个sprite类型的实例,它的buttonMode也设为了True,因此我们在运行的时候首先先让这个实例获得焦点,然后才可以按下方向 键控制其运动,如果我们不将buttonMode设为true的话,即使我们鼠标点击后都不可以让其进行运行,除非我们通过stage.focus=sp 来指定当前焦点对象。但是这在实例周围会有一个焦点的框框,而且鼠标一旦点击后将会失去焦点,后就再也无法通过键盘进行移动。或许说得有点啰嗦,但大家试 一试就可以发觉。我一直想找一个去掉这高亮显示的框框,可惜一直未找到有效的方法,大家如果有好的请告诉我。
在键盘事件中除了keyCode还有一个属性比较实用,就是keyLocation,这个是确定此键再键盘上的位置,特别是在shift、ctrl、alt上面,由于有左右两边,应该此属性可以告诉你你当前按下的是左边的还是右边的。
去掉焦点边框后并单击重新获得焦点代码示例:09-2-28补
- package {
- import flash.display.Sprite;
- import flash.events.KeyboardEvent;
- import flash.ui.Keyboard;
- import flash.events.MouseEvent;
- public class main3 extends Sprite {
- private function keyEvt(event:KeyboardEvent):void {
- trace(event.keyCode+"|"+event.keyLocation);
- switch (event.keyCode) {
- case Keyboard.UP :
- event.target.y-=10;
- break;
- case Keyboard.DOWN :
- event.target.y+=10;
- break;
- case Keyboard.LEFT :
- event.target.x-=10;
- break;
- case Keyboard.RIGHT :
- event.target.x+=10;
- break;
- default :
- break;
- }
- }
- private function clickFun(evt:MouseEvent):void
- {
- stage.focus=Sprite(evt.target);
- }
- public function main3():void {
- var sp:Sprite=new Sprite();
- sp.graphics.beginFill(0x0000ff);
- sp.graphics.drawRect(200,200,100,100);
- sp.graphics.endFill();
- addChild(sp);
- stage.stageFocusRect=false;
- stage.focus=sp;
- sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt);
- sp.addEventListener(MouseEvent.CLICK,clickFun);
- }
- }
- }
源自 http://www.cnblogs.com/YY-1028/archive/2012/04/28/2475485.html
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例