多媒体交互应用基础(11)
2009-01-21 11:28
411 查看
问题一 如何使用键盘进行交互使用?
步骤:
1.我们首先找到管理键盘类,了解这个类能够为我们带来什么帮助,通过帮助能够解决什么问题。
2.导入需要使用键盘的类
3.监听键盘输入了解键盘事件
通过监听KeyboardEvent.KEY_DOWN 事件,在输出面板可以输出,你按下了我。
KeyboardEvent 是为键盘交互提供的事件。通过这个我们使用键盘控制在flash场景里面的元素。
问题二,当键盘放开并松开的时候发生什么事情?
显然,当键盘松开的时候,会调度第Key_Up 这个事件。通过这样的组合我们可以创造一些交互的效果
问题三,如何通过键盘让场景里面的元素关联,让其产生动作
我们希望,按一个特定的键盘,让其产生交互效果,例如在游戏当中我们创建一个角色,通过键盘来控制角色运行或者其他的动作。
步骤:我们在场景里面加入我们想要的元素,如影片剪辑,在属性面板里面命名为mc
通过这个代码,上下左右,控制一个影片剪辑产生运动效果。但是这种方式并不理想,当运行的时候,总是觉得运行反应慢,其中原因之一在我们flash使用帧速是12,通过修改帧速可以让其产生一些明显改变,其次是在键盘响应的过程中会产生一些迟钝反应。
问题四,如何让键盘交互效果产生更加流畅的效果?
为了解决上面的问题,我们使用Event.ENTER_FRAME事件让动画产生流畅效果
步骤:加入事件监听stage.addEventListener(Event.ENTER_FRAME,Run);
代码:
当按下键盘的时候,产生一些真的值,当松开的时候产生一些假值,
通过这个组合产生更加流畅的运行的效果。
扩展:我们可以自由设定自己喜欢的键盘组合,通过获取键盘键值来产生交互的效果,从而在响应的时候,调动我们想要的结果trace("你按下的键盘值"+e.keyCode);
输出我们想要键值
通过if(e.keyCode=="一个值"){调度我们想要的结果}
步骤:
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=="一个值"){调度我们想要的结果}