Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: EvelynОтветов: 1

В настоящее время я использую 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);
}

iphonecocoa-touchipod-touchcocos2d-iphone

Ответы

Ответ 1 · рейтинг 3 · James Johnson

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

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

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;
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы