flash游戏开发-单键记忆模式的键盘控制

本文介绍了在Flash游戏开发中如何处理键盘输入,以实现角色的上下左右移动,同时解决按键延迟和组合操作的问题。通过创建一个记忆器数组记录按键顺序,确保在键被释放时仍能正确执行角色移动,从而优化玩家的游戏体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个键盘操作的游戏,要求键盘上下左右控制游戏中角色的行走,并且只能是上下左右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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值