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

[AS3]as3.0处理按键事件,多个按键按下时的响应事件,按键盘的事件(2)

时间:2013-10-30 17:02cuplayer.com
packagecom{ importflash.events.KeyboardEvent; importflash.events.Event; importflash.display.DisplayObject; importflash.utils.ByteArray; publicclassKeyPoll{ privatevarstates:ByteArray; privatevardispO

 

  1. package com{ 
  2.     import flash.events.KeyboardEvent; 
  3.     import flash.events.Event; 
  4.     import flash.display.DisplayObject; 
  5.     import flash.utils.ByteArray; 
  6.  
  7.     public class KeyPoll { 
  8.         private var states:ByteArray; 
  9.         private var dispObj:DisplayObject; 
  10.  
  11.         public function KeyPoll( displayObj:DisplayObject ) { 
  12.             states = new ByteArray(); 
  13.             states.writeUnsignedInt( 0 ); 
  14.             states.writeUnsignedInt( 0 ); 
  15.             states.writeUnsignedInt( 0 ); 
  16.             states.writeUnsignedInt( 0 ); 
  17.             states.writeUnsignedInt( 0 ); 
  18.             states.writeUnsignedInt( 0 ); 
  19.             states.writeUnsignedInt( 0 ); 
  20.             states.writeUnsignedInt( 0 ); 
  21.             dispObj=displayObj
  22.             dispObj.addEventListener( KeyboardEvent.KEY_DOWN, keyDownListener, false, 0, true ); 
  23.             dispObj.addEventListener( KeyboardEvent.KEY_UP, keyUpListener, false, 0, true ); 
  24.             dispObj.addEventListener( Event.ACTIVATE, activateListener, false, 0, true ); 
  25.             dispObj.addEventListener( Event.DEACTIVATE, deactivateListener, false, 0, true ); 
  26.         } 
  27.  
  28.         private function keyDownListener( ev:KeyboardEvent ):void { 
  29.             states[ ev.keyCode >>> 3 ] |= 1 << (ev.keyCode & 7); 
  30.         } 
  31.  
  32.         private function keyUpListener( ev:KeyboardEvent ):void { 
  33.             states[ ev.keyCode >>> 3 ] &= ~(1 << (ev.keyCode & 7)); 
  34.         } 
  35.  
  36.         private function activateListener( ev:Event ):void { 
  37.             for (var i:int = 0; i < 32; ++i) { 
  38.                 states[i]=0; 
  39.             } 
  40.         } 
  41.  
  42.         private function deactivateListener( ev:Event ):void { 
  43.             for (var i:int = 0; i < 32; ++i) { 
  44.                 states[i]=0; 
  45.             } 
  46.         } 
  47.  
  48.         public function isDown( keyCode:uint ):Boolean { 
  49.             return ( states[ keyCode >>> 3 ] & (1 << (keyCode & 7)) ) != 0; 
  50.         } 
  51.          
  52.         public function isUp( keyCode:uint ):Boolean { 
  53.             return ( states[ keyCode >>> 3 ] & (1 << (keyCode & 7)) ) == 0; 
  54.         } 
  55.     } 

热门文章推荐

请稍候...

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

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