KineticJS:禁用拖动

Posted

技术标签:

【中文标题】KineticJS:禁用拖动【英文标题】:KineticJS: Disable dragging 【发布时间】:2012-06-07 13:53:59 【问题描述】:

我需要找到一种在 KineticJS 中禁用拖动形状的方法

例如,我有一个启用了 draggable 选项的 Circle。

如果按下 shiftKey,我想禁用拖动这个圆圈,我想以不同的方式处理这种情况。

这是我想做的一个例子:http://jsfiddle.net/nL3kb/

有可能吗?

【问题讨论】:

【参考方案1】:

您有多种选择。您可以做的一件事是使组可拖动并将圆圈添加到组中。在 mousedown 时,如果按下 shift,您可以取消事件传播,从而取消组拖放功能。

http://jsfiddle.net/SyMRJ/

您还可以添加逻辑,在按下 shift 键时使用 draggable(false) 关闭拖放

干杯!

【讨论】:

谢谢!我对分组解决方案不太满意,但它似乎对我有用 更新 - 您现在可以随时使用 .setDraggable(false) 取消实时 KineticJS 拖放操作 我刚刚在 Kinetic.js 5.1.0 中对此进行了实验:看起来 mousedown 事件处理程序中的 setDraggable(true/false)(取决于按键)是唯一可靠的 防止发生拖拽的方法。 dragstart / dragmove 为时已晚(拖动已经发生),并且 mousedown 中的 cancelBubble / stopPropagation() 不起作用。

以上是关于KineticJS:禁用拖动的主要内容,如果未能解决你的问题,请参考以下文章

KineticJs - 将图像合并到另一个图像上

KineticJS教程(1-2)

Chrome 和 Opera 中的 Kinetic JS 性能问题

KineticJS - 带有连接的可拖动形状

KineticJS / Javascript 动态创建和立即拖动

扩展 KineticJS - 自定义过滤器