Выбор нескольких объектов с помощью хитбокса при рисовании бокса в konvajs

В настоящее время я пытаюсь выбрать несколько объектов (в частности, линии) и добавить их в Группу / Трансформатор, нарисовав прямоугольник. Для этого я выполнил этот очень полезный вопрос о переполнении стека.

После его реализации я не был очень доволен результатами, потому что мне нужно было проверять весь список форм каждый раз, когда я рисовал прямоугольник, даже если я не проходил через форму.

Пытаясь найти решение этой проблемы, я подумал, что есть способ узнать, что линия столкнулась с нарисованным прямоугольником. Однако мне не посчастливилось обнаружить что-то похожее на то, что я пытаюсь воспроизвести. Есть ли у меня пример или способ нарисовать рамку, чтобы выбрать несколько объектов, когда они сталкиваются с рамкой?


person elco45    schedule 15.07.2020    source источник
comment
Вы проверяли эту демонстрацию konvajs.org/docs/select_and_transform/Basic_demo.html? Он показывает выбор рамкой.   -  person lavrton    schedule 15.07.2020
comment
Привет, @lavrton, в этом примере им также нужно было получить все формы на сцене, когда он вызывает var shape = stage.find ('. Rect'). ToArray (). Является ли проверка каждой формы на сцене единственным способом проверить наличие пересечений / столкновений с помощью поля выбора?   -  person elco45    schedule 15.07.2020
comment
Вы можете просто попробовать сделать это один раз на mousedown. Но я не вижу никаких проблем с тем, чтобы делать это при каждом движении мыши. У вас проблемы с производительностью?   -  person lavrton    schedule 15.07.2020
comment
Не сейчас, потому что у меня всего несколько фигур. Однако, если я создал еще несколько, я хотел бы узнать, как лучше всего решить эту проблему. Если бы у меня было много фигур, разве проверка всего моего списка фигур за одно движение мыши не сильно повлияла на мою производительность?   -  person elco45    schedule 16.07.2020
comment
Если вы рассматриваете собственный метод поиска пересечений, имейте в виду, что у вас могут быть непрямоугольные формы, и даже ваши прямоугольные формы могут вращаться. Хит-тестирование с этими задачами может быть «интересной» работой, требующей больших временных затрат. Я считаю, что у Konvajs есть несколько стратегий оптимизации, которые охватывают эти моменты.   -  person Vanquished Wombat    schedule 16.07.2020


Ответы (1)


Проверка каждой формы на сцене - единственный способ проверить пересечения.

Если вам нужна оптимизация, вы можете попробовать стратегии противодействия или дросселирования.

Например. проверять взаимодействия каждые 100 мс, а не каждые mousemove или touchmove события.

person lavrton    schedule 16.07.2020