【发布时间】:2020-08-07 02:06:06
【问题描述】:
首先,我必须使用 windows 窗体,我知道它不适合制作游戏,但它适合学校。
我使用带有按钮的面板为我的游戏设计了一个暂停菜单。这是当我按下退出键打开暂停菜单时的代码。
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();
}
}
}
在我单击其中一个按钮之前,此代码可以正常工作。当任何一个按钮被点击时,即使是没有代码的,也不可能再次按下escape来取消暂停。使用此恢复按钮,计时器全部启动,游戏重新开始运行,但表单没有记录任何按键点击。
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 错误声音,当您必须解除警报等但尝试单击关闭时(希望这是有道理的)。有谁知道另一种修复面板在隐藏或阻止窗口声音后仍然处于活动状态的方法?
【问题讨论】: