2013-05-06 113 views
0

我无处不在我可以为我猜测有一个简单的解决方案。但是我是一个新的程序员,而且有点麻烦。我在视图中有几个可拖动的图像视图圆圈,我想防止图像视图之间有任何重叠。我不是在寻找任何严重的碰撞解决方案(摩擦,矢量等),只是为了阻止图像视图在彼此接触后再继续前进。防止两个可拖动的圆圈交叉时重叠

赞赏解决方案的任何指导。谢谢。

回答

0

这应该只是一个简单的位置和半径比较... 当试图拖动时,计算任意两个圆的中心点之间的距离(使用新的位置),如果小于半径,它们重叠。伪代码:

onMoveAttempted() { 距离= SQRT(((移动(X) - existingcircle(X))^ 2)+((移动(Y) - existingcircle(Y))^ 2))

如果 (距离<(动圈+现有的圆的半径) 然后 半径禁止的举动,因为圈将重叠 结束时,如果 }

+0

是的,我问什么是“禁止移动”码将是 – pDev1 2013-05-06 21:02:08

+0

你需要提供更多关于你的特定情况的上下文。在你的onDrag(假设这是w帽子它,或onMove)回调,你应该有权访问旧的位置和新的位置。那么你应该有一个返回值,允许你取消移动事件(代码示例,你到目前为止有助于更具体)。如果您没有该选项,那么以编程方式将位置设置回旧的(预移动/拖动)值,或设置为与其进行联系的限制。 – user1676075 2013-05-07 14:15:11

+0

生病请尝试,谢谢 – pDev1 2013-05-07 15:42:01