这些是以前整理的,现在发上来,希望对新手有所帮助……响应键盘的方法作为as中的一个重要组成部分,在如今已经越来越广泛使用,尤其是在 flash游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法也就是 主要的四种,分别是:
1、利用按钮进行检测
2、利用key对象
3、利用键盘侦听的方法
4、利用影片剪辑的keyup和keydown事件来实现响应键盘
只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果, 下面我就结合理论和自己的想法简要的介绍一下。
第一种响应键盘的方法:利用按钮进行检测来实现响应键盘在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的x键时输出窗口中将提示: x is pressed
在按钮上加上:
on (keypress "x") {trace("x is pressed");}但是要注意的是:检测键盘上的字母键时,字母都应为小写。如果要检测键盘中的特殊键, flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:
<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>") { _root.mymc.prevframe();}on (release, keypress "<right>") { _root.mymc.nextframe();}上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑mymc回退1帧,而上面的第二个语句实现单击按钮或按键盘上的右方向键,控制影片剪辑mymc前进1帧。
最后给出实例原文件:方法1.fla
方法二
第二种响应键盘的方法:利用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对象提供了一个函数key.getcode来实现这一功能,如下所示:
if (key.isdown(key.getcode("x"))) {trace("x is pressed");}上面脚本的意思就是,利用key.getcode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数key.isdown则会返回true,在输出窗口就会输出x is pressed。
最后给出实例原文件:方法2.fla
方法三
第三种响应键盘的方法:利用键盘侦听的方法来实现响应键盘(个人习惯用这种方法)
假设在影片剪辑的onclipevent(enterframe)事件处理函数中检测按键动作,而影片剪辑所在的时间轴较长,或计算机运算速度较慢,就有可能出现这种情况:即当在键盘上按下某个键时还未来得及处理onclipevent(enterframe)函数,那么按键动作将被忽略,这样的话,很多你想要的效果就会无法实现了。
另外,还有一个需要解决的问题就是,在某些游戏(如射击)中,我们需要按一次键就执行一次动作(发射一发子弹),即使长时间按住某个键不放也只能算作一次按键,而key对象并不能区别是长时间按住同一个键还是快速地多次按键。
所以如果要解决这个问题,就需要用到键盘侦听的方法。你可以使用 “侦听器(listener)”来侦听键盘上的按键动作。
要使用侦听器之前,首先需要创建它,你可以使用如下所示的命令来告诉计算机你需要侦听某个事件:
key.addlistener(_root);
key.addlistener命令将 主时间轴 或 某个影片剪辑 作为它的参数,当侦听的事件发生时,可以用这个参数指定的对象来响应该事件。
上面的代码指定主时间轴来响应该事件。要让主时间轴对该事件作出响应,还需要设置一个相应的事件处理函数,否则设置侦听器就没有什么意义了。
键盘侦听的事件处理函数有两个:onkeyup和onkeydown,如下所示:
key.addlistener(_root);_root.onkeyup = function() {trace(key.getascii());};//代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的ascii码
当然,你也可以使用影片剪辑作为侦听键盘的对象,只需要使用影片剪辑的路径代替_root作为key.addlistener命令的参数就可以了。
比如下面代码:
key.addlistener(_root.mc);_root.mc.onkeyup = function() {trace(key.getascii());};//代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的ascii码,意思差不多,但是键盘侦听对象不同,一个是影片mc,一个是主时间轴。
最后给出实例原文件:方法3.fla
方法四
第四种响应键盘的方法:利用影片剪辑的keyup和keydown事件来实现响应键盘
最后一种方法很容易被忽视,但是也有一定的应用价值,最重要的是把概念弄清楚。
影片剪辑包含两个与键盘相关的事件keyup和keydown,使用它们也可以实现对按键事件的响应
例如下面的代码:
onclipevent (keydown) {trace(key.getascii());}//当按下键盘上的一个键的时候,输出窗口将输出按下的这个键的ascii码值。
函数key.getascii表示返回与按键相对应的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.fromcharcode(key.getascii()));};//意思就是说,当按下键盘的一个键,输出按下的这个键相对应的字符,当然除了功能键。
关于string对象的详细解释,大家可以查看动作面板的“对象”/“核心”目录下面。
最后给出实例原文件:方法4.fla
出处:闪客帝国
责任编辑:蓝色
◎进入论坛flash专栏版块参加讨论
| |
| flash 中响应键盘的一般方法 flash中响应键盘事件的四种方法 |
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||
| |
|
>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器