Flash中响应键盘的一般方法

2008-04-02 10:56:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  响应键盘的方法作为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帧。

  方法二

  第二种响应键盘的方法:利用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命令的参数就能够了。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 通过实例来介绍Flash的绘图指令的使用

下一篇: FlashAS:模仿画笔的动画效果实例