Как получить доступ к текущему слою в cocos2d - PullRequest
3 голосов
/ 06 октября 2011

У меня есть приложение для iphone, созданное с помощью cocos2d, и мне нужен доступ к текущему слою из другого класса. У меня есть HelloWorldLayer и Cannon, и мне нужно получить доступ к HelloWorldLayer из моего узла Cannon. Как я могу получить доступ к HelloWorldLayer? Я попытался создать статический экземпляр моего слоя, как показано ниже, но он добавляет проблемы с деллоками, которые я не могу исправить. Как я могу получить доступ к своему текущему слою из другого класса? Пожалуйста, помогите?

static HelloWorldLayer* helloWorldLayerInstance;

Ответы [ 2 ]

3 голосов
/ 06 октября 2011

Вы всегда можете получить доступ к текущим слоям в любой момент времени, получив текущую бегущую сцену и затем получив дочерние элементы этой сцены, которые обычно представляют собой один или несколько слоев. Таким образом, чтобы получить текущие активные слои, вам нужно что-то вроде ...

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

Затем вы можете перебирать дочерние элементы, чтобы получить нужный слой.

P.S. Зачем вам нужен ваш hellowWorldLayerInstance в качестве статической переменной? Это может быть причиной для отдельного вопроса / обсуждения, но мне любопытно.

0 голосов
/ 06 октября 2011

Ответ Роба идеально подходит для любых сценариев.

Но если ваш Cannon добавлен как ребенок к вашему HelloWorldLayer, вы можете просто добраться до HelloWorldLayer изнутри Cannon, открывparent свойство.

Например:

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