Может ли директор cocos2d вернуть время?

В настоящее время я использую cocos2d Director для управления анимацией с помощью методов pause, resume и stopAnimation. Можно ли также использовать Director для возврата времени воспроизведения анимации?

В настоящее время я использую этот метод:

-(void)stopAnimation:(id)sender {
    //Timer initialized elsewhere: startTimer = [NSDate timeIntervalSinceReferenceDate];
    //Do other method stuff here 

    [[Director sharedDirector] stopAnimation];
    stopTimer = [NSDate timeIntervalSinceReferenceDate];
    elapsedTime = (stopTimer - startTimer);
    NSLog(@"elapsedTime = %f", elapsedTime);
}

person Evelyn    schedule 27.07.2009    source источник


Ответы (1)


Я просмотрел исходный код директора и не увидел ничего, что могло бы вам помочь. Я заметил, что ваш код в том виде, в каком он написан, не учитывает время приостановки анимации или воспроизведения других сцен.

Если это вас беспокоит, вы можете отслеживать прошедшее время с помощью тикового метода, который вы запланировали в своей сцене или слое.

MyLayer.h

@interface MyLayer : Layer {
  ccTime totalTime;
}

@property (nonatomic, assign) ccTime totalTime;

MyLayer.m

-(id)init 
{
    if( (self = [super init]) )
    {
        [self schedule:@selector(update:)];
    }

    return self;
}

// deltaTime is the amount of running time that has passed
// since the last time update was called
// Will only be called when the director is not paused
// and when it is part of the active scene
-(void)update:(ccTime)deltaTime
{
    totalTime += deltaTime;
}
person James Johnson    schedule 03.08.2009