您的位置:首页 > 其它

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

2009-01-21 11:28 411 查看
问题一 如何使用键盘进行交互使用?

步骤:

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=="一个值"){调度我们想要的结果}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: