2013-01-20 57 views
0

我有一个应用程序。这个应用程序结合了UIKit和Cocos2D。 我有一个调用cocos2D游戏的按钮的UIKit菜单。它工作正常。在cocos2D场景中推ViewController

现在,我想删除可可场景以推送UIKit菜单。 (比赛结束时,有必要走在菜单视图)

我试图

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

它不工作。我不知道该怎么办。

感谢您的帮助!

+0

从超视图中删除后会发生什么?它保持在屏幕上还是只是黑色? – skytz

+0

我将它从超级视图中移除后,我的cocos2D视图只是“冻结”。 – evraenne

+0

您是否尝试在应用程序的窗口中添加新视图?我理解它的方式是这样的:一个EAGLView被创建并且CCDirector被添加到那个..当导演结束时你需要从superview手动删除视图(你做了),但是现在应用程序的窗口没有视图..所以你需要添加一个 – skytz

回答

0

试试这个在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]; 
0

尝试做这样的事情。 当您在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是要push.Just在UIViewController作为委托添加CCDirectorDelegate您茯苓场景。 并加入这行代码在你ViewDidUnload方法

[[CCDirector sharedDirector] setDelegate:nil]; 

对于弹出回到您的UIKit视图中调用这个代码在任何CCmenu挖掘

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

希望这有助于!! :)

0

来自Ray Wenderlich的This tutorial对我来说非常有用! 希望它有帮助