FLASH中响应键盘事件的四种⽅法
响应键盘的⽅法作为AS中的⼀个重要组成部分,在如今已经越来越⼴泛的使⽤,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的⽅法,那是不可能的,⽽响应键盘的⽅法主要的四种,分别是:
1、利⽤按钮进⾏检测
2、利⽤KEY对象
3、利⽤键盘侦听的⽅法
4、利⽤影⽚剪辑的keyUp和keyDown事件来实现响应键盘
只有熟练掌握了这些⽅法,然后加以变通的话,就会得到很多意想不到的效果,下⾯我就结合理论和⾃⼰的想法简要的介绍⼀下。
第⼀种响应键盘的⽅法:利⽤按钮进⾏检测来实现响应键盘
在按钮的on事件处理函数中不但可以对⿏标事件作出响应,⽽且可以对键盘事件作出响应。 如在按钮的动作⾯板中加⼊如下所⽰的代码,在敲击键盘上的X键时输出窗⼝中将提⽰:X is pressed
在按钮上加上:
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 (keyPress "<Left>") {
trace("Left is pressed");
}
另外,你可以在⼀个按钮中加⼊若⼲个on函数,也可以在⼀个on函数中结合多种事件,这使 您可以为按钮定义⾃⼰熟悉常⽤的快捷键,如下所⽰:
on (release, keyPress "<Left>") {
_MC.prevFrame();
}
on (release, keyPress "<Right>") {
_Frame();
}
上⾯的第⼀个语句实现单击按钮或按键盘上的左⽅向键,控制影⽚剪辑myMC回退1帧,⽽上⾯的第⼆个语句实现单击按钮或按键盘上的右⽅向键,控制影⽚剪辑myMC前进1帧。
最后给出实例源⽂件:下载
第⼆种响应键盘的⽅法:利⽤Key对象来实现响应键盘的操作
利⽤按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。
这时,您就需要⽤到Key对象。Key对象包含在动作⾯板的“对象”/“影⽚”⽬录下⾯,它由Flash内置的⼀系列⽅法、常量和函数构成。使⽤Key对象可以检测某个键是否被按下,如要检测左⽅向键是否被按下,可以使⽤如下ActionScript:
if (Key.isDown(Key.LEFT)) {
trace("The left arrow is down");
}
函数Key.isDown返回⼀个布尔值,当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左⽅向键。当左⽅向键被按下时,该函数返回true。
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对象提供了⼀个函数Code来实现这⼀功能,如下所⽰:
if (Key.Code("x"))) {
trace("X is pressed");
}
上⾯脚本的意思就是,利⽤Code函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗⼝就会输出X is pressed。
最后给出实例源⽂件:下载
第三种响应键盘的⽅法:利⽤键盘侦听的⽅法来实现响应键盘(个⼈习惯⽤这种⽅法)
假设在影⽚剪辑的onClipEvent(enterFrame)事件处理函数中检测按键动作,⽽影⽚剪辑所在的时间轴较长,或计算机运算速度较慢,就有可能出现这种情况:即当在键盘上按下某个键时还未来得及处理onClipEvent(enterFrame)函数,那么按键动作将被忽略,这样的话,很多你想要的效果就会⽆法实现了。
另外,还有⼀个需要解决的问题就是,在某些游戏(如射击)中,我们需要按⼀次键就执⾏⼀次动作(发射⼀发⼦弹),即使长时间按住某个键不放也只能算作⼀次按键,⽽Key对象并不能区别是长时间按住同⼀个键还是快速地多次按键。
所以如果要解决这个问题,就需要⽤到键盘侦听的⽅法。你可以使⽤ “侦听器(listener)”来侦听键盘上的按键动作。
要使⽤侦听器之前,⾸先需要创建它,你可以使⽤如下所⽰的命令来告诉计算机你需要侦听某个事件:
Key.addListener(_root);
Key.addListener命令将 主时间轴 或 某个影⽚剪辑 作为它的参数,当侦听的事件发⽣时,可以⽤这个参数指定的对象来响应该事件。
上⾯的代码指定主时间轴来响应该事件。要让主时间轴对该事件作出响应,还需要设置⼀个相应的事件处理函数,否则设置侦听器就没有什么意义了。
sql语句实现的四种功能键盘侦听的事件处理函数有两个:onKeyUp和onKeyDown,如下所⽰:
Key.addListener(_root);
_KeyUp = function() {
Ascii());
};
//代码的意思是,当按下⼀个键并释放后,输出窗⼝将输出你按下的那个键的Ascii码
当然,你也可以使⽤影⽚剪辑作为侦听键盘的对象,只需要使⽤影⽚剪辑的路径代替_root作为Key.addListener命令的参数就可以了。
⽐如下⾯代码:
Key.addListener(_);
_KeyUp = function() {
Ascii());
};
代码的意思是,当按下⼀个键并释放后,输出窗⼝将输出你按下的那个键的Ascii码,意思差不多,但是键盘侦听对象不同,⼀个是影⽚mc,⼀个是主时间轴。
最后给出实例源⽂件:下载
第四种响应键盘的⽅法:利⽤影⽚剪辑的keyUp和keyDown事件来实现响应键盘
最后⼀种⽅法很容易被忽视,但是也有⼀定的应⽤价值,最重要的是把概念弄清楚。
影⽚剪辑包含两个与键盘相关的事件keyUp和keyDown,使⽤它们也可以实现对按键事件的响应
例如下⾯的代码:
onClipEvent (keyDown) {
Ascii());
}
//当按下键盘上的⼀个键的时候,输出窗⼝将输出按下的这个键的Ascii码值。
函数Ascii表⽰返回与按键相对应的ASCII码,其中 ASCII码是⼀个整数,键盘上的每个字符对应⼀个ASCII码,如字母A对应的ASCII码为65,B对应的ASCII码为66,a对应的ASCII码为97, b对应的ASCII码为98,+ 对应的ASCII码为43等。需要注意的是:只有字符键才有ASCII码,键盘上的功能键是没有ASCII码的。
如果我想在输出窗⼝中输出与按键相对应的字符,那怎么办?
这时候,你可以使⽤String对象的fromCharCode函数将ASCII码转换成字符,如将上例的代码改成如下所⽰:
onClipEvent (keyDown) {
trace(String.Ascii()));
};
//意思就是说,当按下键盘的⼀个键,输出按下的这个键相对应的字符,当然除了功能键。
关于String对象的详细解释,⼤家可以查看动作⾯板的“对象”/“核⼼”⽬录下⾯。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论