2013-04-25 69 views
0

我開始與一個UIViewController的比賽中這樣說:如何殺死一個cocos2d的場景直接無需更換現場

navController = [[MyNavigationController alloc] initWithRootViewController:myController]; 

,當你按下按鈕,遊戲在遊戲開始的場景是這樣的:

[[CCDirector sharedDirector] runWithScene:gameScene]; 

OK,現在當我想放棄我剛剛更換的UIViewController(因爲我做了UIKit中的菜單,並與cocos2d的遊戲)與起始視圖控制器做我想做的動畫,它工作正常..但顯然舊的運行場景仍然留在記憶中,我不會以任何方式釋放它需要刪除場景,並使應用程序像第一次運行時一樣。

replaceScene不起作用,我只需要停止運行的場景並使應用程序開始運行時的所有內容,直接從[CCDirector sharedDirector]中進行,我該怎麼做? popScene不會工作。

+0

負荷空的場景和呼叫導演的stopAnimation – LearnCocos2D 2013-04-25 21:20:46

+0

我不能加載空場景,我需要切換當前場景和UIViewController(正在工作),我試圖停止動畫並調用[[CCDirector sharedDirector] end];場景結束了,但是當我打電話給另一場比賽場景時,沒有任何反應 – Adarkuccio 2013-04-25 22:24:02

+0

你必須調用startAnimation。你的uiviewcontroller不是全屏嗎? – LearnCocos2D 2013-04-26 09:19:38

回答

0

您可以從應用程序中刪除CCDirector。

導演是一個簡單的UIViewController所以,你可以調用

[[CCDirector sharedDirector] removeFromParentViewController]; 

和呼叫後[[CCDirector sharedDirector] end];刪除singlenton實例

+0

我有一些遊戲,不只是一個,當我退出一個遊戲時,我將切換UIViewController和場景之間的場景,如果我按照你所說的去做,當我開始另一個遊戲時,我會收到「不初始化TextureCache之前的導演「崩潰消息 – Adarkuccio 2013-04-26 06:27:13

+0

好吧,嘗試在調用Director的」end「方法之前釋放TextureCache ... [CCTextureCache purgeSharedTextureCache]; – busta117 2013-04-26 13:44:15

+0

似乎沒什麼可行的,我有一個更簡單的問題,如果你有2場比賽的2場比賽,你會在appDelegate開始?以及你應該如何替換他們?無論我做什麼似乎都是錯誤的,如果我放置一個場景,讓我們在appDelegate中說「遊戲1場景」,然後按下「遊戲1按鈕」,它會正確顯示。 但是,如果我把「遊戲1場景」放在appDelegate中,然後按下「遊戲2按鈕」,我得到了-OpenGL錯誤0x050-,然後場景開始(「損壞」動畫)。我嘗試了一個「介紹場景」,但結果是我總是出現一個錯誤和交換不佳的動畫 – Adarkuccio 2013-04-26 23:55:58