0

我有一个应用程序。这个应用结合了 UIKit 和 Cocos2D。我有一个 UIKit 菜单,带有一个调用 cocos2D 游戏的按钮。它工作正常。

现在,我想移除 cocos 场景来推送 UIKit 菜单。(游戏结束,需要进入菜单视图)

我试过了

[[CCDirector sharedDirector] end];
[[CCDirector sharedDirector].openGLView removeFromSuperview];

它不起作用。我不知道该怎么做。

谢谢你的帮助 !

4

2 回答 2

1

尝试做这样的事情。当您在 uiviewcontroller 上推送 cocos 场景时,请在 ViewDidLoad 方法中添加此代码。

-(void)viewDidLoad{
[super viewDidLoad];
CCDirector *director = [CCDirector sharedDirector];

if([director isViewLoaded] == NO)
{

CCGLView *glView = [CCGLView viewWithFrame:[[[UIApplication sharedApplication] keyWindow] bounds]
                               pixelFormat:kEAGLColorFormatRGB565
                               depthFormat:0
                        preserveBackbuffer:NO
                                sharegroup:nil
                             multiSampling:NO
                           numberOfSamples:0];


director.view = glView;


[director setAnimationInterval:1.0f/60.0f];
[director enableRetinaDisplay:YES];
}

director.delegate = self;
[self addChildViewController:director];
[self.view addSubview:director.view];



[director didMoveToParentViewController:self];


if(director.runningScene)
{

[director replaceScene:[SceneFirst scene]];
}
else
{

[director runWithScene:[SceneFirst scene]];
}

}

这里 SceneFirst 是你想要推送的 cocos 场景。只需在你的 UiViewController 中添加 CCDirectorDelegate 作为委托。并在您的 ViewDidUnload 方法中添加这行代码

[[CCDirector sharedDirector] setDelegate:nil];

要弹回您的 Uikit 视图,请在点击的任何 CCmenu 上调用此代码

[[CCDirector sharedDirector] stopAnimation];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationController popViewControllerAnimated:YES];

希望这有帮助!!:)

于 2013-01-21T10:02:00.153 回答
1

在 cocos2d 2.0 及以上版本中试试这个:

展示视图控制器:

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];    

//presentModalViewController 
[app.navController presentModalViewController:leaderboardViewController animated:YES];

//dismissModalViewControllerAnimated:YES
[app.navController dismissModalViewControllerAnimated:YES];

添加子视图:

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[app.navController.view addSubview:mSegmentedControl];
于 2013-01-21T07:14:41.087 回答