FabricJS:对象:移动事件不会在用户选择多个对象时触发

FabricJS: object:moving event doesn't fire when user selects multiple objects

本文关键字:对象 选择 事件 移动 FabricJS 用户      更新时间:2023-09-26

在FabricJS中,有一个对象:移动事件可以触发一个函数,我已经操纵了它以保持线连接到点,就像他们在火柴人演示中一样:http://fabricjs.com/stickman/

在他们的演示中,他们通过单击并拖动圆点周围的正方形来选择点,然后通过单击并拖动来移动所选对象。就我而言,我希望用户能够选择多个点并同时拖动它们,但现在发生的事情是线条与点断开连接。这个确切的问题在他们的二次曲线示例中得到了说明:http://fabricjs.com/quadratic-curve/。一次选择两个点并拖动您的选择...它将断开线的点。

移动选择时有没有办法整理事件?它似乎动态创建了一个组,但我尝试使用 selection:create 事件来控制该组,并再次在组中的每个对象上设置一个对象:移动事件处理程序,但没有成功。这里有什么想法吗?

您可以采取两种方法。

  1. 将侦听器添加到画布中以用于"对象:移动"事件。这将为任何移动对象或组触发。 canvas1.on('object:moving', function(event) { console.log("object:moving"); });

  2. 创建选择组后,您可以将移动事件直接添加到该组。

    canvas1.on('selection:created', function(event) { canvas1.getActiveGroup().on('moving', function(event) { console.log('moving'); }); console.log("selection created"); });

这个小提琴有两者的例子。http://jsfiddle.net/pxnfbt89/