COCOS2D:如何从cocos菜单调用nib文件,反之亦然?

时间:2009-11-04 07:06:59

标签: iphone cocos2d-iphone

我正在开发一款游戏,其中所有设置页面,得分页面,帮助页面均为nib格式,游戏采用cocos2d场景格式(Gamescene.h和m文件)。因此,当从笔尖按下“开始游戏”按钮时,我需要从nib文件调用游戏场景。当游戏结束时,我需要从科科斯场景中调用得分.nib。但我不知道怎么做....

任何人都可以给我一个简单的解决方案吗?提前谢谢!

问候,Benzamin。

1 个答案:

答案 0 :(得分:3)

在我创建的应用中,我通常将cocos2d导演附加到视图中,即

[[Director shareddirector] attachInView:myView];

这意味着我可以覆盖从其前面的笔尖加载的其他视图。例如。我可以做点什么。 。

在YourAppDelegate.h中

GameViewController *gameViewController;
ScoresViewcontroller *scoresViewController;

....

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

并在applicationDidFinishLaunching中的YourAppDelegate.m中:

// 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];

最后,在GameViewController中你会有

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

这里,cocos2d代码在后台运行,分数视图覆盖在前面(或隐藏,直到你需要它等)。

然后,当你的游戏需要对高分做一些事情时,GameViewController可以从应用代表那里获得HighScoresViewController,即

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

萨姆

PS this question的答案也可能对您有用:)