我在游戏中有一个主场景,我调用了菜单,用户可以在其中选择新比赛的参数(玩家数量、难度级别等)。
此菜单是在 CClayer 上创建的,并使用以下命令显示在主场景顶部:
CCLayer *menu = [Menu node];
id actionFadeIn = [CCFadeIn actionWithDuration:0.3];
[menu runAction:[CCSequence actions:actionFadeIn, nil]];
[self addChild:menu z:1 tag:theMenu];
这个菜单的类有一个基本逻辑。对于该菜单上选择的每个参数,都会在单例上设置适当的参数。现在用户已经选择了所有参数,它将按下“开始游戏”按钮。
发生这种情况时,菜单必须消失,并且必须在主场景上运行一个名为 startGame 的方法,但这是我的问题:如何从菜单类运行该方法?我以为我能做到
CCScene *currentScene = [[CCDirector sharedDirector] runningScene];
[currentScene startGame];
但我不能这样做,因为当前场景本身不是实例,并且它的每个方法只能从场景内部运行,而不能从外部运行。
我想过使用通知来发布在类上运行该方法的命令,但这听起来很蹩脚,就像用大炮杀死苍蝇一样。在 Cocos 中最好的方法是什么?
谢谢。
最佳答案
我在以下帖子中对您的问题有非常详细的回答:
Accessing Objects in other Layers (cocos2d)
您基本上使您的场景成为“半单例”。如果您更喜欢不同的方法,还解释了其他方法。
关于iphone - Cocos2D iPhone - 从 CCLayer 在主场景上运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540949/