我正在尝试在我的应用程序委托方法中实现一些逻辑。知道当前正在运行哪种场景真的很有用。
[[CCDirector sharedDirector] runningScene]
返回当前正在运行的场景。
是否有某种比较或功能来检查它是[MainMenuLayer scene]
或[gameScene scene]
的实例还是类似的?
我不太确定如何使用isKindOfClass
或isEqual
,或者它们是否适用于此情况。感谢
答案 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");
}