2009-11-04 5 views
1

Je développe un jeu où toutes les pages de paramètres, la page de score, les pages d'aide sont en forme de plume et le jeu est au format scène cocos2d (fichier Gamescene.h et m). J'ai donc besoin d'appeler la scène de jeu à partir d'un fichier nib lorsque le bouton "Démarrer le jeu" est pressé à partir de la plume. Et quand le jeu est terminé, je dois appeler le score .nib de la scène cocos. Mais je n'ai aucune idée Comment faire cela ....COCOS2D: Comment appeler un fichier nib à partir du menu cocos et vice versa?

Quelqu'un peut-il me donner une solution facile? Merci d'avance!

Cordialement, Benzamin.

Répondre

3

dans les applications que j'ai créé, je joins habituellement le directeur cocos2d à une vue à savoir

[[Director shareddirector] attachInView:myView]; 

Cela signifie que je peux superposer d'autres vues chargées de grué devant elle. Par exemple. Je pourrais faire quelque chose comme. . .

dans YourAppDelegate.h

GameViewController *gameViewController; 
ScoresViewcontroller *scoresViewController; 

.... 

@property (nonatomic, retain) GameViewController *gameViewController; 
@property (nonatomic, retain) ScoresViewController *scoresViewController; 

et à l'intérieur YourAppDelegate.m applicationDidFinishLaunching:

// Create the cocos2d view 
gameViewController = [[GameViewController alloc] init]; 
[window addSubview:gameViewController.view]; 

// Create the high scores view and controller 
scoresViewController = [[ScoresViewController alloc] initwithNibName:@"scoresNib" 
                   bundle:nil]; 
[window addSubview:scoresViewController.view]; 

Enfin, à l'intérieur du GameViewController vous auriez

- (void) loadView { 
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 

    [[Director sharedDirector] attachInView:self.view]; 

    // Now do your cocos2d scene stuff to start everything off e.g. create a scene 
    // and call runWithScene: on the sharedDirector 
} 

Ici, le code cocos2d fonctionne en arrière-plan et la vue des scores est superposée devant (ou caché jusqu'à ce que vous en ayez besoin etc.).

Puis, lorsque votre jeu a besoin de faire quelque chose pour les scores élevés, le GameViewController peut simplement obtenir le HighScoresViewController du délégué app-à-dire

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.scoresViewController.view.hidden = NO; 

Sam

PS Les réponses à this question pourrait aussi être utile pour vous :)

+0

Salut, Merci.Cela fonctionne pour moi .... mais est-ce la seule idée ... ?? – Rony

Questions connexes