2011-11-12 19 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:最初のコメントの後、私はスプライトにさらに2つの認識器を追加しました。デリゲートメソッドshouldRecognizeSimultaneouslyWithGestureRecognizerを追加し、それをYESに設定しました。

これを実行して確認した後、ピンチとパンのジェスチャは地獄のように速いです。一方、回転は遅くなります。これらの2つのジェスチャー認識器を追加することによって、回転速度の低下はありませんでした。他の2つは流体に反応し、速く、UIRotationGestureRecognizerは遅いです。

+0

ビューに他のジェスチャ認識機能を設定しましたか? – sergio

+0

番号。あなたは何を意味するのでしょうか?スプライト?これは私が持っている質問です。 gestureRecognizerが[[CCDirector sharedDirector] openGLView]を使用して追加されると、このopenGLViewはすべてのグラフィックスを保持するマスターopenGLViewとして私に鳴ります。これをスプライトだけにしてはいけませんか?もしそうなら、どうしたらいいですか? – SpaceDog

+0

私が言ったビューは正しく 'openGLView'です。あなたが持っている唯一のビューであるので、ジェスチャ認識ツールをそのビューに(あなたが言うように、マスタービューと)合わせてください。私もやっているし、遅れも加えない。あなたがもっと幸せを使っていたら。私は考えました – 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、それはたくさんのことを説明しています!Fantastic!ありがとう、あなたはCocos2Dのマスターです!!!! – SpaceDog

関連する問題