Вы можете использовать CCDirector, чтобы сказать, какая сцена запущена.
[[CCDirector sharedDirector] runningScene];
Что касается отображения меню.Вы должны проверить с родителем меню.Если родитель, где находится ваш CCLayer, то вы можете проверить с помощью
// assume menu is set up to have tag kMenuTag
CCMenu * menu = [self getChildByTag:kMenuTag];
, если меню является дочерним по отношению к какому-либо другому узлу, вы можете получить родительский элемент аналогичным способом и получить ссылку на меню.
Если menu == nil
, он не отображается.
ОБНОВЛЕНИЕ
В cocos2d вам не рекомендуется хранить ссылки на все ваши спрайты, вместо этого вы должны давать каждому узлууникальный тег и используйте его для ссылки на него.Чтобы достичь своей первой цели, вы можете присвоить своей сцене тег в ваших 2 соответствующих классах CCLayer.
Вы можете установить свои уникальные теги в перечислении в файле с именем Tags.h, а затем импортировать его в любые классы.которым нужен доступ к вашим тегам
Пример Tags.h
enum {
kScene1Tag = 0,
kScene2Tag = 1,
kMenuTag = 2};
Затем в вашем классе слоев
+(id) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
scene.tag = kScene1Tag;
// 'layer' is an autorelease object.
HelloWorld *layer = [HelloWorld node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
Теперь, когда вы берете текущую сцену, вы можете проверить потеги
int currentSceneTag = [[CCDirector sharedDirector] runningScene].tag;
if (currentSceneTag == kScene1Tag) {
} else if (currentSceneTag == kScene2Tag) {
}
Свойство tag
относится к CCNode
, который является базовым классом CCLayer
, CCScene
, CCSprite
, CCMenu
...