2017-02-24 7 views
0

私はObjective-CでiOS用のボールスワイピングゲームを作成しています。スクリーンをスワイプしてボールを動かします。私はあなたがスワイプする場所の反対方向にボールが動くように設定しました。たとえば、私が下にスワイプして離すと、ボールは上に移動します。iOSのTouchesMovedで描くCGContextライン

CGContextを使ってボールが移動する方向を示すための線を作成しました。ラインはボールの中心(ball.center.x、ball.center.y)から指でスワイプするポイント(movePoint)まで開始します。私は画面をスワイプするときにmovePointに線を引くのではなく、逆方向に線を描くようにしています。たとえば、画面上をスワイプすると、上方向に線が引かれます。

私は座標系を使っていろいろ試してみましたが、スワイプした場所の反対方向を正しく指し示すことができません。これについては具体的なアプローチはありますか?

ありがとうございます。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    movePoint = [touch locationInView:self.view]; 

    if (CGRectContainsPoint([ball frame], firstPoint)) { 
     _contextImage.hidden = NO; 
     UIGraphicsBeginImageContext(self.view.frame.size); 
     CGContextRef context = UIGraphicsGetCurrentContext(); 
     CGContextSetLineWidth(context, 2); 
     CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); 
     CGContextMoveToPoint(context, ball.center.x, ball.center.y); 
     CGContextAddLineToPoint(context, movePoint.x, movePoint.y); 
     CGContextStrokePath(context); 

     self.contextImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 
} 
+0

このリンクがお役に立てば幸いです。http://stackoverflow.com/questions/25150674/drawing-with-cgcontext –

答えて

0

まあ、タッチ位置にボールの中心からデルタ-X movePoint.x - ball.center.xを次のようになります。

は、ここに私のtouchesMoved機能です。それを置く別の方法は、タッチ位置のX座標がball.center.x + (movePoint.x - ball.center.x)、右ですか?さて、反対方向の点は、加算の代わりに(または別の方法で、デルタXを否定することによって)減算することによって計算されます:ball.center.x - (movePoint.x - ball.center.x)

Y位置についても同じことが言えます:ball.center.y - (movePoint.y - ball.center.y)

だから、あなたの行をそこに描画してください。

関連する問題