arc启用cocos2d - 旧场景生活在replaceScene之后

时间:2012-08-21 22:24:54

标签: cocos2d-iphone automatic-ref-counting scene

我正在尝试用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]

如何在菜单场景出现后杀死游戏场景?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Singleton做什么?我怀疑它可能是原因,在替换场景时/之后继续引用场景/图层或任何其他节点。