我正在开发一个应用程序,其中有一个可拖动的对象。用户可以将该对象拖动到指定的路径中,而不是路径之外。为了实现这一点,我必须设置边界条件,以便如果触摸点超出该边界条件,则对象不会移动。
我的问题是我的对象大小是 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];
}
}
请建议如何实现此功能或我应该遵循什么方法。