有没有办法更具体地控制konva对象的拖动事件?
Is there a way to control more specifically the drag event of konva objects?
例如,通过设置 stage.draggable(true)
我们可以使舞台可拖动。
默认为连续运动,即鼠标在舞台上每施加一次拖动,都会触发拖动事件。这导致我的应用程序滞后,可能是因为在每次拖动事件后需要重新绘制大量形状。
那么,有没有什么办法可以控制拖拽事件的调用时机呢?或者我可以在每个拖动事件之间设置一个小的时间间隔吗?
不,在 Konva
中您无法控制调用拖动事件的时间。
Konva
正在更新位置并在每个 mousemove/touchmove
事件上触发 dragmove
事件。
但不会立即绘制。它会尽快绘制 requestAnimationFrame。
如果您想完全控制拖动,您可以手动实现。
比如 (1) 监听 mousedown/touchstart
事件,(2) 在 mousemove/touchmove
上移动节点和 (3) 在 mouseup/touchend
.
上停止拖动
在最好的情况下,您需要找到优化绘图的方法。通常缓存可以提高绘图的性能。您可以在 dragstart
上缓存并在 dragend
上清除缓存。
有关更多性能提示,请查看此处:https://konvajs.org/docs/performance/All_Performance_Tips.html
例如,通过设置 stage.draggable(true)
我们可以使舞台可拖动。
默认为连续运动,即鼠标在舞台上每施加一次拖动,都会触发拖动事件。这导致我的应用程序滞后,可能是因为在每次拖动事件后需要重新绘制大量形状。
那么,有没有什么办法可以控制拖拽事件的调用时机呢?或者我可以在每个拖动事件之间设置一个小的时间间隔吗?
不,在 Konva
中您无法控制调用拖动事件的时间。
Konva
正在更新位置并在每个 mousemove/touchmove
事件上触发 dragmove
事件。
但不会立即绘制。它会尽快绘制 requestAnimationFrame。
如果您想完全控制拖动,您可以手动实现。
比如 (1) 监听 mousedown/touchstart
事件,(2) 在 mousemove/touchmove
上移动节点和 (3) 在 mouseup/touchend
.
在最好的情况下,您需要找到优化绘图的方法。通常缓存可以提高绘图的性能。您可以在 dragstart
上缓存并在 dragend
上清除缓存。
有关更多性能提示,请查看此处:https://konvajs.org/docs/performance/All_Performance_Tips.html