2016-02-05 104 views
1

我在形状层的顶部有一个透明的拖动层。非常适合使互动截然不同,因此我可以切换拖动操作(在滚动视图或编辑形状位置之间)。但是,除非关闭拖动模式(通过隐藏介入的透明Rect),否则其他鼠标悬停事件都不会在其下面的形状图层上触发。我需要将非拖动的鼠标事件传播到它下面的图层。有很多鼠标悬停事件的形状。Konva在层之间传播事件

有没有一种简单的方法来将鼠标悬停在事件下方的层上,还是需要编写自定义处理程序来为每个形状触发事件?

+0

我也尝试将所有内容放在同一图层中,并将事件从图层侦听器触发到形状上,但没有运气。 –

回答

1

我设法解决这个问题,而不必在图层之间传播事件。只有在没有单击形状的情况下,我才会在形状图层上的形状后面放置可拖动的表面。然后,为了覆盖单击形状,在形状dragstart事件上,如果设置了layerdraggable标志,则在形状上执行stopDrag()和在图层上执行startDrag()。这使我可以切换一个简单的标志,无论我想要整个图层拖动还是仅仅是形状。

我不得不清理dragend事件中的一些形状位置,但也可以通过形状上的拖拽来完成。

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