我正在使用 cocos2d 并遇到以下问题:第一次初始化场景时,我开始使用:
[[CCDirector sharedDirector] runWithScene: [MenuScene node]];
在场景之间切换时,我总是使用:
[[CCDirector sharedDirector] replaceScene:[SceneName node]];
这很好用,我可以从 MenuScene 切换到 GameScene,然后切换到 GameOverScene,然后再切换回 MenuScene。但是当我再次切换到 GameScene,然后再次切换到 GameOverScene 并尝试第二次切换到 MenuScene(第三次,如果您计算初始 runWithScene 调用)时,应用程序崩溃并且我收到错误消息:
*** -[EAGLView swapBuffers]: message sent to deallocated instance 0x9614f80
sharedlibrary apply-load-rules all
根据我的阅读,应该至少存在一个场景(这里应该是这种情况?)。我还尝试通过对所有其他场景使用 pushScene 并在最后使用 popScene 返回到 MenuScene 来保持初始场景不变,但是我在第二次运行时也遇到了同样的错误。
我的 MenuScene 实现如下所示:
@implementation MenuScene
@synthesize menuLayer = _menuLayer;
- (id)init {
if ((self = [super init])) {
self.menuLayer = [MenuLayer node];
[self addChild:_menuLayer];
}
return self;
}
- (void)dealloc {
[_menuLayer release];
_menuLayer = nil;
[super dealloc];
}
@end