cocos2d: ccTouchesBegan не вызывается, но ccTouchBegan срабатывает

#cocos2d-iphone #multi-touch

#cocos2d-iphone #мультитач

Вопрос:

Я пытаюсь заставить мой подкласс CCLayer реагировать на мультитач. В методе инициализации, который я вызываю

 self.isTouchEnabled=YES;
  

В методе, называемом registerWithTouchDispatcher, я вызываю

 [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
  

В моем делегате приложения я вызываю

 [glView setMultipleTouchEnabled:YES];
  

Вызывается метод ccTouchBegan:withEvent:, но никогда ccTouchesBegan:withEvent. Я довольно новичок в cocos2d, так что это может быть что-то простое, я просто не могу понять, что это такое.

Комментарии:

1. Глупый вопрос, но… Было ли несколько касаний?

Ответ №1:

Добавьте [[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0]; в свой класс, чтобы получать нецелевые касания.

Из документации cocos2d (ссылка:http://www.cocos2d-iphone.org/api-ref/0.99.0/interface_c_c_touch_dispatcher.html )

CCTouchDispatcher. Синглтон, который обрабатывает все события касания. Диспетчер отправляет события зарегистрированным операторам касания. Существует 2 разных типа сенсорных обработчиков:

Стандартные обработчики касаний Нацелены на обработчики касаний Стандартные обработчики касаний работают подобно обработчику касаний CocoaTouch: набор касаний передается делегату. С другой стороны, целевые обработчики касаний получают только 1 касание одновременно, и они могут «проглатывать» касания (избегать распространения события).

Во-первых, диспетчер отправляет полученные касания целевым касаниям. Эти касания могут быть проглочены целевыми обработчиками прикосновений. Если все еще остаются касания, то оставшиеся касания будут отправлены в стандартные обработчики прикосновений.