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というファイルの列挙型に一意のタグを設定し、それをタグへのアクセスが必要なクラスにインポートできます。
タグの例.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