我正在尝试用cocos2d实现游戏。我根据本教程中的说明启用了arc。 http://www.learn-cocos2d.com/2012/04/enabling-arc-cocos2d-project-howto-stepbystep-tutorialguide/
在用主菜单场景替换游戏场景后我意识到了一种奇怪的行为,我无法弄清楚问题。更换后,新场景出现并按预期工作,但游戏场景(旧场景)仍然会做出反应。我认为当我更换场景时,应该完全删除旧场景,但它会继续存在于新场景下。
部分相关代码如下:
的Singleton:
+(void) go: (CCLayer *) layer{
CCDirector *director = [CCDirector sharedDirector];
CCScene *newScene = [Singelton wrap:layer];
if ([director runningScene]) {
[director replaceScene: [CCTransitionFlipX transitionWithDuration:0.5 scene:newScene]];
} else {
[director pushScene:newScene];
}
}
+(CCScene *) wrap: (CCLayer *) layer{
CCScene *newScene = [CCScene node];
[newScene addChild: layer];
return newScene;
}
+(void) mainMenu
{
CCLayer *layer = [MainMenu node];
[Singleton go:layer];
}
当我需要进入主菜单场景时,我按如下方式调用单例类
[Singleton mainMenu]
如何在菜单场景出现后杀死游戏场景?
感谢您的帮助。
答案 0 :(得分:2)
Singleton做什么?我怀疑它可能是原因,在替换场景时/之后继续引用场景/图层或任何其他节点。