2011-10-05 4 views
3

iphone 앱이 cocos2d로 제작되었으며 다른 클래스에서 현재 레이어에 액세스해야합니다. HelloWorldLayer와 Cannon이 있는데, 대포 노드에서 HelloWorldLayer에 액세스해야합니다. HelloWorldLayer에 어떻게 액세스 할 수 있습니까? 아래처럼 내 레이어의 정적 인스턴스를 만들려고했지만 해결할 수없는 dealloc 문제가 추가됩니다. 다른 클래스의 현재 레이어에 어떻게 액세스합니까? 도와주세요?cocos2d에서 현재 레이어에 액세스하는 방법

static HelloWorldLayer* helloWorldLayerInstance; 

답변

3

당신은 항상 현재 실행 장면을 받고 다음 일반적으로 하나 또는 그 이상의 층입니다 장면의 아이를 얻어서 어느 시점에서 현재 레이어에 액세스 할 수 있습니다. 따라서 현재 활성 레이어를 얻으려면 다음과 같은 것을 원할 것입니다.

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

그런 다음 원하는 레이어를 얻기 위해 반복 할 수 있습니다.

P. hellowWorldLayerInstance를 정적 변수로 사용해야하는 이유는 무엇입니까? 이것은 별도의 질문/토론의 원인 일 수 있지만 나는 호기심이 많습니다.

0

Rob의 대답은 모든 시나리오에 가장 적합합니다.

하지만 당신의 CannonHelloWorldLayer에 자식으로 추가하는 경우, 당신은 단순히 parent 속성에 액세스하여 Cannon 내부에서 HelloWorldLayer 얻을 수 있습니다

. 예를 들어

:

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