我正在尝试在我的应用程序委托方法中实现一些逻辑。知道当前正在运行哪种场景会非常有帮助。
[[CCDirector sharedDirector] runningScene]
返回当前运行的场景。
是否有某种比较或函数来检查它是否是 my[MainMenuLayer scene]
或 [gameScene scene]
或类似的实例?
我不太确定如何使用isKindOfClass
or isEqual
,或者它们是否适用于这种情况。谢谢
我正在尝试在我的应用程序委托方法中实现一些逻辑。知道当前正在运行哪种场景会非常有帮助。
[[CCDirector sharedDirector] runningScene]
返回当前运行的场景。
是否有某种比较或函数来检查它是否是 my[MainMenuLayer scene]
或 [gameScene scene]
或类似的实例?
我不太确定如何使用isKindOfClass
or isEqual
,或者它们是否适用于这种情况。谢谢
正如您所假设的,您必须使用 isKindOfClass。
if ([[[CCDirector sharedDirector] runningScene] isKindOfClass:[MySceneClass class]]) {
// Running is scene is of type MySceneClass
}
被这个问题困扰的时间比任何人都要长。
这将返回一个 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");
}