2012-08-03 2 views
2

내 게임 루프 및 특정 애니메이션의 경우 내 렌더링의 마지막 호출 이후에 경과 한 시간 간격을 알고 싶습니다.CADisplayLink 타임 스탬프가 장치에서 이상하게 작동 함

이 경우 나는 CADisplayLink를 사용하여 현재 시간 소인을 가져 와서 마지막 호출의 시간 소인을 뺍니다. 이 두 프레임/호출 사이의 정확한 시간 간격을 제공해야합니다.

시뮬레이터에서 앱을 실행할 때 간격에 대한 모든 종류의 값을 얻을 수 있습니다. 그러나 iPad에서 앱을 실행하면 간격에 대한 두 가지 값, 즉 0.000과 0.125 만받습니다. 대부분이 두 값이 번갈아 나타납니다.

다음은 간격을 결정하는 데 사용하는 코드입니다.

// Time calculations (for animations and stuff) 
_lastCallTime = _currentCallTime; 
_currentCallTime = [displayLink timestamp]; 
float timeInterval = _currentCallTime - _lastCallTime; 

NSLog(@"Time since last call: %f", timeInterval); 

이 코드는 render 메소드가 호출 될 때마다 실행됩니다.

iPad의 일부 제한 사항입니까, 제 시간에 정확한 결과를 제공하지 않습니까?

답변

1

타임 스탬프는 두 배입니다. NSTimeInterval에 대한 부동 변수로 저장하거나 사용하는 변수를 변경하십시오. 인쇄 할 때 % f를 사용합니다 (실제로 % lf는 C가 매개 변수로 전달 될 때 float을 두 배로 늘리므로).

+0

그건 속임수 였어. 답변 주셔서 감사합니다! :) – Mauin

관련 문제