【发布时间】:2012-05-29 06:06:52
【问题描述】:
我正在开发一个应用程序,其中有一个可拖动的对象。用户可以将该对象拖动到指定的路径中,而不是在路径之外。 为了实现这一点,我必须设置边界条件,以便如果触摸点超出该边界条件,则对象不会移动。
我的问题是我的对象大小是 30*30。 现在,如果我从上面的头发装置中触摸对象,然后将其向下拖动,它会给出一个值,但是如果我在下面的某个位置触摸同一个对象,比如说他的下巴,然后将对象移动到与我们相同的位置移动了上一个。现在在这种情况下,观点与上一个不同。 所以我不明白我应该设置什么边界条件,如果我设置了第一个值的条件,那么在他的情况下,第二个触摸过程将无法移动,这是错误的,如果我设置了第二个值,那么第一个案例对象也将能够移动到边界以下。 我没有使用 cocos 2D。它是简单的 ipad 应用程序。
为了进一步理解,我现在添加了图像,如果你触摸他左侧的绿色圆圈并向右移动,最后一个值就像 760,但如果你触摸右侧并向右移动,那么最后一个值点数为780左右。如果垂直拖动对象,也会发生同样的情况。
我的基本要求是对象只能在图像中显示的路径内移动,而不是在它之外。
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
// Retrieve the touch point
CGPoint pt = [[touches anyObject] locationInView:gamePice];
startLocation = pt;
}
- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint pt1 = [[touches anyObject] locationInView:gamePice];
CGPoint pt = [[touches anyObject] locationInView:self.view];
NSLog(@"moved=%f|%f",pt.x,pt.y);
if (pt.x>=306 && pt.y>=148 && pt.x<=720 && pt.y<=175) { //these conditions how to set
CGRect frame = [gamePice frame];
frame.origin.x += pt1.x - startLocation.x;
frame.origin.y += pt1.y - startLocation.y;
[gamePice setFrame:frame];
}
}
请建议如何实现此功能或我应该遵循什么方法。
【问题讨论】:
-
你不能在点上工作。相反,你应该在矩形上工作。如果内部矩形(gamepice)与外部矩形相交..不允许..否则允许....在这里检查 CGRect 方法。 .developer.apple.com/library/mac/#documentation/graphicsimaging/…
-
您能否提供一两步代码,我可以遵循。
-
我认为你必须使用 uiview 的边界。
标签: iphone objective-c ios touches touchesmoved