iphone - Cocos2D iPhone - 从 CCLayer 在主场景上运行方法

标签 iphone ios cocos2d-iphone

我在游戏中有一个主场景,我调用了菜单,用户可以在其中选择新比赛的参数(玩家数量、难度级别等)。

此菜单是在 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/

相关文章:

iphone - 如何在触摸时获得像素颜色?

iphone - 为什么在NSArray上使用SQLite

iphone - iphone sdk 中的日期操作?

iphone - 如何计算具有给定中心、角度和半径的点?

html - iframe 视频与 ios 上的填充容器重叠

ios - 如何将 json 解码为键中有空格的结构/类对象?

objective-c - 如何旋转坐标系?

ios - 将应用内购买添加到 Open Feint 支持的游戏中

ios - 使用 UIActivityViewController 分享实时照片

ios - 如何判断指针指向的值何时为nil