【问题标题】:Kineticjs lyaer drag and node inside layer dragend conflictKineticjs lyaer拖动和层内节点拖动冲突
【发布时间】:2014-02-06 12:58:13
【问题描述】:

我在 Kineticjs 中有一个层,其中包含更多形状,请参见附图: 我们可以将图层的内容分为两部分: 1.对象(矩形) 2.我们可以缩放对象的选择节点(4个角)和可以旋转对象的旋转标志

我在图层拖动上有事件处理程序(因为我需要同时移动所有元素),并且我在缩放节点和旋转标志上也有事件处理程序。问题是当节点和旋转标志的拖动(结束、开始、移动)被触发时,图层拖动事件也会自动触发。

我尝试设置layer.setListening(false),然后设置回true,但没有结果。 如何在拖动缩放节点和旋转标志时使图层的事件不被触发?

[编辑] 这是一个 UML 图,可以查看我的层的结构。每一层都直接添加到阶段:

【问题讨论】:

    标签: html5-canvas kineticjs


    【解决方案1】:

    您可以将所有元素(矩形等)放在一个 Kinetic.Group 中,将缩放+旋转锚点放在第二个 Kinetic.Group 中。

    这样您就可以通过移动它们的组来同时移动所有矩形。

    当你想拖动缩放/旋转锚点时,你可以在矩形层上设置监听。

    当使用 setX/setY 移动缩放/旋转锚点时,您仍然可以使矩形移动。

    【讨论】:

    • 我附上了我的层的 UML 图。这就是我的图层的结构。在我的情况下,可以通过拖动图层来移动项目。我选择了移动层而不是移动对象,只是因为如您所见,我有 grSel 组,其中包含出现在选择中的节点。这些对象必须与图层同时移动。这很好用,但似乎当我拖动缩放节点时,也会自动触发图层拖动事件。这对我不利,因为这两个都向历史数组添加了一个条目,但只需要一个。
    猜你喜欢
    • 2012-12-12
    • 2013-01-07
    • 2013-06-29
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2013-02-16
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多