PRTween icon indicating copy to clipboard operation
PRTween copied to clipboard

Frame rate is not consistent if runloop falls below 60 fps

Open jowie opened this issue 12 years ago • 0 comments

If the app is running at less than 60 fps, the NSTimer is not called quickly enough and the tween runs too slowly.

I have made another fix to my local copy, whereby each frame it calculates timeOffset based upon CFAbsoluteTimeGetCurrent(), adding a new ivar lastAbsoluteTime:

- (void)update
{
    timeOffset += (lastAbsoluteTime == 0) ? kPRTweenFramerate : (CFAbsoluteTimeGetCurrent() - lastAbsoluteTime);
    lastAbsoluteTime = CFAbsoluteTimeGetCurrent();
    ...

Also resetting lastAbsoluteTime when the NSTimer is reinitialised (as per my other issue):

    if (timer == nil)
    {
        lastAbsoluteTime = 0;
        timer = [NSTimer scheduledTimerWithTimeInterval:kPRTweenFramerate target:self selector:@selector(update) userInfo:nil repeats:YES];
    }

jowie avatar Jun 12 '13 10:06 jowie