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

时间:2011-02-17 22:18:03

标签: uiviewcontroller cocos2d-iphone scene

我正在用cocos2d制作游戏。游戏场景有一个菜单按钮,可以回到主菜单,这是一个UIViewController。当用户选择再次播放并调用相同的游戏场景在导演中运行时,游戏场景顶部会出现粉红色的屏幕。

可能是因为用自己替换了同一个场景。因此,当调用主菜单时,我首先用空场景替换它。代码替换场景是:

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

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

原因是什么,解决方案是什么?

1 个答案:

答案 0 :(得分:1)

最后,问题被抓住并解决了。它需要的是仔细添加和删除视图。当我回到UIViewController中的菜单时,我正在从superview中删除OpenGLView。在重新替换场景的同时,

[[CCDirector sharedDirector] openGLView] 
之前使用的

必须添加回应用程序窗口。正确的地点和正确的时机做到了。

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