2009-04-09 7 views
0

J'essaye de redémarrer le même niveau du jeu une fois qu'il est terminé. J'utilise l'affichage des alertes pour afficher au moment de la finition. J'utilise 2 boutons dans AlertView (End et PlayAgain). Une fois que la fin est touchée, il devrait finir par fonctionner correctement. Le problème est une fois que playAgain est touché Le système AlertView s'affiche à nouveau mais je dois redémarrer la partie. Le code de l'index des boutons d'AlertView est indiqué ci-dessous.Comment redémarrer la scène du jeu en utilisant la vue d'alerte dans cocos2d

-(void)alertView :(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
    { 
    if(buttonIndex==0){ 
     exit(0); 
     NSLog(@"exit"); 
    } 
    else if(buttonIndex==1){ 

     // [self retain]; 
     GameScene *gameScene = [GameScene node]; 
     [[Director sharedDirector] replaceScene:gameScene]; 

     NSLog(@"Play Again"); 
    } 
} 

Ici, j'essaie de charger à nouveau ma page de jeux. Est-ce la bonne façon de faire.

S'il vous plaît aidez-moi à ce sujet.

Merci à l'avance,

Répondre

0

Pour autant que je peux voir, il n'y a rien de mal avec votre code pour charger le nouveau (même scène). C'est aussi la méthode que j'utilise pour revenir à la même scène.

Est-ce que votre code dans l'instruction "else if" est réellement atteint? Que se passe-t-il si vous placez un point d'arrêt dans l'autre bloc?

3

la même chose m'arrivait. Pour moi, il s'est avéré que j'avais un planificateur qui se produisait à chaque image et que cela arrivait deux fois avant que le message n'apparaisse. J'ai simplement utilisé:

[self unschedule:@selector(aFunction:)]; 

Ce sélecteur non programmé ne serait pas enregistré deux fois. J'espère que ça aidera quelqu'un! Si ce n'est pas le cas, vous pourriez peut-être essayer:

[[CCDirector sharedDirector] pause]; 

Dans l'espoir de s'arrêter la scène pour l'arrêter d'appeler à l'alerte deux fois.

0

code UR est tout à fait raison, mais si u r l'aide,

[[Director sharedDirector] replaceScene:gameScene]; 

ce code de sorte que la scène est Remplacer u ne peut pas revenir en arrière. Si vous voulez revenir en arrière utilisez push et pop comme ça.

[[Director sharedDirector] pushScene:[calssName scene]]; 
Questions connexes