嘗試做這樣的事情。 當您在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