Disabling the snapping-grid in fabricjs

帅比萌擦擦* 提交于 2019-12-06 14:32:21
jkdev

Use .off to remove an event handler from a Fabric canvas.

I'll quote what kangax (the creator of Fabric.js) posted in a comment to a similar question:

function f(opts) {
    eventHandler(opts, arg1, arg2)
}
canvas.on('object:over', f);
canvas.off('object:over', f);

(Official docs and related Stack Overflow answer.)

Then just add an event listener to a button or other element.

el.addEventListener('click', function(){
    canvas.off('object:over', f);
});

In your case, you might refactor your code this way:

function activateGrid(options) {
    options.target.set({
        left: Math.round(options.target.left / grid) * grid,
        top: Math.round(options.target.top / grid) * grid
    });
}

onButton.addEventListener('click', function() {
    canvas.on('object:moving', activateGrid);
});

offButton.addEventListener('click', function() {
    canvas.off('object:moving', activateGrid);
});
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!