我正在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();
}
}
答案 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}}。
所以,把你的线划到那里。