2013-08-30 128 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。 –