Flex键盘事件

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方法既完成工作,其它两个方法只用来显示):







 

你可能感兴趣的:(Flex)