关键字
Flash MX2004入门与进阶实例:7.2 键盘控制Flash MX2004入门与进阶实例:7.2 键盘控制(Flash)

Flash MX2004入门与进阶实例:7.2 键盘控制


第七章 动作脚本进阶
第二节 键盘控制(1)

当你需要通过键盘和动画产生交互时,比如,利用方向键控制游戏中的角色,就需要借助键盘(Key)对象获取按键的内容,然后利用Key对象的方法控制动画。本节将详细讲解Key对象并通过几个实例讨论通过Key对象在动画中产生键盘交互的方法。


1.键盘对象的方法详解

Key对象包括以下6种常用的方法:

1)Key.getAscii()

语法:Key.getAscii();

功能:返回最近被按下或松开的按键所代表的ASCII值。

通过Key.getAscii()方法可精确地传回字符值。当键盘上有键被按下时,该按键会对应到一个ASCII码,例如,字母A键对应的ASCII值为97,你可以通过Key.getAscii()方法返回该按键对应的ASCII值。

2)key.getCode()

语法:key.getCode();

功能:返回最近被按下或松开的按键的对应码。

如果你只想知道用户是否按下某个键而不理会它的ASCII值,那么,key.getCode()最适合你用。Flash替每个按键都赋予一个对应码,例如,按键A的对应码是65,按键Shift的对应码是16。key.getCode()的返回值就是这些按键的对应码。在Flash的帮助文档中可以查到关于按键对应码的详细信息。

Flash事先定义了一组常量(Key对象的属性)来存储一些常用键按键的对应码,例如常量Key.SPACE就等于32,因此当你需要在程序中应用这些按键时,可以直接使用这些常量,而不必再查阅它们的按键对应码。下面是一些按键常量的名称和意义,如表7-2-1所示。

 

7-2-1

属性(按键常量)

意义

Key.BACKSPACE

Backspace 键的键控代码值 (8) 关联的常量。

Key.CAPSLOCK

Caps Lock 键的键控代码值 (20) 关联的常量。

Key.CONTROL

Ctrl 键的键控代码值 (17) 关联的常量。

Key.DELETEKEY

Delete 键的键控代码值 (46) 关联的常量。

Key.DOWN

与向下箭头键的键控代码值 (40) 关联的常量。

Key.END

End 键的键控代码值 (35) 关联的常量。

Key.ENTER

Enter 键的键控代码值 (13) 关联的常量。

Key.ESCAPE

Escape 键的键控代码值 (27) 关联的常量。

Key.HOME

Home 键的键控代码值 (36) 关联的常量。

Key.INSERT

Insert 键的键控代码值 (45) 关联的常量。

Key.LEFT

与左箭头键的键控代码值 (37) 关联的常量。 

Key.PGDN

Page Down 键的键控代码值 (34) 关联的常量。

Key.PGUP

Page Up 键的键控代码值 (33) 关联的常量。

Key.RIGHT

与右箭头键的键控代码值 (39) 关联的常量。

Key.SHIFT

Shift 键的键控代码值 (16) 关联的常量。

Key.SPACE

与空格键的键控代码值 (32) 关联的常量。

Key.TAB

Tab 键的键控代码值 (9) 关联的常量。

Key.UP

与向上箭头键的键控代码值 (38) 关联的常量。

 

3)key.isDown()

语法:key.isDown(keyCode);

功能:侦测键盘上指定的按键是否被按下,如果返回值为true则表示被按下。

KeyCode可以是按键对应码,也可以是如7-2-1所示的按键常量。

4)key.isToggled()

语法:key.isToggled(keyCode);

功能:侦测键盘上的Caps Lock或Num Lock的指示灯是否亮着。

例如:

onClipEvent(enterFrame){

if(key.isToggled(144){

     this.stop();

}

}

上面这段动作脚本的功能是,当键盘上的Num Lock指示灯是亮着时,影片对象动画停止。

5)key.addListener()

语法:key.addListener(实例名);

功能:将某个对象赋予响应按键事件功能,实例名可以是指定的按钮、影片剪辑(包括_root)、文字字段甚至是自定义对象的实例名称。

除了按钮和影片剪辑可以接收键盘事件外,对于那些无法接收除了按键信息的对象,例如,自定义对象和文字字段对象等,都可以利用key.addListener()方法赋予它们接收和处理按键信息的能力。Key对象提供onKeyDown和onKeyUp两个事件处理程序,让通过key.addListener()方法指定响应Key事件的实例使用。

6)key.removeListener()

语法:key.removeListener(实例名);

功能:取消指定实例响应Key事件的功能。

[1] [2] [3] [4] 下一页  



第七章 动作脚本进阶
第二节 键盘控制(2)

2.键盘控制实例1——用空格键控制白兔的跑动

实例简介

有一只向前跑的白兔,当你按下空格键时,白兔会在原地停止,若再按一次空格键,则白兔继续向前跑,如图7-2-1所示。

 

7-2-1 实例效果

 

制作步骤

1)创建影片界面

步骤1 创建影片文档

新建一个影片文档,设置舞台尺寸为640×480像素,其他参数取默认值。

步骤2 创建背景

从外部导入一幅背景图像(文件路径:配套光盘/……/背景.wmf),然后将【图层1】重新命名为“背景”,将背景图像放置在这个图层上,由于导入的背景图像比较小,请调整它的大小,使之与舞台尺寸相匹配,效果如图7-2-2所示。

