我正在尝试创建一个非常简单的游戏,您可以拖动一个简单的imageView。事情是框架中只有一个墙(只是一个矩形),图像不应该在那里。所以我做了这样的事情:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myImage) {
if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
{
myImage.center = [touch locationInView:self.view];
}
}
}
但问题是图像确实超出了界限,然后卡在那里,触摸移动结束。
所以我添加了这个:
else if (CGRectIntersectsRect (CGRectMake(801, 0, 223, 768), [myImage frame])) {
CGPoint touchedPoint = [touch locationInView:self.view];
myImage.center = CGPointMake(730, touchedPoint.y);
}
但这使得图像在与“墙”相交时开始闪烁,最终也卡在那里。
我觉得必须有一个简单的方法来做到这一点。有人可以开导我吗?
答案 0 :(得分:0)
确定发现了我的错误..
我必须这样做:
if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view]))
而不是:
if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
你们,很傻。