2011-11-12 1 views
1

나는 CCSprite 클래스를 서브 클래 싱하고 UIRotationGestureRecognizer를 추가했다. 그래서, 내 init 메소드에 나는이iPhone Cocos2D - 스프라이트를 회전하는 손가락

UIRotationGestureRecognizer *rot = [[[UIRotationGestureRecognizer alloc] 
         initWithTarget:self action:@selector(handleRotation:)] autorelease]; 
[rot setDelegate:self]; 
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:rot]; 

을 한 후 나는 방법

- (void)handleRotation:(UIRotationGestureRecognizer *)recognizer { 

    float rotation = [recognizer rotation]; 
    self.rotation += rotation; 
} 

가 완벽하게 작동하지만 실제 동작과 회전 자체 사이에 큰 지연을 가지고 있습니다. 제스처와 스프라이트 응답 사이에 거의 0.5 초가 걸립니다.

어떻게 해결할 수 있습니까? 감사.


참고 : UIPinchGestureRecognizer 및 UIPanGestureRecognizer : 첫 번째 코멘트 후, 나는 스프라이트에 두 개 더 인식기를 추가했습니다. 또한 대리자 메서드 shouldRecognizeSimultaneouslyWithGestureRecognizer를 추가하고이를 YES로 설정했습니다.

이 작업을 수행하고 확인한 후에 집게와 제스처는 지옥처럼 빠릅니다. 반면에 회전은 느리게 진행됩니다. 이 두 다른 제스처 인식기를 추가하여 회전 속도가 감소하지 않았습니다. 다른 두 사람은 유체 반응이 빠르며 UIRotationGestureRecognizer는 느립니다.

+0

보기에 다른 제스처 인식기를 설정 했습니까? – sergio

+0

번호. 너는 무엇을 의미 하는가? 스프라이트? 이것은 내가 가진 질문이다. gestureRecognizer가 [[[CCDirector sharedDirector] openGLView]를 사용하여 추가되면,이 openGLView는 저에게 모든 그래픽을 포함하는 마스터 openGLView로 들립니다. 이건 그냥 스프라이트로 설정하면 안됩니까? 그렇다면 어떻게해야합니까? – SpaceDog

+0

내가보기에 의미가있는 것은 'openGLView'입니다. 자신이 볼 수있는 유일한보기이기 때문에 제스처 인식기를 해당 뷰에 연결하는 것이 옳습니다 (마스터 뷰와 마찬가지로). 나는 또한하고 지연을 추가하지 않습니다. 네가 더 많은 임신을했다면. 인식기는 다음 몇 가지 interacion 될 수 있다고 생각, 나는 – sergio

답변

4

제스처 회전은 라디안이며 Cocos2D 회전 각도는도 단위입니다.

- (void)handleRotation:(UIRotationGestureRecognizer *)recognizer 
{ 
    float rotation = CC_RADIANS_TO_DEGREES([recognizer rotation]); 
    self.rotation += rotation; 
} 

또한 자신에게 이러한 문제를 저장적인 Cocos2D에뿐만 아니라이 easy to use interface for gestures을 추가 Kobold2D, (다른 입력 유형)를 사용할 수 있습니다뿐만 아니라적인 Cocos2D보기에 따라 값을 변환 : 그래서 당신은 다음과 같이 변환해야 좌표와 각도. 다시 값을 변환하는 것에 대해 생각할 필요가 없습니다.

+0

ahhhhhhhh, 많이 설명합니다!) 환상적입니다! 당신은 Cocos2D의 마스터입니다 !!!! – SpaceDog