放大背景和放大 Fabric JS 对象

时间:2021-01-17 09:20:42

标签: canvas fabricjs

我喜欢我在移动设备上通过 Fabric JS 上的触摸事件获得的内容:http://fabricjs.com/touch-events

在移动设备上,我可以捏缩放每个对象并放大或缩小它。不过,如果对象很多,真的很难做好。

我希望能够通过捏住背景来缩放整个页面,并且仍然能够缩放对象。有点类似于如果我执行以下操作将获得的结果:

var canvas = new fabric.Canvas('canvas',
{
    selection : false,
    allowTouchScrolling: true
}
);

加上向 canvasupper-canvaslower-canvas 添加以下 CSS:pointer-events: none;。如https://stackoverflow.com/a/59546028/618091

不幸的是,当然所有对象都无法点击。

1 个答案:

答案 0 :(得分:0)

首先,您必须确保选项 allowTouchScrolling: true 有效。您可能需要按照此处的建议删除 (e.preventDefault();) 函数中的 _onTouchStart https://github.com/fabricjs/fabric.js/issues/5903#issuecomment-693416109

然后,您可以定义以下两个函数:

var disableScroll = function(){
  canvas.allowTouchScrolling = false;
};

var enableScroll = function(){
  canvas.allowTouchScrolling = true;
};

如果定义了 target,则意味着点击没有发生在画布背景上。因此,以下工作:

canvas.on('mouse:down', function(options) {
  if (options.target) {
    disableScroll();
  }
});
canvas.on('mouse:up', enableScroll);

更多参考: https://github.com/fabricjs/fabric.js/issues/1864#issuecomment-112361190 fabric.js: bind event to background image