0

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

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

是否有某种比较或函数来检查它是否是 my[MainMenuLayer scene]或 [gameScene scene]或类似的实例?

我不太确定如何使用isKindOfClassor isEqual,或者它们是否适用于这种情况。谢谢

4

2 回答 2

1

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

if ([[[CCDirector sharedDirector] runningScene] isKindOfClass:[MySceneClass class]]) {
    // Running is scene is of type MySceneClass
}
于 2012-06-11T23:55:29.623 回答
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");

    }
于 2013-03-27T00:19:14.490 回答