重新加载相同的cocos2d场景显示粉色屏幕

问题描述:

我在cocos2d中制作游戏。游戏场景有一个菜单按钮可以回到主菜单,这是一个UIViewController。当用户选择再次播放并且在导演中调用相同的游戏场景时,在游戏场景之上会出现粉红色的屏幕。重新加载相同的cocos2d场景显示粉色屏幕

这可能是因为用自己替换相同的场景。所以,当主菜单被调用时,我首先用空的场景替换它。代码替换场景是:

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

它检查,如果没有场景运行则第一次启动游戏场景。如果某个场景已经在运行,在这种情况下是空场景,则将其替换为游戏场景。游戏场景的释放也被称为这意味着旧场景被正确销毁。即使这样,用游戏场景替换空场景也会产生粉红色的屏幕,而替换任何其他新场景都不会产生任何问题。

什么是原因和解决方案?

最后,问题得到解决。它所需要的只是谨慎地添加和删除视图。当我回到UIViewController的菜单时,我从superview中删除了OpenGLView。虽然再次更换的场景,相同的

[[CCDirector sharedDirector] openGLView] 

这是早期使用,必须重新添加到应用程序窗口。正确的地点和正确的时机做到了。

在视图或精灵中的任何小错误可以显示你粉红色的屏幕:)