如何访问cocos2d中的当前图层

时间:2011-10-05 22:33:10

标签: iphone xcode cocos2d-iphone box2d

我有一个用cocos2d构建的iphone应用程序,需要从另一个类访问当前图层。我有一个HelloWorldLayer和一个Cannon,我需要从我的Cannon节点访问HelloWorldLayer。我如何访问HelloWorldLayer?我已经尝试过如下创建我的图层的静态实例,但它添加了我似乎无法解决的dealloc问题。如何从另一个类访问我当前的图层?请帮帮忙?

static HelloWorldLayer* helloWorldLayerInstance;

2 个答案:

答案 0 :(得分:3)

您始终可以通过获取当前正在运行的场景,然后获取该场景的子节点(通常是一个或多个图层)来随时访问当前图层。因此,要获得当前活动的图层,您需要类似......

CCArray* layers = [[CCDirector sharedDirector] runningScene].children

然后,您可以遍历子项以获取所需的图层。

P.S。为什么需要将hellowWorldLayerInstance作为静态变量?这可能是一个单独的问题/讨论的原因,但我很好奇。

答案 1 :(得分:0)

Rob的答案非常适合任何场景。

但如果您将Cannon作为孩子添加到HelloWorldLayer,则可以通过访问HelloWorldLayer属性从Cannon内部parent转到// somewhere inside @implementation Cannon HelloWorldLayer *layer = (HelloWorldLayer *)self.parent;

例如:

{{1}}