2013-01-20 82 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對我來說非常有用! 希望它有幫助