7-2-2 动画背景

2)制作MC元件

步骤1 制作白兔MC

新建一个名字为“tutu”的影片剪辑元件。在这个MC元件编辑场景绘制一只白兔图形,为了使白兔更生动,这里还通过定义关键帧实现了白兔眼睛和耳朵的动画,这个元件的时间轴和场景效果如图7-2-3所示,详细请见光盘中的FLA文件。

 

7-2-3 tutu”影片剪辑元件

 

步骤2 制作移动的白兔MC

新建一个名字为“tutu_run”的影片剪辑元件。在这个元件的编辑场景中,将【库】面板中的“tutuMC元件拖放到场景中间,然后创建一个白兔从左向右移动的动作补间动画,这个元件的时间轴和场景效果如图7-2-4所示。

 

7-2-4 tutu_run”影片剪辑元件


上一页  [1] [2] [3] [4] 下一页  



第七章 动作脚本进阶
第二节 键盘控制(3)

3)定义动作脚本

步骤1 布局元件

返回到【场景1】,在【背景】图层上新建一个图层,并将这个图层重新命名为“白兔跑动”。将【库】面板中的“tutu_run”影片剪辑元件拖放到舞台的右边。

步骤2 定义动作脚本

选择场景中的“tutu_run”实例,在【动作】面板中定义它的动作脚本为:

onClipEvent (load) {//当“tutu_runMC实例加载时

       run = 1;//使变量run等于1

}

onClipEvent (enterFrame) {//run 变量的值来控制白兔MC元件的播放情形。

       if (run == 1) {//如果run 的值等于1,则白兔MC元件成动态播放状态,白兔继续向前跑。

              this.play();

       } else {//如果run == 0,则白兔MC元件成静止播放状态,白兔原地停止。

              this.stop();

       }

}

onClipEvent (keyDown) {//若按下空格键(其按键对应码为32),则将run变量切换为10

       if (Key.getCode() == 32) {

              if (run == 1) {

                     run = 0;

              } else {

                     run = 1;

              }

       }

}

3.键盘控制实例2——用左右方向键控制白兔移动

实例简介

利用按住键盘的左右方向键来控制白兔向左或者向右移动,如图7-2-5和图7-2-6所示。

 

7-2-5 实例效果1

7-2-6 实例效果2

 

制作步骤

1)创建影片界面

步骤1 创建影片文档

新建一个Flash影片文档,设置舞台尺寸为640×480像素,其他参数取默认值。

步骤2 创建背景

从外部导入一个背景图像(文件路径:配套光盘/……/背景.wmf),然后将【图层1】重新命名为“背景”,将背景图像放置在这个图层上,由于导入的背景图像比较小,请调整它的大小,使之与舞台尺寸相匹配,效果如图7-2-7所示。

7-2-7 动画背景

 

2)创建白兔MC元件

步骤1 导入白兔MC元件到【库】

从“实例1”源文件的库中,将“tutu”元件导入到当前文件的库中,得到一个白兔MC元件,如图7-2-8所示。

 

7-2-8 导入“tutu”元件


上一页  [1] [2] [3] [4] 下一页  



第七章 动作脚本进阶
第二节 键盘控制(4)

步骤2 引用白兔MC元件

新建一个图层,并重新命名为“白兔”。在这个图层上,将【库】面板中的白兔MC元件拖放到舞台的合适位置,如图7-2-9所示。

 

7-2-9 引用“tutuMC元件

 

选择这个白兔MC实例,在【属性】面板中定义它的名称为“tuL”。

步骤3 复制并翻转白兔MC元件

选择舞台上的白兔MC实例,复制它,选中复制出来的白兔,执行【修改】|【变形】|【水平翻转】命令,将它水平翻转,如图7-2-10所示。

 

7-2-10 复制并翻转 

 

选择这个翻转得到的白兔实例,在【属性】面板中定义它的名称为“tuR”。

3)定义动作脚本

选择名字为“tuL”的白兔实例,在【动作】面板中定义它的动作脚本为:

onClipEvent (load) {//当名字为“tuL”的白兔MC实例加载时

       movie_x = this._x; //设定白兔的x轴坐标

       _root.tuR._visible = false; //并将tuR影片剪辑实例先隐藏起来

}

onClipEvent (keyDown) {

       if (Key.isDown(Key.LEFT)) {//侦测向左方向键是否按下,如果按下

              movie_x -= 10; //tuL(this)影片剪辑实例向移动10像素

              this._x = movie_x;

              this._visible = true;//显示tuL(this)影片剪辑实例

              _root.tuR._visible = false; //并隐藏tuR影片剪辑实例

       }

       if (Key.isDown(Key.RIGHT)) {//侦测向右方向键是否按下,如果按下则tuR影片剪辑实例向右移动10像素,并隐藏tuL影片剪辑实例。

              movie_x += 10;

              _root.tuR._x = movie_x;

              this._visible = false;

              _root.tuR._visible = true;

       }

}

 

同理,选中名为“tuR”的白兔实例,为它设置相同的动作脚本:

设置完后,测试一下动画的效果吧!

 

上一页  [1] [2] [3] [4] 


2006-01-08 15:05:44.0