Повторное включение обнаружения касания на слоях в cocos2d
Я использую версию cocos2d 2.1, чтобы написать простую настольную игру для iOS. Логика требует отключения обнаружения касания на отдельных слоях в течение предварительно определенного периода времени. Хотя отключение обнаружения касания на отдельных слоях работает нормально, у меня много проблем с повторным включением обнаружения касания.
Я отключаю обнаружение касания, используя свойство touchEnabled
layer.touchEnabled = NO;
Я пытаюсь позже изменить это, используя то же свойство
layer.touchEnabled = YES;
Но это, похоже, не работает вообще, и ни одно из событий касания больше не распространяется на слой.
Что я здесь не так делаю? Есть что-то, чего мне не хватает??
2 ответа
Решено.
Оказывается, мне нужно было установить для touchMode значение kCCTouchesOneByOne в инициализаторе моего слоя, прежде чем установить для параметра touchEnabled значение YES. В противном случае неправильный диспетчер устанавливался внутри CCLayer и все испортил. Мне нужен был тот, у которого глотательные прикосновения установлены на ДА.
layer.touchMode = kCCTouchesOneByOne;
layer.touchEnabled = YES;
Вы должны дать диспетчеру делегата снова, это может помочь вам
-(void)touchActive
{
if (self.touchEnabled)
{
return;
}
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self
priority:0
swallowsTouches:YES];
self.touchEnabled = YES;
}