2010-08-01 5 views
5

Je développe une application iPhone en utilisant cocos2d et box2d.Dans cette application, je dois définir une minuterie. La minuterie montrera le temps restant en main d'un joueur pour atteindre la destination ...cocos2d: Comment régler un minuteur

comment puis-je faire cela ..... j'ai dessiné une scène mais pas sûr car je suis débutant comment ajouter minuterie.

merci

Répondre

6

Vous pouvez utiliser CCTimer. comme ceci:

float delay = 1.0; // Number of seconds between each call of myTimedMethod: 
CCTimer *myTimer = [[CCTimer alloc] initWithTarget:self 
          selector:@selector(myTimedMethod:) interval:delay]]; 

La méthode myTimedMethod: sera appelé alors chaque seconde.

+0

Quel est l'avantage d'un 'CCTimer' sur un' NSTimer'? –

+0

Il utilise le mécanisme de planification interne de cocos2d. Si je comprends bien, cela dépend du type de CCDirector utilisé. Les avantages et les inconvénients (s'il y en a) sont probablement hors de propos dans ce cas. – LearnCocos2D

+8

Un gros avantage est que cette minuterie est mise en pause lorsque le jeu est en pause, je pense. –

18

Je voudrais simplement planifier un sélecteur avec un intervalle. Cela fonctionne dans toutes les classes basées sur CCNode.

Planifier un sélecteur déclenché une fois par seconde:

[self schedule:@selector(timerUpdate:) interval:1]; 

Cette méthode est appelée une fois par seconde:

-(void) timerUpdate:(ccTime)delta 
{ 
    numSeconds++; 
    // update timer here, using numSeconds 
} 

méthode de Parseval à l'aide CCTimer est ok aussi, mais vous devriez préférer la autorelease statique initialiseur comme ceci:

CCTimer *myTimer = [CCTimer timerWithTarget:self 
            selector:@selector(myTimedMethod:) 
            interval:delay]]; 
+0

Cette méthode pose problème dans v2.x. Quel est le remplacement pour cela. Bien que le fichier d'en-tête contienne la méthode mais Xcode donne une erreur. –

+0

Même ici. Il n'y a plus de méthode timerWithTarget ou initWithTarget (iOS 7.1, Xcode 5.1.1.). –