2013-08-30 93 views
-2

我需要两个定时器在我的游戏中,一个以秒为单位,另一个以毫秒为单位。我有2个标签,函数和变量。第一个函数的间隔为1.0,另一个为0.001。但0.001定时器总是慢于1.0(例如700ms和1s)。我该如何解决它?2个定时器之间的差异

+3

期待什么在1kHz在非硬实时操作系统可靠地执行是邀请失望。 – ipmcc

+0

还有,在1秒内700毫秒。即使在@ 1KHz的情况下也是超出公差范围的......除非user2719716,您在几分钟内累计了这些总数,并且仅向我们展示了平均不良结果。如果是这样,那么ipmcc已经解决了你的问题。 –

回答

0

嗯...为什么不只是使用一个计时器,并打勾1k毫秒。一秒钟。 ?设置标志,调用func。等等。我想不出一个很好的理由需要多个定时器(除了微控制器维修硬件,但显然这不是你正在做的)。

+0

这不是问题所在。问题是,当1k毫秒通过实际上超过1秒。两个计时器上的 – user2719716

+2

???哪个版本的iOS和您使用的是什么设备?也许你最好发布你的代码 - 这个需要被复制。 (很难相信你在说什么正在发生!但是我确实给你带来了怀疑的好处,我们可以通过代码更加有用 –

0

你为什么要数秒?您是否应该根据时钟启动和当前时钟之间的差异来计算时间?这将使计时器匹配,因为它们来自相同的参考。这听起来像你实际上基于计时器任务计数。这将使得累计时间取决于线程执行情况等。

2

您不应该认为在这个时间间隔内会以N毫秒触发一个定时器。

定时器被设计为在等待至少 N毫秒后触发,并且由于线程优先级,在等待较长时间后,它几乎肯定会触发。另外,如果你正在处理在定时器触发器中花费的时间超过一毫秒的东西,你将会“跳过”一些触发器并获得你描述的较低值。

要获得时间,请使用日期差异,而不是计时器计数器。

Getting the time elapsed (Objective-c)

+0

好吧,让我们假设我需要秒表而不是定时器,而且我需要他在一秒钟后显示1000毫秒,我应该怎么做? – user2719716

+0

当您启动“秒表”保存日期时间时,然后在每次调用定时器时,通过将保存时间与'now'比较,检查已经过了多少毫秒。显示这个值,并停止或做任何事情,一旦它是> 1000。 –