0

私は現在、学習プロジェクトとして小さなゲームを設計しています。基本的には、画像が回転および拡大されviewDidLoad、別の画像が元の画像の直接コピーです。

つまり、基本的に他の画像とは少し異なる画像があります。目的は、縮小して回転させ、5 ピクセル、5 度の回転、5 パーセントのスケールで他の画像の上に移動することです。

問題が発生しました。次のコードを使用して画像を「ゆがめます」...

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2.5);
image.transform = CGAffineTransformScale(transform, 1.25, 1.25);

画像を回転させてから 125% 拡大すると、パン ジェスチャが正しく実行されません。

ここで何が起こっているのか知っている人はいますか?間違って言うと、指で動かないという意味です. 滑るように見えるか、反対方向に進むように見えます. ビデオ

私のパンジェスチャー方法は以下です。

if (gesture.state == UIGestureRecognizerStateBegan || gesture.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [gesture translationInView:image];
        //if within game field
        if((image.center.x + translation.x) > 50.0 && (image.center.x + translation.x) < 255.0 && (image.center.y + translation.y) > 50.0 && (image.center.y + translation.y) < 302) {
            [image setCenter:CGPointMake([image center].x + translation.x, [image center].y + translation.y)]; //move it
        }
    }
    [gesture setTranslation:CGPointZero inView:[image superview]];
    if(gesture.state == UIGestureRecognizerStateEnded) [self didWin]; // not relevant to question

画像を回転およびスケーリングした後、パンが正しく実行されない理由を知っている人はいますか? コードの最初の 2 行をコメント アウトすると、パンは正しく実行され、ユーザーの指で動き回ります。

提案やヘルプをお寄せいただきありがとうございます。

4

2 に答える 2

0

解決策は、パンコードをほんの少し変更することでした..

if (gesture.state == UIGestureRecognizerStateBegan || gesture.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [gesture translationInView:self.view]; //CHANGED
        //if within game field
        if((image.center.x + translation.x) > 50.0 && (image.center.x + translation.x) < 255.0 && (image.center.y + translation.y) > 50.0 && (image.center.y + translation.y) < 302) {
            [image setCenter:CGPointMake([image center].x + translation.x, [image center].y + translation.y)]; //move it
        }
    }
    [gesture setTranslation:CGPointZero inView:self.view];

私は変わっ in view:self.viewて、translationInView:self.view];

于 2013-06-18T21:53:32.720 に答える