2

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

这可能是因为用自己替换了相同的场景。因此,在调用主菜单时,我首先将其替换为空场景。代码替换场景为:

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

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

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

4

1 回答 1

1

最后,问题被抓住并解决了。它所需要的只是小心地添加和删除视图。返回 UIViewController 中的菜单时,我正在从超级视图中删除 OpenGLView。再次更换场景时,同样

[[CCDirector sharedDirector] openGLView] 

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

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

于 2011-03-08T14:32:35.790 回答