首先,我必须使用Windows窗体,我知道这对制作游戏不利,但对学校而言却如此。
我使用带有按钮的面板为游戏设计了一个暂停菜单。这是当我按Escape键打开暂停菜单时的代码。
private void Game_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
if (paused == true)
{
paused = false;
pnlPaused.Visible = false;
tmrAnimations.Start();
tmrGame.Start();
tmrJump.Start();
tmrPlayerMovement.Start();
tmrLeftMovement.Start();
tmrRightMovement.Start();
}
else
{
pnlPaused.BringToFront();
pnlPaused.Visible = true;
pnlPaused.BackColor = Color.FromArgb(80, 79, 249, 249);
paused = true;
tmrAnimations.Stop();
tmrGame.Stop();
tmrJump.Stop();
tmrPlayerMovement.Stop();
tmrLeftMovement.Stop();
tmrRightMovement.Stop();
}
}
}
直到我单击其中一个按钮,此代码才能正常工作。单击任何按钮,即使没有代码的按钮,也无法按逃脱键再次取消暂停。使用此恢复按钮,计时器全部启动,游戏重新开始工作,但该表单未记录任何按键。
private void btnResume_Click(object sender, EventArgs e)
{
paused = false;
pnlPaused.Visible = false;
tmrAnimations.Start();
tmrGame.Start();
tmrJump.Start();
tmrPlayerMovement.Start();
tmrLeftMovement.Start();
tmrRightMovement.Start();
}
我尝试将此代码添加到按钮点击代码中
pnlPaused.Enabled = false;
此代码可用于重新启用用户输入,但是每次按下一个键时,都会播放Windows错误声音,当您必须关闭警报等但尝试单击时发出声音(希望这很有意义)。有谁知道隐藏面板或阻止Windows声音后仍在激活面板的另一种方法?
答案 0 :(得分:0)
我已经意识到我所要做的就是将按钮的焦点对准
this.Focus();