【问题标题】:FabricJS - disable panning viewport -x -y axisFabricJS - 禁用平移视口 -x -y 轴
【发布时间】:2017-07-17 23:09:11
【问题描述】:

如果鼠标离开画布并且鼠标在 -x -y 轴上移动,我想禁用平移。 如何禁用视点 -x -y 轴。

这是我的代码。

var panning = false;
canvas.on('mouse:up', function (e) {
    if (isPaningMode) {
        panning = false;
    }
});
canvas.on('mouse:out', function (e) {
    if (isPaningMode) {
        panning = false;
    }
});
canvas.on('mouse:down', function (e) {
    if (isPaningMode) {
        panning = true;
    }
});

canvas.on('mouse:move', function (e) {
    canvas.selection = !isPaningMode;
    if (isPaningMode && e && e.e && panning) {
        var units = 10;
        var delta = new fabric.Point(e.e.movementX, e.e.movementY);
        canvas.relativePan(delta);
    }
});

谢谢,对不起,我英语说得不好。 :(

编辑

我的画布尺寸:800x800 我只想使用红色条纹区域。我不想使用带有 X 的部分。我不想通过在这些字段中滚动来显示它们。我为这些物品做了我所说的。但我无法进行平移。简而言之,我只想在箭头方向平移。

【问题讨论】:

    标签: javascript canvas fabricjs panning


    【解决方案1】:

    确保您使用的是最新版本的 FabricJS,他们会不断改进它。我过去注意到canvas.on('mouse:out') 是针对对象而不是画布。

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

    我假设这是问题所在,因为您已经禁用了鼠标移出画布时的平移。

    canvas.on('mouse:out', function(e) {
      if (isPaningMode) {
        panning = false;
      }
    });
    

    如果我想念你的英语,请告诉我——顺便说一句,这很好!

    修改后

    大部分更改发生在鼠标移动事件中。 总结: 跟踪移动的距离,以便我们知道从哪里开始,然后返回(如果需要,可以进行调整)- 希望有意义???

    var deltaX = 0;
    var deltaY = 0;
    canvas.on('mouse:move', function(e) {
      if (isPaningMode && e && e.e && panning) {
        moveX = e.e.movementX;
        if (deltaX >= 0) {
          deltaX -= moveX;
          if (deltaX < 0) {
            moveX = deltaX + moveX;
            deltaX = 0;
          }
        }
        moveY = e.e.movementY;
        if (deltaY >= 0) {
          deltaY -= moveY;
          if (deltaY < 0) {
            moveY = deltaY + moveY;
            deltaY = 0;
          }
        }
        if (deltaX >= 0 && deltaY >= 0) {
          canvas.relativePan(new fabric.Point(moveX, moveY));
        }
      }
    });
    

    这是一个新的、更新的、有效的 :) JSFiddle,https://jsfiddle.net/rekrah/r3gm3uh9/

    【讨论】:

    • 首先感谢您帮助我:)。这是我的愿望之一。我将其他问题添加到编辑部分。
    • @forguta 修复了你的其他问题,我相信。更新了我的答案。
    • 谢谢你,@TimHarker。我真的非常尊重你。:) 最后,在另一个标题下还有另一个问题。如果你能看,我很高兴。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2016-05-16
    • 1970-01-01
    • 2011-03-08
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多