我在游戏中有这个主要场景,我已经调用了菜单,用户可以在其中选择新匹配的参数(玩家数量,难易程度等)。
此菜单是在CClayer上创建的,并使用以下内容显示在主场景的顶部:
CCLayer *menu = [Menu node];
id actionFadeIn = [CCFadeIn actionWithDuration:0.3];
[menu runAction:[CCSequence actions:actionFadeIn, nil]];
[self addChild:menu z:1 tag:theMenu];
这个菜单的类有一个基本逻辑。对于在该菜单上选择的每个参数,在单例上设置适当的参数。现在用户已经选择了所有参数,它将按下START GAME按钮。
当发生这种情况时,菜单必须消失,并且一个名为startGame的方法必须在主场景上运行,但这是我的问题:如何从菜单类运行该方法?我以为我能做到
CCScene *currentScene = [[CCDirector sharedDirector] runningScene];
[currentScene startGame];
但我不能这样做,因为当前场景本身不是一个实例,它的每个方法只能从内部场景运行,而不能从外部运行。
我想过使用通知发布一个命令来运行该类的方法,但这听起来很蹩脚,就像使用大炮来杀死苍蝇一样。如何在科科斯做到这一点的最佳方式?
感谢。
答案 0 :(得分:1)
我在以下帖子中对您的问题有一个非常详细的答案:
Accessing Objects in other Layers (cocos2d)
你基本上把你的场景变成了“半单身”。如果您更喜欢不同的方法,还会解释其他方式。
答案 1 :(得分:0)
我认为消失的菜单很简单你只需要在同一层即菜单上调用消失方法。现在,当您按下开始按钮时,您可以在菜单类中调用一个方法,说startPressed
- (void)startPressed{
[[self parent] start];
}
菜单图层的父级是您的游戏图层。