2013-01-05 103 views
0

我在iOS應用程序中有一個正常的故事板。它包含ViewController「A」和一個按鈕。當該按鈕被點擊,它加載的Cocos2D視圖 - 要做到這一點,我只是複製從默認AppDelegate中,當你創建一個新的Cocos2D項目,你得到的代碼:從ViewController中刪除Cocos2D

window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 


CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds] 
           pixelFormat:kEAGLColorFormatRGB565 
           depthFormat:0  
         preserveBackbuffer:NO 
           sharegroup:nil 
          multiSampling:NO 
          numberOfSamples:0]; 

[glView setMultipleTouchEnabled:YES]; 

director_ = (CCDirectorIOS*) [CCDirector sharedDirector]; 

director_.wantsFullScreenLayout = YES; 

[director_ setDisplayStats:YES]; 


[director_ setAnimationInterval:1.0/60]; 

[director_ setView:glView]; 

[director_ setDelegate:self]; 

[director_ setProjection:kCCDirectorProjection2D]; 

if(! [director_ enableRetinaDisplay:YES]) 
    CCLOG(@"Retina Display Not supported"); 

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; 
[sharedFileUtils setEnableFallbackSuffixes:NO];    // Default: NO. No fallback suffixes are going to be used 
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];  // Default on iPhone RetinaDisplay is "-hd" 
[sharedFileUtils setiPadSuffix:@"-ipad"];     // Default on iPad is "ipad" 
[sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd" 


[CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 


[director_ pushScene: [HelloWorldLayer scene]]; 


navController_ = [[UINavigationController alloc] initWithRootViewController:director_]; 
navController_.navigationBarHidden = YES; 

[window_ setRootViewController:navController_]; 


[window_ makeKeyAndVisible]; 

這一切都非常好,它的工作原理像加載「HelloWorldLayer」時的魅力一樣。 但是,我似乎無法刪除這個「HelloWorldLayer」,並使應用程序回到使用故事板。 目前我在做以下我的「HelloWorldLayer」功能:

[[CCDirector sharedDirector].openGLView removeFromSuperview]; 
[[CCDirector sharedDirector] removeFromParentViewController]; 
[self removeFromParentAndCleanup:TRUE]; 

這非常適用於從字面上項目移除cocos2d的,但我不能挖掘視圖控制器「A」什麼我有後完成上述操作:按鈕不響應觸摸 - 就好像應用程序已凍結。

幫助將不勝感激!

PS:這裏是有問題的文件的鏈接:http://www.mediafire.com/?ipnlpinl5i0lw4a

+0

也許你可以發佈一個示例項目,顯示問題的最簡單情況。 –

+0

@GradyPlayer好主意! http://www.mediafire.com/?ipnlpinl5i0lw4a –

回答

0

OK,我想通了:就是在第一行代碼分配的window_仍然覆蓋的ViewController答:我必須一旦HelloWorldLayer在視覺上消失了,就可以從ViewController A調用[window_ release]