flash响应键盘事件的方法
? 这篇日志摘自 闪客帝国???????卡其色 的文章 与大家分享一下 第一种响应键盘的方法:利用按钮进行检测来实现响应键盘在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示: X is pressed 但是要注意的是:检测键盘上的字母键时,字母都应为小写。如果要检测键盘中的特殊键, Flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:on (keyPress "x") { trace("X is pressed"); } <Left> <Right> <Up> <Down> <Space <Home> <End> <Insert> <PageUp> <PageDown> <Enter> <Delete> <Backspace> <Tab> <Escape> 如要检测键盘上的<Left>键,可以使用下面的ActionScript: ? 另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使 您可以为按钮定义自己熟悉常用的快捷键,如下所示:on (keyPress "<Left>") { trace("Left is pressed"); } 上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑myMC回退1帧,on (release,keyPress "<Left>") 而上面的第二个语句实现单击按钮或按键盘上的右方向键,控制影片剪辑myMC前进1帧。 ? 方法二 利用按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。 函数Key.isDown返回一个布尔值,当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左方向键。当左方向键被按下时,该函数返回true。if (Key.isDown(Key.LEFT)) Key对象中的常量代表了键盘上相应的键,下面列出了一些基本的常量: 一些功能键的表示: Key.BACKSPACE Key.ENTER Key.PGDN Key.CAPSLOCK Key.ESCAPE Key.RIGHT Key.CONTROL Key.HOME Key.SHIFT Key.DELETEKEY Key.INSERT Key.SPACE Key.DOWN Key.LEFT Key.TAB Key.END Key.PGUP Key.UP 以上是键盘上的功能键,那么如何表示键盘上的字母键呢? Key对象提供了一个函数Key.getCode来实现这一功能,如下所示: 上面脚本的意思就是,利用Key.getCode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗口就会输出X is pressed。if (Key.isDown(Key.getCode("x"))) ? 方法三 假设在影片剪辑的on Key.addListener命令将 主时间轴 或 某个影片剪辑 作为它的参数,当侦听的事件发生时,可以用这个参数指定的对象来响应该事件。Key.addListener(_root); 上面的代码指定主时间轴来响应该事件。要让主时间轴对该事件作出响应,还需要设置一个相应的事件处理函数,否则设置侦听器就没有什么意义了。 键盘侦听的事件处理函数有两个:on //代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的Ascii码Key.addListener(_root); 当然,你也可以使用影片剪辑作为侦听键盘的对象,只需要使用影片剪辑的路径代替_root作为Key.addListener命令的参数就可以了。 比如下面代码: Key.addListener(_root.mc); ? 方法四 最后一种方法很容易被忽视,但是也有一定的应用价值,最重要的是把概念弄清楚。 函数Key.getAscii表示返回与按键相对应的ASCII码,其中 ASCII码是一个整数,键盘上的每个字符对应一个ASCII码,如字母A对应的ASCII码为65,B对应的ASCII码为66,a对应的ASCII码为97,b对应的ASCII码为98,+ 对应的ASCII码为43等。需要注意的是:只有字符键才有ASCII码,键盘上的功能键是没有ASCII码的。on 如果我想在输出窗口中输出与按键相对应的字符,那怎么办? 这时候,你可以使用String对象的fromCharCode函数将ASCII码转换成字符,如将上例的代码改成如下所示: on//意思就是说,当按下键盘的一个键,输出按下的这个键相对应的字符,当然除了功能键。 ----------全文结束--------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |