Konva 在层之间传播事件

Konva Propagate events between layers

本文关键字:传播 事件 之间 Konva      更新时间:2023-09-26

>我在形状图层的顶部有一个透明的拖动层。使交互变得与众不同,因此我可以切换拖动的作用(在滚动视图或编辑形状位置之间)。 但是,除非我关闭拖动模式(通过隐藏中间的透明 Rect),否则不会在其下方的形状层上触发其他鼠标悬停事件。我需要将非拖动鼠标事件传播到其下方的图层。 有很多形状,鼠标悬停在事件上。

是否有一种简单的方法可以将鼠标悬停在事件上传播到其下方的层,或者我是否需要编写一个自定义处理程序来触发每个形状的事件?

我设法解决了这个问题,而不必在层之间传播事件。仅当未单击形状时,我才会在形状图层上的形状后面放置一个可拖动的表面。然后为了覆盖是否单击了形状,在形状 dragstart 事件中,如果设置了可分层可拖动标志,我会在形状上执行 stopDrag(),在图层上执行 startDrag()。这允许我使用简单的标志切换是要拖动整个图层,还是仅拖动形状。

我不得不清理一些 dragend 事件上的形状位置,但您也可以使用形状上的拖动边界来做到这一点。

shape.on('dragstart', function () {
    if (layerDraggable) {
        shape.stopDrag();
        shapeLayer.startDrag();
    }
}