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