1

我在 Windows 窗体应用程序中动画导弹移动时遇到问题。我希望导弹每 0.5 秒移动 5 次。每次我运行我的应用程序时我都看不到它,因为我使用空间来射击导弹然后我看不到任何动画,只是导弹出现在窗口的底部。我尝试了线程并且thread.Sleep(1)它工作正常,但我听说计时器更适合它。

我的代码如下所示:

this.Controls.Add(missile);
System.Timers.Timer t1 = new System.Timers.Timer();
t1.Interval = 500;
t1.Start();
while (missile.Location.Y > 0)
{
    missile.Location = new Point(missile.Location.X, missile.Location.Y - 5);
}
t1.Stop();
4

1 回答 1

2

您需要将代码放在Timer类的Elapsed事件中,例如:

this.Controls.Add(missile);
System.Timers.Timer t1 = new System.Timers.Timer();
t1.Interval = 500;
t1.Elapsed += (sender, args) => 
{
  if (missile.Location.Y > 0)
  {
    missile.Location = new Point(missile.Location.X, missile.Location.Y - 5);
  }
};
t1.Start();
于 2013-10-17T07:49:58.980 回答