2011-02-03 8 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プロジェクトでは、このソリューションを実装しようとしています。まず、私のinitメソッドにCCTouchDispacherを登録しました。私ccTouchMoved機能で

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

私は(NSSet *)に(UITouch *)に変更し、ちょうどすべてが正しかったことを確認するためのプロジェクトを構築しました。その結果、私は次のような警告を受けました: "互換性のないObjective-C型は 'struct NSSet *'を初期化し、 'struct UITouch *' 'を期待します。

すべてが正常に動作していたように私は移動し、(NSSet *)touchから1番目と2番目のタッチオブジェクトを抽出しようとしました。

- (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]; 
    } 

} 

は今、私が働いている、それをコンパイルしようとしたが、私はiPhoneシミュレータを通じて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

こんにちはTomさん、上のコメントから繰り返し質問して申し訳ありません、あなたは私にangleBetweenLinesInRadiansが上記のパックマンコードでどのように実装されているか(アルゴリズム)を教えてください。 CGPointの引数は4つです。ありがとう –

+0

解決方法はこちらhttp://bit.ly/14154Ej –

+0

特定できないのは残念ですが、atan2で2点間の角度を得ることができます。私はこれらの4つのパラメータについて知りたいと思います。引数は計算に使用されましたか?私は現在の位置と現在の角度を取得していますので、他のものが計算されていますか? –

関連する問題