计时器工作奇怪,如何解决

时间:2015-12-08 13:29:12

标签: c# wpf timer

我正在制作视频游戏,特别是现在我想制作伪动画门。

我的意思是,当我使用游戏中的门时,它的图像应该从"关闭"要打开"然后游戏必须等待大约半秒钟,然后才能加载另一个区域。 问题是,计时器实际上并没有等待所需的时间,或者至少并不总是如此。有时它会持续500毫秒,因为它是预期的,有时会持续更短的时间。

我使用以下代码:

使用门时

            imgLockerRoomOpenDoor.Visibility = Visibility.Visible;

            tmrDoorOpening.Tick += new EventHandler(tmrLockerRoomDoorOpening);
            tmrDoorOpening.Interval = new TimeSpan(0, 0, 0, 0, 500);
            tmrDoorOpening.Start();    

" tmrLockerRoomDoorOpening"代码:

        tmrDoorOpening.Stop();

        AreaTransition();
        areaHibernation1.Visibility = Visibility.Visible;
        areaHibernation1.IsEnabled = true;
        areaHibernation1.Margin = new Thickness(55, 31, 0, 0);
        ActionsReset();

计时器声明:

    public static System.Windows.Threading.DispatcherTimer tmrDoorOpening = new System.Windows.Threading.DispatcherTimer();

AreaTransition用于隐藏所有游戏区域,因此不要认为它是相关的。

为什么计时器可以在不同的时间段内工作?如何将其设置为相同?

我举一个例子。 有两个房间。

1)我在1号房间。

2)我点击门。

3)门图像变为打开,程序等待1/2分钟,然后房间1消失,我出现在房间2中。

4)我回到房间1.门已经关闭了。

5)我再次点击门,但现在门打开的时间较短。

1 个答案:

答案 0 :(得分:-1)

我看到你使用tmrDoorOpening.Stop();

所以定时器不能总是500,因为你停止它?

它将在stop()>之间的时间为500 +工作>启动()