您好我想在iphone上实现一个非常简单的游戏。我有图像和文字。如果用户在图像和文本之间画一条线,则表示“正确”
现在我在想的是,无论何时用户触摸屏幕,我都会得到该触摸点的位置(如X,Y)(调用哪种方法来获取位置?)然后我会画一个黑点那里。如果用户连续且平滑地触摸屏幕,则将形成一条线。最后,我只需要判断线的起点是否位于图像内,终点是否位于文本中。
我不知道我的想法是否是实现这种游戏的正确方法。如果是如何获得触摸点的坐标并在该特定位置画一个黑点?
感谢您的帮助!
答案 0 :(得分:1)
您可以在视图控制器的touchesMoved
中获取触摸坐标:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touch_point = [touch locationInView:self.view];
NSLog(@"x: %.0f y: %.0f", touch_point.x, touch_point.y);
}
要绘制线条,您需要在drawRect
中添加视图和绘制线条:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 1.0);
CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor);
// ...
CGContextMoveToPoint(context, one_x, one_y);
CGContextAddLineToPoint(context, two_x, two_y);
CGContextStrokePath(context);
// ...
}
其中one_x one_y two_x two_x
是两点的坐标..
答案 1 :(得分:0)
这正是iPhone touch委托工作的方式。它会调用touchesBegan:
,touchesMoved:
和touchesEnded:
。要绘制线条,您需要以下代码:
CGContextRef context = UIGraphicsGetCurrentContext();
[current set];
CGContextSetLineWidth(context, 4.0f);
for (int i = 0; i < (self.points.count - 1); i++)
{
CGPoint pt1 = POINT(i);
CGPoint pt2 = POINT(i+1);
CGContextMoveToPoint(context, pt1.x, pt1.y);
CGContextAddLineToPoint(context, pt2.x, pt2.y);
CGContextStrokePath(context);
}
在这段代码的帮助下,你应该准备好了。如果您需要任何帮助,只需对此发表评论或提出其他问题。
CGPoint pt = [[touches anyObject] locationInView:self];
[self.points addObject:[NSValue valueWithCGPoint:pt]];
[self setNeedsDisplay];