我正在制作一个简单的游戏,我使用以下代码来检测光标键:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (Connection == null || Connection.IsOpen == false)
return true;
Thread.Sleep(SleepTime);
switch (keyData)
{
case Keys.Up:
GoForward();
return true;
case Keys.Right:
GoRight();
return true;
case Keys.Left:
GoLeft();
return true;
case Keys.Down:
GoBackward();
return true;
case Keys.Space:
Beep();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
我还使用此代码来确定用户是否释放了先前按下的键:
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
StopRoomba();
}
我现在有 2 个问题:我想添加用户可以同时按下例如 UP 和 RIGHT 光标的情况,以便角色向上移动。如何在我的代码中检查这种情况?
还会发生一些奇怪的事情(或者可能是默认系统)。我可以一次按 3 个光标键,或者例如我按住 UP 键,然后按住 RIGHT 键,同时按住 UP 和 RIGHT,同时按住 DOWN,我的代码对所有三个代码都有反应。在下图中,您可以看到红色方向已被按下并被我的代码检测到(红色 = 按下):
我的第二个问题是MainForm_KeyUp
有时无法检测到按键释放并且角色一直朝该方向移动。
任何提示/帮助将被应用