【问题标题】:KineticJS - drawing shapes with Drag & DropKineticJS - 使用拖放绘制形状
【发布时间】:2013-10-14 06:30:45
【问题描述】:

我已经看到通过在图层或舞台上捕获拖放事件来实现使用拖放(线条、矩形等)绘制形状的解决方案,但我想知道是否可以使用新形状本身的 DD 事件来做到这一点.

由于我处理了许多形状,如果在这种情况下形状本身处理它们的 DD 事件,它将使代码更加清晰和 OO。

因此,当舞台/图层接收到一个拖动开始时,将在该点创建一个新形状(即线条),然后所有进一步的绘图将不是由舞台/图层拖动移动/拖动处理,而是由新形状的拖动移动/拖拽。

我尝试使用 fire('dragstart') 来执行此操作,但它只是运行形状的 dragstart 事件的代码.. 它实际上并没有将形状置于拖动模式,也就是说,它不会触发任何 dragmove 事件拖动时在形状上(这是一个错误吗?)

有什么帮助吗? 谢谢!

【问题讨论】:

    标签: kineticjs


    【解决方案1】:

    不可能...任何形状的鼠标事件仅在鼠标悬停在该形状上时才会响应。

    由于一行的下一段尚不存在,因此您无法在不存在的下一段上拖动/移动/单击鼠标。

    或者,您可以像这样轻松高效地创建全新的折线:

    • 是的...监听舞台上的鼠标事件。
    • 在 mousedown 中,创建一个新的 Kinetic.Line,其中 1 点 = mousedown 位置。
    • 在 mousemove 中,将所有 mousemove 位置添加到线点数组(即时构建折线)
    • 在 mouseup 中,该行是完整的。

    【讨论】:

    • 好的,谢谢,我还需要稍后在线条边缘设置手柄以允许移动/调整大小,所以我试图避免代码重复,但我想我不能......我会标记你的答案
    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2012-07-24
    • 2021-07-30
    相关资源
    最近更新 更多