2012-11-14 54 views
0

我有一個基於UIButtons的UIKit菜單,當我點擊其中的一個時,我發射了一個cocos2D場景。我在AppDelegate中建立CCDirector:從UIKit菜單重新啓動cocos2d的場景

if(! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) 
    [CCDirector setDirectorType:kCCDirectorTypeDefault]; 
CCDirector *director = [CCDirector sharedDirector]; 
[director setAnimationInterval:1.0/60]; 
[director setDisplayFPS:YES]; 
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

,並在RootViewController的(中的viewController即會擁有我的EAGLView)我這樣做是在viewDidLoad方法:

glView = [EAGLView viewWithFrame:self.view.bounds 
           pixelFormat:kEAGLColorFormatRGBA8  
           depthFormat:0 

        ]; 

glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
[self.view insertSubview:glView atIndex:0]; 
[[CCDirector sharedDirector] setOpenGLView:glView]; 
CCScene *scene = [GameScene sceneWithParent:self]; 
[[CCDirector sharedDirector] runWithScene:scene]; 

我」 m在MainMenuViewController中設置我的菜單,從那裏我推動導航控制器的堆棧中的RootViewController。這工作完美,我的遊戲開始沒有問題。我也可以從RootViewController(擁有cocos2d場景)回來一個UIButton:- (IBAction)goBack { [self.navigationController popViewControllerAnimated:YES]; [[CCDirector sharedDirector] end];}

但是當我嘗試重新加載我的遊戲場景時,應用程序退出。我試過這種方法: restart CCDirector但徒然!我試圖暫停CCDirector並重新開始動畫,但也是徒勞的,我得到的錯誤是關於cocos2d的繪製方法! 請幫忙

回答

0

我剛剛解決了我的問題。所以如果您嘗試使用UINavigationController,則不必使用[[CCDirector sharedDirector] end],因爲當rootController從堆棧中移出時,所有cocos2d世界的場景都將被釋放。但是,如果你只是想刪除子視圖(而不是孔控制器),你必須結束CCDirector!我的問題出現在我作爲GameScene的一個孩子添加的單例類中,當我結束了CCDirector時,它仍然存在於內存中,所以我必須在重新創建遊戲場景之前釋放它。希望這一點很清楚。