2

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

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

4

1 回答 1

3

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

我必须在 dragend 事件上清理一些形状位置,但或者您可以使用形状上的 dragbounds 来做到这一点。

shape.on('dragstart', function () {
    if (layerDraggable) {
        shape.stopDrag();
        shapeLayer.startDrag();
    }
}
于 2016-02-10T22:48:57.397 回答