2013-05-06 2 views
0

Ive выглядел повсюду, я мог бы, потому что то, что я угадываю, имеет простое решение. Но я новый программист, и у меня проблемы. У меня есть несколько перетаскиваемых кругов изображений в моем представлении, и я хочу предотвратить перекрытие между изображениями. Я не ищу никаких серьезных решений о столкновении (трение, векторы и т. Д.), Просто что-то, чтобы прекратить просмотр изображений после того, как они вступают в контакт друг с другом.Предотвращение перетаскивания двух перетаскиваемых кругов при их пересечении

Любое руководство к решению оценивается. Благодарю.

ответ

0

Это должно быть просто сравнение местоположения и радиусов ... При попытке перетащить, вычислите расстояние между центрами центра двух кругов (используя новое местоположение), и если это меньше суммы радиусы, они перекрываются. Псевдокод:

onMoveAttempted() { расстояние = SQRT (((перемещение (х) - existingcircle (х))^2) + ((перемещение (у) - existingcircle (у))^2))

если (расстояние < (радиус перемещения окружности + радиус существующей окружности) затем запрещают движение, как круги перекрывались бы конец, если }

+0

да, я спрашиваю, что это «запретить движение» код будет – pDev1

+0

Вам нужно будет предоставить больше контекста о вашей конкретной ситуации. В вашем onDrag (предположим, что это w или он включен), вы должны иметь доступ к старому местоположению и новому местоположению. Затем вы должны иметь возвращаемое значение, которое позволяет отменить событие перемещения (пример кода того, что вы до сих пор могли бы быть более конкретным). Если у вас нет этой опции, тогда программным образом установите местоположение обратно на старые (предварительно перемещаемые/перетаскиваемые) значения или до предела, где он соприкасается. – user1676075

+0

плохо попробуйте, спасибо – pDev1