Flex键盘事件
发布时间:2020-12-15 01:23:01 所属栏目:百科 来源:网络整理
导读:KeyboardEvent 是 Flex 中的键盘事件,有两种类型:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP ,它们和其他事件的发生、处理过程相同,但要处理组合事件时需要特别的处理。我们在完成注册验证功能时,需要在注册页面通过组合键调出输入验证码的区域,
KeyboardEvent 是 Flex 中的键盘事件,有两种类型:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP ,它们和其他事件的发生、处理过程相同,但要处理组合事件时需要特别的处理。 我们在完成注册验证功能时,需要在注册页面通过组合键调出输入验证码的区域,暂时把组合键定为:ctrl + shift + c。要监听组合键事件,主要步骤如下: 1> 监听特定的按键 当我们在程序中添加键盘事件的监听后,可以监听到任意的按键动作,在每个出发的 event 中,都保存了按键的信息,例如: altKey : Boolean 在 Windows 中,指示 Alt 键是处于活动状态 (true) 还是非活动状态 (false);在 Mac OS 中,指示 Option 键是否处于活动状态。 charCode : uint 包含按下或释放的键的字符代码值。 commandKey : Boolean 指示 Command 键是处于活动状态 (true) 还是非活动状态 (false)。 controlKey : Boolean 指示 Ctrl 键是处于活动状态 (true) 还是非活动状态 (false)。 ctrlKey : Boolean 在 Windows 中,指示 Ctrl 键是处于活动状态 (true) 还是非活动状态 (false);在 Mac OS 中,指示 Ctrl 键或 Command 键是否处于活动状态。 keyCode : uint 按下或释放的键的键控代码值。 keyLocation : uint 指示键在键盘上的位置。 shiftKey : Boolean 指示 Shift 功能键是处于活动状态 (true) 还是非活动状态 (false)。 可以现在下面的程序里实验出 ctrl 、 shift 、 c 各自的 keyCode 分别为 17、16、67。 private function appComplete():void{ this.stage.addEventListener(KeyboardEvent.KEY_DOWN,myKeyDown); } private function myKeyDown(evt:KeyboardEvent):void{ t1.text += 'nevt.charCode='+evt.charCode + 'nevt.keyCode='+ evt.keyCode + 'nevt.keyLocation='+ evt.keyLocation + "按下n"; } .................. 2> 监听组合的按键 知道要监听的 keyCode 后,可以设置三个初始为 false 的 Boolean 变量记录三个键的 press or up 的情况,当监听到 KEY_DOWN 事件时,判断是否为三个键之一被按下,若是则设置相应的值为 true ,末尾判断是否三个键都被按下;若是监听到 KEY_UP 事件,判断是否为三个键之一被放开,若是则设置相应的值为 false。 值得注意的是,按住某个键会不停触发 KEY_DOWN 事件,不能简单的在判断成功后把 bool 值取反,具体做法可看最后的代码。 3> 监听到组合键时的处理方法 Handler 方法和其它事件的相同,组合键监听方法示例如下(myPress方法既完成工作,其它两个方法只用来显示): <?xml version="1.0" encoding="utf-8"?> <![CDATA[ import flash.events.KeyboardEvent; private var key1:Boolean = false; private var key2:Boolean = false; private var key3:Boolean = false; private function appComplete():void{ this.stage.addEventListener(KeyboardEvent.KEY_UP,myKeyUp); this.stage.addEventListener(KeyboardEvent.KEY_DOWN,myKeyDown); this.stage.addEventListener(KeyboardEvent.KEY_DOWN,myPress); } private function myKeyUp(evt:KeyboardEvent):void{ //t1.text+= 'evt.charCode='+evt.charCode + 'nevt.keyCode='+ evt.keyCode + 'nevt.keyLocation='+ evt.keyLocation + " 弹起n" // t1.text+="nup"+evt.keyCode; if (evt.keyCode == 17) { key1 = false; t1.text += "n key1 up"; } if (evt.keyCode == 16) key2 = false; if (evt.keyCode == 67) { key3 = false; t1.text += "n key3 up"; } } private function myKeyDown(evt:KeyboardEvent):void{ t1.text += 'nevt.charCode='+evt.charCode + 'nevt.keyCode='+ evt.keyCode + 'nevt.keyLocation='+ evt.keyLocation + "按下n"; t1.text += 'n --- evt.ctrlKey='+evt.ctrlKey; t1.text += ' --- evt.altKey='+evt.altKey; t1.text += ' --- evt.shiftKey='+evt.shiftKey; } //下面方法演示每次按下上下左右键头,文本框移动+5像素; private function myPress(evt:KeyboardEvent):void{ if (evt.keyCode == 17 && key1 == false) { key1 = true; t1.text += "n key1 press"; } if (evt.keyCode == 16 && key2 == false) { key2 = true; t1.text += "n key2 press"; } if (evt.keyCode == 67 && key3 == false) { key3 = true; t1.text += "n key3 press"; } if (key1 == true && key2 == true && key3 == true) t2.text += "nsuccess"; // if(evt.keyCode==39){ //右 // t2.x += t2.x+5; // } // if(evt.keyCode==38){//上 // t2.y += t2.y-5; // } // if(evt.keyCode==40){//下 // t2.y += t2.y+5; // } // if(evt.keyCode==37){//左 // t2.x += t2.x-5; // } } ]]> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |