Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在cocos2d中访问当前层_Iphone_Xcode_Cocos2d Iphone_Box2d - Fatal编程技术网

Iphone 如何在cocos2d中访问当前层

Iphone 如何在cocos2d中访问当前层,iphone,xcode,cocos2d-iphone,box2d,Iphone,Xcode,Cocos2d Iphone,Box2d,我有一个用cocos2d构建的iphone应用程序,需要从另一个类访问当前层。我有一个HelloWorldLayer和一个Cannon,我需要从Cannon节点访问HelloWorldLayer。如何访问HelloWorldLayer?我已经尝试创建一个静态的层实例,如下所示,但它增加了dealloc问题,我似乎无法修复。如何从其他类访问当前图层?请帮忙 static HelloWorldLayer* helloWorldLayerInstance; 通过获取当前正在运行的场景,然后获取该场景

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

static HelloWorldLayer* helloWorldLayerInstance;

通过获取当前正在运行的场景,然后获取该场景(通常是一个或多个层)的子场景,始终可以在任何时间点访问当前层。因此,要获取当前活动层,您将需要以下内容:

CCArray* layers = [[CCDirector sharedDirector] runningScene].children
然后您可以遍历子对象以获得所需的层


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

罗布的答案适用于任何情况

但是如果您的
Cannon
作为子级添加到
HelloWorldLayer
,您只需访问
parent
属性,从
Cannon
内部访问
HelloWorldLayer

例如:

// somewhere inside @implementation Cannon
HelloWorldLayer *layer = (HelloWorldLayer *)self.parent;