如何在 Cocos2d-x 中获取运行场景类类型



Cocos2d 中,我用来通过代码获取我当前的跑步场景:

CCScene *runningScene = [[CCDirector sharedDirector] runningScene];
    if ([runningScene isKindOfClass:[GameScene class]])

是否有任何类似的方法也可以在 cocos2d-x 上获取它???

我正在使用:

CCScene *scene = (CCScene *)CCDirector::sharedDirector()->getRunningScene();

但是如何与当前场景进行比较呢?

您可以使用

返回给定类型的指针或返回 NULL 值的dynamic cast

CCScene *scene = CCDirector::sharedDirector()->getRunningScene();    
GameScene* gameScene = dynamic_cast<GameScene*>(scene);    
if(gameScene != NULL)
{
   // scene is type of GameScene
}

您可以使用dynamic_cast,但您必须注意CCLayer和CCScene之间的区别。我猜GameScene是CCLayer的类型。因此,如果您编写以下代码,则无法获得有希望的结果。

GameScene *gameScene = dynamic_cast<GameScene*>(scene);

场景是CCScene型,GameSceneCCLayer型。您必须执行以下操作。

**

CCScene *scene = CCDirector::sharedDirector()->getRunningScene();
CCLayer *layer = (CCLayer*)(scene->getChildren()->objectAtIndex(0));
GameScene *gameScene = dynamic_cast<GameScene*>(layer);

**

如果GameScene继承自其他自定义层,例如MyLayer,则应使用MyLayer更改CCLayer

最新更新