首页 > 编程学习 > 多媒体交互应用基础(11)

多媒体交互应用基础(11)

发布时间:2022/6/23 23:31:51

问题一 如何使用键盘进行交互使用?

步骤:

 1.我们首先找到管理键盘类,了解这个类能够为我们带来什么帮助,通过帮助能够解决什么问题。

 2.导入需要使用键盘的类

 3.监听键盘输入了解键盘事件

package { import flash.display.Sprite; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends Sprite { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我"); } } }

通过监听KeyboardEvent.KEY_DOWN 事件,在输出面板可以输出,你按下了我。

KeyboardEvent 是为键盘交互提供的事件。通过这个我们使用键盘控制在flash场景里面的元素。

问题二,当键盘放开并松开的时候发生什么事情?

package { import flash.display.Sprite; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends Sprite { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 } } }

显然,当键盘松开的时候,会调度第Key_Up 这个事件。通过这样的组合我们可以创造一些交互的效果

问题三,如何通过键盘让场景里面的元素关联,让其产生动作

我们希望,按一个特定的键盘,让其产生交互效果,例如在游戏当中我们创建一个角色,通过键盘来控制角色运行或者其他的动作。

步骤:我们在场景里面加入我们想要的元素,如影片剪辑,在属性面板里面命名为mc

package { import flash.display.MovieClip; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends MovieClip { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 if (e.keyCode==Keyboard.UP) { mc.y-=5; } else if (e.keyCode==Keyboard.DOWN) { mc.y+=5; } else if (e.keyCode==Keyboard.LEFT) { mc.x-=5; } else if (e.keyCode==Keyboard.RIGHT) { mc.x+=5; } } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 } } }

通过这个代码,上下左右,控制一个影片剪辑产生运动效果。但是这种方式并不理想,当运行的时候,总是觉得运行反应慢,其中原因之一在我们flash使用帧速是12,通过修改帧速可以让其产生一些明显改变,其次是在键盘响应的过程中会产生一些迟钝反应。

问题四,如何让键盘交互效果产生更加流畅的效果?

为了解决上面的问题,我们使用Event.ENTER_FRAME事件让动画产生流畅效果

步骤:加入事件监听stage.addEventListener(Event.ENTER_FRAME,Run);

代码:

package { import flash.display.MovieClip; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends MovieClip { private var up:Boolean; private var down:Boolean; private var left:Boolean; private var right:Boolean; public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); stage.addEventListener(Event.ENTER_FRAME,Run); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 if (e.keyCode==Keyboard.UP) { up=true; } else if (e.keyCode==Keyboard.DOWN) { down=true; } else if (e.keyCode==Keyboard.LEFT) { left=true; } else if (e.keyCode==Keyboard.RIGHT) { right=true; } } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 if (e.keyCode==Keyboard.UP) { up=false; } else if (e.keyCode==Keyboard.DOWN) { down=false; } else if (e.keyCode==Keyboard.LEFT) { left=false; } else if (e.keyCode==Keyboard.RIGHT) { right=false; } } private function Run(e:Event):void { if (up) { mc.y-=5;//当按上的时候物体对象向上移动 } else if (down) { mc.y+=5;//当按上的时候物体对象向下移动 } else if (left) { mc.x-=5;//当按上的时候物体对象向左移动 } else if (right) { mc.x+=5;//当按上的时候物体对象向右移动 } } } }

当按下键盘的时候,产生一些真的值,当松开的时候产生一些假值,

通过这个组合产生更加流畅的运行的效果。

扩展:我们可以自由设定自己喜欢的键盘组合,通过获取键盘键值来产生交互的效果,从而在响应的时候,调动我们想要的结果trace("你按下的键盘值"+e.keyCode);

输出我们想要键值

通过if(e.keyCode=="一个值"){调度我们想要的结果}

转载于:https://www.cnblogs.com/guoyiqi/archive/2009/01/21/2069436.html

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000