2012-09-20 7 views
1

저는 앱을 설계하고 있으며 멀티 터치 태핑과 약간 지연된 멀티 터치 태핑 (TouchesBegan에 대한 두 번의 개별 호출이 있음)과 관련된 문제가 있습니다.멀티 터치 Cocos2d TouchesBegan 개별 vs 터치 세트

플레이어가 동시에 두 손가락으로 탭하면 우리가 건너 한 문제는 :

때때로

이 touches.count = 2

또는

과 NSSet로 등록 할 수 있습니다 때로는 플레이어가 2 번째 터치를 약간 늦추면 CCTouchesBegan에 두 건의 호출이 각각 touches.count = 1로 등록됩니다.

TuchesBegan 호출을 모두 touches.count = 2 AND로 등록하는 가장 쉬운 방법은 무엇입니까? 플레이어가 동일한 콜백으로 두 번째 터치 (TouchesBegan에 두 번 호출)가 약간 늦 으면?

내 초기 생각합니다 ... [이벤트 타임 스탬프]를 얻을하고 특정 시간 간격 내에 있는지 확인 후, 이전의 타임 스탬프가를 비교하는 가장 좋은 방법이 될 것입니다 무엇

이?

답변

1

타임 스탬프 비교가 필요하지 않습니다. 을 사용하는 대신 NSSet 객체를 사용하면 이벤트을 활용하여 접촉을 검색 할 수 있습니다.

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

참고 : 두 개의 터치가 두번하지만 두 번째 호출 이벤트 객체에서 호출되는 약간의 지연 ccTouchesBegan 두 손가락으로 누르십시오.

+0

안녕하세요, 감사합니다. Sohaib! TouchesBegan에 대한 두 번째 호출에 대해 이벤트 객체가 1 터치 횟수를보고하기까지 얼마나 오래 지연됩니까? – KorinW

+0

방금 ​​테스트 한 결과 두 번째 손가락이 내려 앉을 때 첫 손가락을 쥐고 있으면 번들링 이벤트가 기반으로 한 것 같습니다. 이 올바른지? – KorinW

+0

네, 맞습니다. 두 번 터치하여 두 번 탭하려고하십니까? – Sohaib