在舞台上先做个名叫MC的影片剪辑元件 import flash.events.KeyboardEvent; import flash.events.Event;

//定义4个常量,分别表示键盘A、D、W、S const KEY_A:uint=65; const KEY_D:uint=68; const KEY_S:uint=83; const KEY_W:uint=87; //创建和引用对象 var key:Object =new Object; //定义运动的速度 var speed:Number =2; //注册键盘按下事件侦听器 stage.addEventListener (KeyboardEvent.KEY_DOWN,keyDown); //注册键盘释放事件侦听器 stage.addEventListener (KeyboardEvent.KEY_UP,keyUp); //注册enterFrame事件侦听器 this.addEventListener (Event.ENTER_FRAME,test); //当键盘按下时,动态创建键控代码为属性名,true为值的属性 function keyDown(e:KeyboardEvent):void {  key[e.keyCode]=true; } //当键盘释放时,根据属性名,删除属性 function keyUp(e:KeyboardEvent):void {  delete key[e.keyCode]; } //enterFrame事件侦听器 function test(e:Event):void {  //如果按下A键  if(key[KEY_A])  {   mc.x-=speed;  }  //如果按下D键  if(key[KEY_D])  {   mc.x+=speed;  }  //如果按下W键  if(key[KEY_W])  {   mc.y-=speed;  }  //如果按下S键  if(key[KEY_S])  {   mc.y+=speed;  } }

测试影片,分别按单键和组合键,查看效果。 把按下的键保存在一个对象的属性中,只要按键不松开,属性就为true,即键盘按下时 属性为true,直到键盘释放时属性为false,而enterFrame事件不断的检测这个属性 值,如果true,就执行条件语句的代码,所以消除了停滞现象。 把按键信息保存在对象的属性,如果同时按下两个键不松开,对象就有了两个保存这 两个键的属性,在enterFrame事件侦听器中,可以同时判断两个键是否被按下,因此 就有了组合键效果

posted on 2012-11-13 22:23  才美  阅读(341)  评论(0编辑  收藏  举报