2009-07-27 3 views
1

Ich verwende derzeit den cocos2d Director zur Steuerung meiner Animation mit den Methoden pause, resume und stopAnimation. Ist es auch möglich, den Director zu verwenden, um die Zeit zurückzugeben, die die Animation gespielt hat?Kann die cocos2d Director-Rückkehrzeit?

ich zur Zeit mit dieser Methode:

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

Antwort

3

Ich sah durch die Quelle Director und habe nichts gesehen, die Ihnen helfen würde. Ich habe bemerkt, dass Ihr Code, wie geschrieben, die Zeit nicht berücksichtigt, in der Ihre Animation pausiert wurde oder wenn andere Szenen abgespielt wurden.

Wenn dies ein Problem ist, können Sie die verstrichene Zeit in einer Tick-Methode verfolgen, die Sie in Ihrer Szene oder Schicht planen.

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