我正在开发一款游戏,其中所有设置页面,得分页面,帮助页面均为nib格式,游戏采用cocos2d场景格式(Gamescene.h和m文件)。因此,当从笔尖按下“开始游戏”按钮时,我需要从nib文件调用游戏场景。当游戏结束时,我需要从科科斯场景中调用得分.nib。但我不知道怎么做....
任何人都可以给我一个简单的解决方案吗?提前谢谢!
问候,Benzamin。
答案 0 :(得分:3)
在我创建的应用中,我通常将cocos2d导演附加到视图中,即
[[Director shareddirector] attachInView:myView];
这意味着我可以覆盖从其前面的笔尖加载的其他视图。例如。我可以做点什么。 。
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的答案也可能对您有用:)