javascript - FabricJS - 避免在对象结束移动后触发 "canvas.on(' 鼠标 :up', function() { ... })"

标签 javascript events canvas listener fabricjs

我正在使用 FabricJS 制作一个可以添加矩形的 Canvas 。 将矩形添加到 Canvas 后,可以将其拖动到任何位置。

我的问题是当我停止拖动矩形时,事件:

canvas.on('mouse:up', function(element) { ... });

被触发,但这是不受欢迎的行为。

如何触发事件:

canvas.on('mouse:up', function(element) { ... });

只有当有效点击鼠标左键时,而不是当我结束拖动对象时?

最佳答案

你可以这样做:

var _isDragging = false;
var _isMouseDown = false;

canvas.on('mouse:down', function () {
    _isMouseDown = true;
    // other stuff
});

canvas.on('mouse:move', function () {
    _isDragging = _isMouseDown;
    // other stuff
})

canvas.on('mouse:up', function(element) {
    _isMouseDown = false;
    var isDragEnd = _isDragging;
    _isDragging = false;
    if (isDragEnd) {
        // code for drag complete
    } else {
        // code for no drag mouse up
    }
    // code for both
});

关于javascript - FabricJS - 避免在对象结束移动后触发 "canvas.on(' 鼠标 :up', function() { ... })",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104185/

相关文章:

html - 如何将 Backbone.js 单击事件绑定(bind)到 HTML5 Canvas 内呈现的 View ?

javascript - 我应该模拟 '.$promise' 对象吗?

javascript - 如何设计自定义文件上传按钮,以便标签在文件上传时发生变化

events - ServiceStack中的ServerEventsClient并发模型

python - pywintypes.com_error : (-2147221008, 'CoInitialize has not been called.',无,无)

html - KineticJS setText 方法像定时器一样更新

javascript - 如何根据增加/减少值制作仪表动画

javascript - 在 JavaScript 函数中运行而不每次都重新声明它

javascript - jQuery width() 不起作用

c# - 帮助我以正确的方式编写此事件