计时器和动画

时间:2013-10-17 07:44:21

标签: c# multithreading

我在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();

1 个答案:

答案 0 :(得分: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();