2010-11-15 71 views
2

Hello awesome dev社区。 我已经找了几天的答案,现在似乎找不到句柄,于是决定自己发帖。Cocos2d:从另一个CCLayer(父母?)调用函数CCLayer

我有一个游戏,有挑选物品的菜单。 菜单可以有2 - > 30+项目,所以他们需要滚动。还有类别菜单,当点击一个项目时,会出现一个包含该类别项目的新菜单。

我认为最有效的方法是在专用层上创建菜单所需的所有元素。 问题是我不知道如何从包含菜单的CCLayer调用主游戏场景中定义的addNewItems:itemsArray函数。

或者,我应该只使用一层?有点混乱,难以将多件物品放在一起。

非常感谢您的任何帮助 - 或者指出我的方向明确的教程或如何做到这一点的例子,因为我老实说找不到任何东西。

下面是我正在创建的流程图。

谢谢!

Hanaan

alt text

回答

5

最后得到的回答从David994A(cocos2d的论坛)

答案是一个指针传递给它的父层 层我初始化CCLayer这样的:

- (id)initWithParent:(CCLayer *)parentLayer;

并调用它是这样的:

ItemsMenuLayer * tempLayer = [[ItemsMenuLayer的alloc] initWithParent:自];

然后,从内部CClayer我可以调用任何的父层的功能,这样的:

[parentLayer functionName];

+1

但是你把那些放在哪里呢?你能发布一个.h和.m例子吗? – VagueExplanation 2011-05-05 17:01:53

+0

'functionName'必须是一个静态方法,对吧? – fuzz 2011-11-02 06:04:11

+0

对不起,对此回复迟了...... initWithParent是图层的初始化方法 ItemsMenuLayer * tempLayer = [[ItemsMenuLayer alloc] initWithParent:self];线正在创建场景中的图层的一瞬间。 在任何一个图层的方法中,你都可以从父项调用一个函数:[parentLayer functionName]; – 2011-12-14 18:30:03