[竖版]第2讲 - 键盘事件
- 格式:pdf
- 大小:671.90 KB
- 文档页数:7
Action Script 3.0 键盘事件键盘事件都是由KeyboardEvent类来管理,其只有keyDown和keyUp两个事件,分别表示按下键和释放键。
这两个事件的事件名是由KeyboardEvent类的类发展KEY_DOWN 和KEY_UP来表示。
KeyboardEvent类同时定义了一些属性和方法来辅助键盘事件的处理,其属性如表6-8所示。
其中,keyCode属性最常用,它通常用于判断某个键是否按下或释放。
例如,keyDown 事件只是判断键是否按下,如果要判断某个键是否被按下,就需要使用keyCode属性来判断。
当某个键按下时,如果按键的keyCode属性等于键控代码,则说明该键被按下,对于keyUp事件的处理也是一样。
KeyboardEvent类的方法如表6-9所示。
表6-9 KeyboardEvent类的方法例如,创建一个名称为mc的猴子跑步影片剪辑元件,并将其拖入到舞台中。
然后,使用KeyboardEvent类的keyCode属性来判断是否按下左右方向键,并调用keyDownHandler ()函数来制作猴子的移动及方向,代码如下所示。
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);//侦听键盘按下事件,并调用keyDownHandler()函数function keyDownHandler(event:KeyboardEvent):void {if (event.keyCode==39){ //当用户按下右方向键mc.x+=5; //名称为mc的元件沿x轴坐标向右移动}else if(event.keyCode==37){ //当用户按下左方向键mc.x-=5; //名称为mc的元件沿x轴坐标向左移动}}为“猴子”影片剪辑元件设置【实例名称】为“mc”。
然后,将上面的代码放在“AS”图层的第一帧中,预览效果如图6-1所示。
键盘与文本事件(keydown、keypress和keyup触发顺序
及其区别)
键盘事件
键盘事件主要有三个,也是平常开发过程中,尤其是在文本框输入时,非常常用的。
•keydown:当用户按下键盘上的任意键时触发,如果按住不放会重复触发。
•keypress:当用户按下键盘上的字符键时触发,如果按住不放会重复触发。
(ESC 键也会触发)
•keyup:当用户释放键盘上的键时触发。
虽然所有的元素都支持上面的三个事件,但是只有在用户通过文本输入时才最常用。
触发顺序:
当用户按了一个键盘上的字符键时,首先触发 keydown 事件,然后紧跟着时keypress 事件,最后会触发keyup 事件。
其中,keydown 和keypress 都是在文本框发生变化之前被触发的;而keyup 是在文本框已经改变之后触发的。
修改键:
键盘事件中的修改键与鼠标事件的修改键类似。
而且键盘事件的事件对象中也有shiftKey、ctrlKey、altKey 和metaKey 属性。
文本事件
文本事件只有一个:
textInput:这个事件是对 keypress 的补充,用意是在将文本显示给用户之前更容易拦截文本。
在文本插入文本框之前会触发textInput 事件。
详细介绍见另一篇博客:
https:///TalonZhang/article/details/84447459。
详解键盘事件(keydown,keypress,keyup)⼀、键盘事件基础1、定义keydown:按下键盘键keypress:紧接着keydown事件触发(只有按下字符键时触发)keyup:释放键盘键顺序为:keydown -> keypress ->keyup2、⽰例3、详解1)⽤户按下键盘上的字符键时⾸先会触发keydown事件然后紧接着触发keypress事件最后触发keyup事件如果⽤户按下了⼀个字符键不放,就会重复触发keydown和keypress事件,直到⽤户松开该键为⽌2)当⽤户按下⾮字符键时⾸先会触发keydown事件然后就触发keyup事件如果⽤户按下了⼀个⾮字符键不放,就会重复触发keydown事件,直到⽤户松开该键为⽌3)在keyup事件中⽆法阻⽌浏览器默认事件,因为在keypress时,浏览器默认⾏为已经完成,即将⽂字输⼊⽂本框(尽管这时还没显⽰),这个时候不管是preventDefault还是returnValue = false,都不能阻⽌在⽂本框中输⼊⽂字的⾏为,如要阻⽌默认⾏为,必须在keydown或keypress时阻⽌4)发⽣keypress事件意味着按下的键会影响到屏幕中⽂本的显⽰,即在所有浏览器中,按下能够插⼊或删除字符的键都会触发keypress事件⼆、键码和键盘事件系统功能键:Esc、Tab、CapsLk、Shift、Ctrl、Alt、Enter、Backspace、Print Screen、Scroll Lock、Pause Break、Insert、Delete、Home、End、Page Up、Page Down, F1 ~ F12,Num Lock、The Arrow Keys1、键盘中的键分为字符键 (可打印) 和功能键 (不可打印)keypress⽀持的系统功能键:Firefox:Esc、Enter、Backspace、Pause Break、Insert、 Delete、Home、End、Page Up、Page Down、F1 through F12、The Arrow Keys、上下左右键Chrome / Oprea / Safari :EnterIE:Esc、Enter除了 Firefox,其他chrome、oprea、safari、IE 上下左右键不会触发kepress2、keyCode(键码)、which、charCode(字符编码)简写记忆:keydown: 获得keyCode, charCode=0keyup: 获得keyCode, charCode=0keypress: 字符keyCode=0,获取charCode值,反之获取keyCode,charCode=0详述:event对象包含⼀个keyCode属性和⼀个charCode属性当捕捉的是keydown和keyup事件时,keyCode表⽰的就是你具体按的键(也称为virtual keycode),charCode为0当捕捉的是keypress事件时,keyCode为0,charCode指的是你按下的字符(⽽ IE 只有⼀个KeyCode属性,它指的是你键⼊的字符(charactercode))鉴于IE 和 FF中的区别,建议只使⽤keydow和keyup事件3、keypress 和 keydown / keyup 的区别区别简述1)keypress对中⽂输⼊法⽀持不好,⽆法响应中⽂输⼊2)keypress⽆法响应系统功能键(如delete,backspace)3)由于前⾯两个限制,keydown和keyup对keyCode不敏感区别详解对系统功能键的响应⽅⾯keypress事件不能对系统功能键(对中⽂输⼊法不能有效响应)进⾏正常的响应keydown和keyup均可以对系统功能键进⾏有效的拦截,但事件截获的位置不同keyCode对字母的⼤⼩写敏感程度keypress事件的keyCode对字母的⼤⼩写敏感keydown、keyup事件不敏感主附键盘的数字键敏感程度keypress事件的which值⽆法区分主键盘上的数字键和附键盘数字键的keydown、keyup事件的which值对主附键盘的数字键敏感4、需要注意的地⽅1)英⽂输⼊法所有浏览器都⽀持这三个事件2)中⽂输⼊法(浏览器之间表现得不太⼀致)IE,Chrome,Safari:触发keydown和keyup,不触发keypressFirefox:⾸次按下时触发keydown,不触发keypress在停⽌输⼊并改变⽂本框内容(如按下回车或者空格键)后会触发keyup(只有在触发keyup事件才能获得修改后的⽂本值)Opera:keydown, keypress和keyup都不触发3)⼤⼩写⼤写:keydown、keypress(字母,主键盘数字、回车)、keyup的which值相等⼩写:kepress获取的which不同于keydown、keyup5、keyCode对照表。
215图11-36 例11.12运行界面 图11-37 例11.12 “打印”对话框 11.9 键盘事件和鼠标事件键盘和鼠标对于Windows 应用程序来说是必需的,尤其是在图形图像处理的程序设计中更为重要,本节主要介绍键盘事件和鼠标事件的应用。
11.9.1 键盘事件VB 中定义了三个键盘事件过程,分别对应KeyPress (按下再松开)、KeyDown (按下)和KeyUp (松开)事件。
1.KeyPress 事件当一个对象具有焦点时,用户按下再松开一个可返回ASCII 码的按键,则触发KeyPress 事件。
KeyPress 键盘事件过程的语法格式如下:PrivateSub Object_KeyPress([Index As Intrger,] KeyAscii As Integer)(1)Object:响应事件的对象。
窗体用Form,其他控件用控件名。
(2)Index:当对象为控件数组时,参数值是控件数组元素的下标。
(3)KeyAscii:当对象为单个控件时,返回按键对应的ASCII 码(整数),且该参数不能省略。
若改变KeyAscii 的值,可以给对象发送一个不同的字符;若KeyAscii 的值改变为0,将取消按键,对象接收不到字符。
(4)该事件可以引用任何可打印的标准键盘字符,包括大小写字母、数字、标点、运算符以及Enter、Backspace、Tab 和Esc 键等,但其对方向键等不产生ASCII 码的按键无响应。
(5) KeyPress 键盘事件过程在截取TextBox 或ComboBox 控件中的按键时非常有用,它可以立即测试按键的有效性或在字符输入时对其进行格式处理。
【例11.13】编写KeyPress 事件过程,保证在文本框中只能输入字母,且无论大小写,都必须转换为大写字母显示。
解题思路:在Text1的KeyPress 事件中,将键盘的ASCII 码转换为相应的字符,再将其转换。