【问题标题】:Konva Propagate events between layersKonva 在层之间传播事件
【发布时间】:2016-02-05 16:22:37
【问题描述】:

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

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

【问题讨论】:

  • 我也尝试将所有内容放在同一层中,并将层侦听器中的事件触发到形状上,但没有成功。

标签: javascript canvas kineticjs konvajs


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多