·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[as3]as3代码操作键盘事件的范例

时间:2016-08-24 11:22酷播
在AS3中,键盘事件是由KeyboardEvent类来处理的,属于flash.events包里面,有两种类型的键盘事 件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP

在AS3中,键盘事件是由KeyboardEvent类来处理的,属于flash.events包里面,有两种类型的键盘事 件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP,对于键的代码获得我们通过keyCode这个属性

其实键盘事件使用起来还是相当方便,下面直接看实例:

建立一个新的AS文件main.as,输入下面代码:

  1. package { 
  2.     import flash.display.Sprite; 
  3.     import flash.events.KeyboardEvent; 
  4.     import flash.ui.Keyboard; 
  5.     import flash.events.MouseEvent; 
  6.     public class main extends Sprite { 
  7.  
  8.         private function keyEvt(event:KeyboardEvent):void { 
  9.  
  10.             trace(event.keyCode); 
  11.             switch (event.keyCode) { 
  12.                 case Keyboard.UP : 
  13.                     event.target.y-=10
  14.                     break; 
  15.                 case Keyboard.DOWN : 
  16.                     event.target.y+=10; 
  17.                     break; 
  18.                 case Keyboard.LEFT : 
  19.                     event.target.x-=10
  20.                     break; 
  21.                 case Keyboard.RIGHT : 
  22.                     event.target.x+=10; 
  23.                     break; 
  24.                 default : 
  25.                     break; 
  26.  
  27.             } 
  28.         } 
  29.          
  30.         public function main():void { 
  31.             var sp:Sprite=new Sprite(); 
  32.             sp.graphics.beginFill(0x0000ff); 
  33.             sp.graphics.drawRect(200,200,100,100); 
  34.             sp.graphics.endFill(); 
  35.             addChild(sp); 
  36.             sp.buttonMode=true
  37.  
  38.             sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt); 
  39.              
  40.         } 
  41.     } 

以上代码主要功能为绘制一个矩形,然后通过键盘的方向键控制其运动。关于如何将这文档类运用到FLA文件中去,我这就不啰嗦了。值得注意的是,我这 里的sp为一个sprite类型的实例,它的buttonMode也设为了True,因此我们在运行的时候首先先让这个实例获得焦点,然后才可以按下方向 键控制其运动,如果我们不将buttonMode设为true的话,即使我们鼠标点击后都不可以让其进行运行,除非我们通过stage.focus=sp 来指定当前焦点对象。但是这在实例周围会有一个焦点的框框,而且鼠标一旦点击后将会失去焦点,后就再也无法通过键盘进行移动。或许说得有点啰嗦,但大家试 一试就可以发觉。我一直想找一个去掉这高亮显示的框框,可惜一直未找到有效的方法,大家如果有好的请告诉我。

在键盘事件中除了keyCode还有一个属性比较实用,就是keyLocation,这个是确定此键再键盘上的位置,特别是在shift、ctrl、alt上面,由于有左右两边,应该此属性可以告诉你你当前按下的是左边的还是右边的。

去掉焦点边框后并单击重新获得焦点代码示例:09-2-28补

  1. package { 
  2.     import flash.display.Sprite; 
  3.     import flash.events.KeyboardEvent; 
  4.     import flash.ui.Keyboard; 
  5.     import flash.events.MouseEvent; 
  6.     public class main3 extends Sprite { 
  7.  
  8.         private function keyEvt(event:KeyboardEvent):void { 
  9.  
  10.             trace(event.keyCode+"|"+event.keyLocation); 
  11.             switch (event.keyCode) { 
  12.                 case Keyboard.UP : 
  13.                     event.target.y-=10
  14.                     break; 
  15.                 case Keyboard.DOWN : 
  16.                     event.target.y+=10; 
  17.                     break; 
  18.                 case Keyboard.LEFT : 
  19.                     event.target.x-=10
  20.                     break; 
  21.                 case Keyboard.RIGHT : 
  22.                     event.target.x+=10; 
  23.                     break; 
  24.                 default : 
  25.                     break; 
  26.  
  27.             } 
  28.         } 
  29.          
  30.         private function clickFun(evt:MouseEvent):void 
  31.         { 
  32.             stage.focus=Sprite(evt.target); 
  33.              
  34.             } 
  35.          
  36.         public function main3():void { 
  37.             var sp:Sprite=new Sprite(); 
  38.             sp.graphics.beginFill(0x0000ff); 
  39.             sp.graphics.drawRect(200,200,100,100); 
  40.             sp.graphics.endFill(); 
  41.             addChild(sp); 
  42.             stage.stageFocusRect=false
  43.             stage.focus=sp
  44.              
  45.         sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt); 
  46.             sp.addEventListener(MouseEvent.CLICK,clickFun); 
  47.         } 
  48.     } 

源自 http://www.cnblogs.com/YY-1028/archive/2012/04/28/2475485.html

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器