禁用某些元素的平移Fabric.js

时间:2017-02-21 18:59:51

标签: javascript reactjs fabricjs

我正在使用Fabric.js做反应,我在其上实现了一些工具。 以下是它的外观:

enter image description here

但是有一个平移工具,我正在使用fabric的relativePan()函数。我遇到的一个问题是,使用平移工具拖动时,标尺(标有红色)不应该移动。 它们也是画布的一部分,与其他元素一样。

有没有办法禁用某些元素的平移?我试过了:

lockMovementX
lockMovementY
selectable: false

1 个答案:

答案 0 :(得分:1)

诀窍是在平移时从静止物体中减去移动坐标:

canvas.on('mouse:move', function(e) {
  if (panning && e && e.e) {
    moveX = e.e.movementX;
    moveY = e.e.movementY;
    topRuler.set({
      top: topRuler.top - moveY,
      left: topRuler.left - moveX
    });
    leftRuler.set({
      top: leftRuler.top - moveY,
      left: leftRuler.left - moveX
    });
    canvas.relativePan(new fabric.Point(moveX, moveY));
  }
});

这是一个有效的JSFiddle,https://jsfiddle.net/rekrah/z3p8utmc/