Есть ли способ более точно контролировать событие перетаскивания объектов конва? - PullRequest
1 голос
/ 29 апреля 2020

Например, установив stage.draggable(true), мы можем сделать сцену перетаскиваемой.

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

Итак, есть ли способ контролировать время вызова события перетаскивания? Или, может быть, я могу установить небольшой промежуток времени между каждым событием перетаскивания?

1 Ответ

1 голос
/ 29 апреля 2020

Нет, в Konva вы не можете контролировать время запуска события перетаскивания.

Konva обновляет позиции и запускает событие dragmove для каждого события mousemove/touchmove.

Но оно не отрисовывается сразу. Это dr aws как можно скорее с requestAnimationFrame .

Если вы хотите иметь полный контроль над перетаскиванием, вы можете реализовать его вручную. Например, (1) прослушивание события mousedown/touchstart, (2) перемещение узла на mousemove/touchmove и (3) прекращение перетаскивания на mouseup/touchend.

В лучшем случае вам необходимо найти способы оптимизации чертежа. , Обычно кеширование значительно улучшает производительность рисования. Вы можете кэшировать на dragstart и очистить кеш на dragend.

Дополнительные советы по производительности смотрите здесь: https://konvajs.org/docs/performance/All_Performance_Tips.html

...