2013-08-12 1 views
1

Мне нужно подключить два элемента графически. Каков наилучший способ рисовать произвольную линию между двумя объектами с помощью EaselJS? Можно ли сделать что-то вроде магнитных линий, прикрепленных к ближайшему объекту?Рисование произвольных строк с помощью EaselJS

У вас есть пример этого?

С уважением.

ответ

3

Самый простой/быстрый способ - это, вероятно, использовать форму и использовать moveTo() с координатами первого объекта, а затем lineTo() с координатами второго объекта. И всякий раз, когда объекты перемещаются, вы очищаете это и перерисовываете линию. Производительность мудрый Я не могу сказать, если это лучший способ, но если это не слишком много строк и рабочего стола, я бы не стал беспокоиться об этом, тогда вам должно быть хорошо.

Другим вариантом является использование растрового изображения, которое содержит линию и масштаб + поворот на правильную длину/угол, это, вероятно, более удобно, если вы хотите, чтобы ваша линия была «фантазией» каким-либо образом, и она быть слишком сложным для рисования с помощью формы.

+0

Оба подхода кажутся мне полезными, но я думаю, что я не буду перерисовывать линию, потому что ее можно использовать на мобильных устройствах. Вопрос, связанный с первым способом, есть ли способ проверить, сталкивается ли линия между двумя точками с третьим объектом? – Cod1ngFree

+0

уверен, метод 1) (возможно) наилучшим образом выполненный способ: измерить расстояние от obj3 до строки: http://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line и если оно ниже определенного порога (ширина/высота obj3), тогда вам нужно проверить, находится ли оно между объектами obj1 и obj2, если это так, то оно пересекает. ** или ** Метод 2) (немного более точно) Вычислите границы obj3 и используйте проверку строки для каждой стороны этого прямоугольника: http://en.wikipedia.org/wiki/Line-line_intersection, дополнительно вы 'd нужно проверить, находится ли одна из пересекающихся точек между obj1 + 2 – olsn

+0

или методом 3) Самый худший, но простой и пиксельный метод (работает только с растровыми изображениями и ** не ** с фигурами). Вы размещаете линию, затем выполните проверку столбцов (https://github.com/olsn/Collision-Detection-for-EaselJS), а затем выполните свои действия, если они столкнутся. – olsn

 Смежные вопросы

  • Нет связанных вопросов^_^