我這行,我的一個場景:的Cocos2D 2.0增加時間表精度
[self schedule:@selector(storeValue:) interval:1.0/30.0];
storeValue是非常基本的和快速的。它只是將一個圖層的位置存儲在NSMutableArray上。我需要這個storeValue儘可能多精確地定時被調用,但做一些測量之後,這些都是每個storeValue通話之間測得的時間間隔:
interval 0 = 0
interval 1 = 0.049962
interval 2 = 0.033345
interval 3 = 0.033332
interval 4 = 0.049994
interval 5 = 0.050050
interval 6 = 0.049968
interval 7 = 0.033998
interval 8 = 0.049331
interval 9 = 0.050015
interval 10 = 0.049979
interval 11 = 0.049999
interval 12 = 0.033357
interval 13 = 0.033307
interval 14 = 0.049997
interval 15 = 0.033322
interval 16 = 0.050317
interval 17 = 0.049743
interval 18 = 0.049973
interval 19 = 0.033322
interval 20 = 0.050024
interval 21 = 0.049975
interval 22 = 0.049987
interval 23 = 0.033316
interval 24 = 0.050038
interval 25 = 0.050149
interval 26 = 0.049852
interval 27 = 0.049989
interval 28 = 0.050011
所以,你看到的,方法是帶一個而不是總是0.03333(1/30)。
我試圖從storeValue中刪除所有代碼來查看storeValue被調用的頻率並獲得相同的不規則時間。
最大的問題是:我該怎麼做才能提高進度精度?我應該使用NSTimer嗎? GCD執行計劃任務的其他方法?有什麼建議麼?
感謝。
注:我現在發現,如果我把interval = 0,storeValue將被調用每一幀,這意味着1/60秒和精度是真棒。好的,我可以在邏輯上調用storeValue的一半時間,但是很高興知道爲什麼日程安排如此不準確以及是否有改進它的方法。
Blah,我會建議安排更新方法,它會調用每一幀,並添加一些邏輯......但是,我只有一個建議:如果您在實際設備上測試,NSLog不是微不足道的。它需要I/O並需要數百個cpu週期。 – Mazyod 2012-08-08 18:10:50
好的,但更新發生時精度高於98%,而正常時間表的精度低於60%。 – SpaceDog 2012-08-08 19:06:03