我正在使用Visual Studio Windows Form Application用C#编写一个简单的游戏。我想让用户可以使用相应的键自由地将蓝色框向上、向右、向下和向左移动。
我使用了定时器来每0.1秒检测框的新位置,并使用按键事件来实际更改框的位置。当按键被按下时,框需要保持向相应方向移动。
我的问题是,我的当前程序可以完成任务,但是当用户第一次按下键时,框会稍微移动一下然后暂停一会儿才继续移动。我希望在第一次按下键时,这个框能够更加流畅地移动而不会像那样暂停。这可能很难以言语表达,所以我添加了一个gif文件。
有没有办法解决这个问题?以下是我的当前代码。
private int posX, posY; //Both initialized in Form Load event
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
posY -= 3;
else if (e.KeyCode == Keys.Right)
posX += 3;
else if (e.KeyCode == Keys.Down)
posY += 3;
else if (e.KeyCode == Keys.Left)
posX -= 3;
}
//Timer ticks every 0.1 second
private void Timer_Tick(object sender, EventArgs e)
{
Box.Location = new Point(posX, posY);
labelPosX.Text = posX.ToString(); //Testing purposes
labelPosY.Text = posY.ToString(); //Testing purposes
}
我希望使用KeyDown事件来实现这个目标,但如果有更好或更常见的方法在真实的游戏世界中使用,我也很想了解!
Keyboard
。我已经添加了"Using System.Windows.Input;"但是它仍然无法识别。=/ - Mika Jones