2011-02-17 48 views
2

我在cocos2d中製作遊戲。遊戲場景有一個菜單按鈕可以回到主菜單,這是一個UIViewController。當用戶選擇再次播放並且在導演中調用相同的遊戲場景時,在遊戲場景之上會出現粉紅色的屏幕。重新加載相同的cocos2d場景顯示粉色屏幕

這可能是因爲用自己替換相同的場景。所以,當主菜單被調用時,我首先用空的場景替換它。代碼替換場景是:

if ([[CCDirector sharedDirector] runningScene] == NULL) { 
    [[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]]; 
} 
else { 
    [[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]]; 
} 

它檢查,如果沒有場景運行則第一次啓動遊戲場景。如果某個場景已經在運行,在這種情況下是空場景,則將其替換爲遊戲場景。遊戲場景的釋放也被稱爲這意味着舊場景被正確銷燬。即使這樣,用遊戲場景替換空場景也會產生粉紅色的屏幕,而替換任何其他新場景都不會產生任何問題。

什麼是原因和解決方案?

回答

1

最後,問題得到解決。它所需要的只是謹慎地添加和刪除視圖。當我回到UIViewController的菜單時,我從superview中刪除了OpenGLView。雖然再次更換的場景,相同的

[[CCDirector sharedDirector] openGLView] 

這是早期使用,必須重新添加到應用程序窗口。正確的地點和正確的時機做到了。

在視圖或精靈中的任何小錯誤可以顯示你粉紅色的屏幕:)