javascript - 如何关闭捕捉到网格fabricjs

标签 javascript jquery fabricjs

我有一个复选框,我想启用它来打开和关闭 fabric js 中的 Snap2grid。现在我可以正常打开它,但是如何将其关闭JSFiddle

$('#on-off-switch').change(function() {
    var $check = $(this),
        $div = $check.parent();

    if ($check.prop('checked')) {
        // Turn On Snap2Grid 
        canvas.on('object:moving', function(options) {
            options.target.set({
                left: Math.round(options.target.left / grid) * grid,
                top: Math.round(options.target.top / grid) * grid
            });
        });
        $("#on-off-label").text("On");
    } else {
        // Turn Off Snap2Grid
        $("#on-off-label").text("Off");
    }
});

最佳答案

这是一个非常大的 JSFiddle,我认为您的代码中可能存在其他问题。

有几种方法可以实现不同的行为,其中一种是检查事件函数本身的某些全局属性:

canvas.on('object:moving', function(event) {
  if(window.snapTo) {
        event.target.set({
            left: Math.round(options.target.left / grid) * grid,
            top: Math.round(options.target.top / grid) * grid
        });
  } else {
    // do nothing
  }
})

另一种方法是删除该事件。

您可以像这样删除所有事件:

canvas.off();

或某种类型的所有事件:

canvas.off('object:moving');

或者,如果您仅引用单个绑定(bind)事件处理程序的函数:

canvas.off('object:moving', eventHandlerFunction);

关于javascript - 如何关闭捕捉到网格fabricjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398083/

相关文章:

javascript - 从表的td获取id

javascript - 我需要使用从 Fabric JS 的特定文件夹中获取的字体

javascript - 缩放 Canvas 不适用于剪辑区域

javascript - 用选定的颜色转换主色

javascript - 如何使用 BDD Javascript 测试数组元素类型?

javascript - Uncaught ReferenceError : Main is not defined with webpack/react in Rails 4. 2.4

jquery - 返回同一页面的 CodeIgniter AJAX 错误

javascript - 为什么在 Canvas 上填充矩形会缓慢降低性能?

javascript - JS/jQuery 替换部分日期字符串不起作用

javascript - 使用 Fabric.js 根据标尺绘制一致的线长