Повторное включение обнаружения касания на слоях в 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;

}
Другие вопросы по тегам