我有这个代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyData == Keys.Left)
{
left = true;
right = false;
down = false;
}
}
private void timerMoving_Tick(object sender, EventArgs e)
{
if(Ghost.Bounds.IntersectsWith(panel3.Bounds))
{
timerMoving.Stop();
}
if(left)
{
Ghost.Left -= 5;
timerMoving.Start();
}
}
在上面的代码中,我的Ghost(向下移动)击中了panel3边界,它停止了。 我希望我的计时器再次启动,因为我按下向左,向右或向上键,只有当它向下移动时才会停止,然后按下面板3。我试过这样做:
if(left)
{
Ghost.Left -= 5;
timerMoving.Start();
}
但没有任何反应,为什么?
答案 0 :(得分:0)
实现与您的任务描述相关的目标的简单(但不是最佳)方法是添加以下代码段中显示的行:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Left)
{
// add this line
if(!timerMoving.Enabled) timerMoving.Start();
left = true;
right = false;
down = false;
up = false;
}
}
并删除此行,如下所示:
if (left)
{
Ghost.Left -= 5;
//timerMoving.Start(); - comment off
}
希望这可能会有所帮助。