尝试做这样的事情。 当您在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];
希望这有助于!! :)
从超视图中删除后会发生什么?它保持在屏幕上还是只是黑色? – skytz
我将它从超级视图中移除后,我的cocos2D视图只是“冻结”。 – evraenne
您是否尝试在应用程序的窗口中添加新视图?我理解它的方式是这样的:一个EAGLView被创建并且CCDirector被添加到那个..当导演结束时你需要从superview手动删除视图(你做了),但是现在应用程序的窗口没有视图..所以你需要添加一个 – skytz