在iOS

时间:2017-02-24 23:17:31

标签: ios objective-c core-graphics

我正在Objective-C中为iOS创建一个球刷游戏,您可以在其中滑动屏幕并移动球。我将它设置为使球以与您滑动的方向相反的方向移动。例如,如果我向下滑动并释放,球会向上移动。

我创建了一条线来显示球使用CGContext移动的方向。该线从球的中心(ball.center.x,ball.center.y)开始到您用手指滑动的点(movePoint)。我试图这样做,当我滑动屏幕,而不是画一条线移动点,它会在相反的方向画一条线。例如,如果我在屏幕上向下滑动,则会向上绘制一条线。

我试过摆弄坐标系,但我似乎无法正确地指向我滑动的方向相反的方向。有什么特别的方法可以解决这个问题吗?

谢谢。

这是我的touchesMoved函数:

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

1 个答案:

答案 0 :(得分:0)

嗯,从球的中心到触摸位置的delta-X将是ball.center.x + (movePoint.x - ball.center.x)。另一种方法是触摸位置的X坐标为ball.center.x - (movePoint.x - ball.center.x),对吧?那么,相反方向上的点是通过减去而不是添加(或换句话说,通过否定delta-X)来计算的:ball.center.y - (movePoint.y - ball.center.y)

Y位置也是如此:{{1}}。

所以,把你的线划到那里。