文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
未公开的Flash MX使用摄像头和麦克风..
flash摄像头拍照实现原理分析
Flash 8 摄像头拍照
用FLASH操作并控制摄像头
尝试在Flash MX中轻松应用摄像头
让Flash听话:Flash与麦克风的互动
Flash的压缩算法
FLASH脚本语言详解
简单实用的Flash技巧心得
Flash动画下载全攻略
一些Flash经验法则
Flash 缓存问题的解决
FLASH游戏制作基础:响应键盘的四种方..
如何防止SWF文件被反编译?
巧妙提取Flash文件中的素材
实现声音与歌词同步的三种方法
鼠绘技术内幕完全接触-概述篇
鼠绘技术内幕完全接触-动物篇
鼠绘技术内幕完全接触-环境背景篇
鼠绘技术内幕完全接触-效果篇
鼠绘技术内幕完全接触-植物篇
让Flash课件在VCD上播放
Flash中水的形成思路和方法
超简单flash+asp+access计数器
徒手轻松保存网页中的Swf动画
flash上加htm链接的技巧
教你怎么样用Flash来制作马赛克效果
Flash作品的播放保护
将AutoCAD导入Flash
Flash全屏效果全攻略


技术教程 -> FLASH教程 ->  
FLASH游戏制作基础:响应键盘的四种方法
来源:转载   人气:1690   录入时间:2007-11-8
    响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是:
   
   1、利用按钮进行检测
   2、利用KEY对象
   3、利用键盘侦听的方法
   4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘
   
   只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就结合理论和自己的想法简要的介绍一下。
   
   第一种响应键盘的方法:利用按钮进行检测来实现响应键盘
   
   在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示:
   X is pressed
   
   
   在按钮上加上:
   on (keyPress "x") {
   trace("X is pressed");
   }
   但是要注意的是:检测键盘上的字母键时,字母都应为小写。如果要检测键盘中的特殊键, Flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:
   
   如要检测键盘上的键,可以使用下面的ActionScript:
   on (keyPress "") {
   trace("Left is pressed");
   }
   
   另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使 您可以为按钮定义自己熟悉常用的快捷键,如下所示:
   on (release, keyPress "") {
   _root.myMC.prevFrame();
   }
   on (release, keyPress "") {
   _root.myMC.nextFrame();
   }
   上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑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对象提供了一个函数Key.getCode来实现这一功能,如下所示:
   
   if (Key.isDown(Key.getCode("x"))) {
   trace("X is pressed");
   }
   上面脚本的意思就是,利用Key.getCode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗口就会输出X is pressed。
   
   原文件下载:单击此处下载
   
   
   
   第三种响应键盘的方法:利用键盘侦听的方法来实现响应键盘(个人习惯用这种方法)
   
   假设在影片剪辑的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,一个是主时间轴。
   
   实例原文件:单击此处下载
   
   第四种响应键盘的方法:利用影片剪辑的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对象的详细解释,大家可以查看动作面板的“对象”/“核心”目录下面。
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987