2012-09-20 3 views
1

Я разрабатываю приложение, и у нас возникают проблемы с многоточечным нажатием и слегка отложенным нажатием мультитач (что приводит к двум индивидуальным вызовам TouchesBegan).Multitouch Cocos2d TouchesBegan Individual vs Наборы касаний

Проблема мы столкнулись, когда игрок стучит двумя пальцами одновременно:

Иногда он может быть зарегистрирован как NSSet с touches.count = 2

ИЛИ

Иногда, если игрок слегка опоздал на 2-м касании, он будет регистрировать два вызова CCTouchesBegan каждый с touchs.count = 1.

Что было бы самым простым способом зарегистрировать вызовы TouchesBegan с touchhes.count = 2 AND когда игрок немного опоздал на 2-ом касании (два вызова TouchesBegan) с тем же обратным вызовом?

Моей первая мысль была, чтобы получить [временную метку события], и сравнить с предыдущей временной меткой, а затем проверить, чтобы увидеть, если он находится в пределах определенного интервала времени ...

Что бы лучший способ сделать это?

ответ

1

Вам не требуется сопоставление временных меток. Вместо использования касается Объект NSSet вы можете использовать событие для извлечения штрихов.

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if([[event allTouches] count] == 2) 
    { 
     // Do your thing here 
    } 
} 

Примечание: Если вы нажмете двумя пальцами с небольшим ccTouchesBegan задержки будет называться дважды, но во второй вызов событие объект будет иметь два касания.

+0

эй, спасибо Sohaib! Сколько времени потребуется на задержку, чтобы объект события сообщал о 1 касании, для второго вызова TouchesBegan? – KorinW

+0

Я только что протестировал его, и кажется, что сборка событий основана на том, что если у вас первый палец, когда второй палец падает вниз? Это верно? – KorinW

+0

Да, это правильно. Вы пытаетесь захватить двойной кран двумя касаниями? – Sohaib

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