1

我正在尝试创建一个非常简单的游戏,您可以在其中拖动一个简单的 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];
  }
 }
}

但问题是图像确实超出了它的界限,然后卡在那里并且touchesmoved结束了。

所以我添加了这个:

    else if (CGRectIntersectsRect (CGRectMake(801, 0, 223, 768), [myImage frame])) {
   CGPoint touchedPoint = [touch locationInView:self.view];
   myImage.center = CGPointMake(730, touchedPoint.y); 

  }

但这使得图像在与“墙”相交时开始闪烁并最终卡在那里。

我觉得必须有一个简单的方法来做到这一点。谁能启发我?

4

1 回答 1

0

好的发现我的错误..

我不得不这样做:

if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view]))

而不是这个:

if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))

是的,很傻。。

于 2010-05-22T22:59:12.240 回答