2011-02-03 4 views
1

표준 iOS 그래픽 라이브러리 (Core Graphics)를 사용하여 이미 멀티 터치 이미지 회전을 구현했습니다.Cocos2d 멀티 터치 스프라이트 회전을 구현하는 방법은 무엇입니까?

그것은 다음과 같습니다

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] == 2) { 
     NSArray *twoTouches = [touches allObjects]; 
     UITouch *first = [twoTouches objectAtIndex:0]; 
     UITouch *second = [twoTouches objectAtIndex:1]; 

     CGFloat currentAngle = angleBetweenLinesInRadians([first previousLocationInView:self.view], [second previousLocationInView:self.view], [first locationInView:self.view], [second locationInView:self.view]); 

     pic1.transform = CGAffineTransformRotate(pic1.transform, currentAngle); 

    } 
} 

은 지금은 내적인 Cocos2D 프로젝트에이 솔루션을 구현하기 위해 노력하고있어. 먼저 CCTouchDispacher를 init 메서드에 등록했습니다. 내 ccTouchMoved 기능에서

- (id) init 
{ 
    ... 
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; 
    ... 
} 

나는 (NSSet *)에 (UITouch *)를 변경하고 단지 모든 것이 정확했다 확인하기 위해 프로젝트를 만들었습니다. 결과적으로 다음과 같은 경고 메시지가 나타납니다. "호환되지 않는 Objective-C 유형이 'struct NSSet *'을 초기화하고 'struct UITouch *'가 필요합니다." "

모든 것이 올바르게 작동하는 것처럼 보였으므로 계속 이동하여 (NSSet *) touch에서 첫 번째 및 두 번째 터치 객체를 추출하려고했습니다.

- (void)ccTouchMoved:(NSSet *)touch withEvent:(UIEvent *)event { 
    if ([touch count] == 2) { 
     NSArray *twoTouches = [touch allObjects]; 
     UITouch *first = [twoTouches objectAtIndex:0]; 
     UITouch *second = [twoTouches objectAtIndex:1]; 
    } 

} 

지금 내가 근무하는 컴파일하려고하지만 난 아이폰 시뮬레이터를 통해 ccTouchMoved를 트리거 한 후, 나는 오류 메시지가 다음 있어요 "- [UITouch 계산] : 인식 할 수없는 선택기 인스턴스 0x542d6a0 '에 보내".

누군가가이 Cocos2d ccTouchMoved 메서드를 사용하여 멀티 터치 이벤트를 인식하고 처리하는 방법을 설명해 주실 수 있습니까?

감사합니다.

+0

안녕 팩맨, 당신은 당신이 angleBetweenLinesInRadians을 구현 어떻게했는지 말해 줄 수있다 다수의 접촉을 캡처 할로

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event 

? 감사. –

답변

3

잘못된 CC2D 방법을 사용했습니다.

당신은 오히려

- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

사용해야합니다 다음 ccTouchMoved의 capturs 하나의

+0

안녕하세요 톰, 위의 의견에서 반복 질문에 대한 죄송합니다, 당신은 내게 angleBetweenLinesInRadians 알고리즘 (알고리즘) 위의 팩맨 코드에 구현 된 아이디어를 줄래? 4 개의 CGPoint 인수를 취합니다. 감사합니다 –

+0

가능한 솔루션을 보려면 여기를 확인하십시오. http://bit.ly/14154Ej –

+0

특정되지 않으므로 죄송합니다. atan2와 두 지점 사이의 각도를 얻을 수 있습니다. 그 4 가지 매개 변수에 대해 알고 싶었습니다. 왜 이전 위치에 있는지 알고 싶습니다. 인수가 계산에 사용 되었습니까? 현재 위치와의 현재 각도를 얻고 있으므로 계산되는 다른 것들이 더 있습니까? –

관련 문제