有一个键盘操作的游戏,要求键盘上下左右控制游戏中角色的行走,并且只能是上下左右4个方向,不能走斜角。
对于这样一个问题你会如何考虑?
注册一个键盘事件哪个键按下就朝那边走,像这样:
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
function KeyDown(evt:KeyboardEvent)
{
if(evt.keyCode==37)
player.x--;
if(evt.keyCode==38)
player.y--;
if(evt.keyCode==39)
player.x++;
if(evt.keyCode==40)
player.y++;
}
可是真的如此吗?你不妨试一下。
这样做至少有两个问题存在:
第一、你会发现键盘按下只有到角色开始行动中间会有一个延迟
第二、对于玩家想要的某些操作不能很好支持。
举个例子:你要控制角色向上走再往左挪一下接着往上走。此时有一种操作习惯是:按住上键,接着按住左键,再松开左键。你会发现当你松开左键的时候角色不能在向上走了。必须松开上键再按住才能行走。
分析一下原因,在KeyDown函数里加一个trace语句。
function KeyDown(evt:KeyboardEvent)
{
trace(evt.keyCode);
if(evt.keyCode==37)
player.x--;
if(evt.keyCode==38)
player.y--;
if(evt.keyCode==39)
&nbs