如何判断哪种类/场景正在运行?

时间:2012-06-11 23:53:10

标签: iphone ios xcode cocos2d-iphone

我正在尝试在我的应用程序委托方法中实现一些逻辑。知道当前正在运行哪种场景真的很有用。

[[CCDirector sharedDirector] runningScene]返回当前正在运行的场景。

是否有某种比较或功能来检查它是[MainMenuLayer scene]或[gameScene scene]的实例还是类似的?

我不太确定如何使用isKindOfClassisEqual,或者它们是否适用于此情况。感谢

2 个答案:

答案 0 :(得分:1)

正如您所假设的,您必须使用isKindOfClass。

if ([[[CCDirector sharedDirector] runningScene] isKindOfClass:[MySceneClass class]]) {
    // Running is scene is of type MySceneClass
}

答案 1 :(得分:0)

比任何人都要长时间难过。

这将返回一个CCScene:

[[[CCDirector sharedDirector] runningScene]

你想要那个类型为MySceneClass的场景的实例(对我而言是MenuScene),但最简单的方法就是标记它:

// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];

// 'layer' is an autorelease object.
MenuScene *layer = [MenuScene node];
layer.tag = kTagGameLayer;

// add layer as a child to scene
[scene addChild: layer];

// return the scene
return scene;

然后调整你的语句以使用getChildByTag:

if([[[[CCDirector sharedDirector] runningScene] getChildByTag:kTagGameLayer] isKindOfClass:[MenuScene class]]) {
        NSLog(@"current is MenuScene");

    }