2013-07-24 2 views
0

Всегда та же проблема.Добавление cclayer в сцену - отключается

У меня есть сцена, и я добавляю его CClayer из другого класса, который представляет собой фон с ccmenu на нем. Прикосновение к нему, касается этого слоя, и я не хочу его.

otherClass *layer=[otherClass alloc]init]; //otherClass returns a cclayer . 
[self addChild: layer]; 

слой хороший, и выше моей сцены, но прикосновения опускаются. Есть ли способ в cocos2d, чтобы включить ТОЛЬКО касания в верхнем слое? Я должен изменить приоритеты касания сейчас?

ответ

0

Вам необходимо изменить приоритет прикосновения и установить на ласточки. Для этого, зарегистрировать слой touchDispatcher настройки этих параметров (вы также можете увидеть CCLayer registerWithTouchDispatcher метод как пример):

[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; 
+1

все меню имеют приоритет, что ставит их перед этим, так что ... они будут по-прежнему служат прикосновениям. Вам нужно установить для свойства «enabled» нижних меню значение false, чтобы они не воздействовали на касания. Кроме того, вам нужно добавить свойство «enabled» для слоев ниже этого процесса, так что они просто игнорируют прикосновения, которые они получают при включении == NO; – YvesLeBorg

+0

, так что вы говорите, что когда я добавляю новый слой, просто отключите нижние меню, а затем снова включите их, когда я удалю этот слой? проблема заключается в том, что слой удаляет его из своего родителя, а нижний слой не знает об этом, когда верхний был удален, поэтому он не может снова включить его снова. – Curnelious

+1

Попробуйте уведомить верхний уровень с помощью делегата, как layerWillBeRemoved: – Bivis

Смежные вопросы