避免触发"canvas.on('mouse:up', function() {..}),对象结
FabricJS - Avoid triggering "canvas.on('mouse:up', function() { ... })" after object end moving
使用FabricJS,我正在制作一个画布,可以添加矩形。一旦矩形被添加到画布上,它就可以被拖动到任何位置。
我的问题是当我停止拖动矩形时,事件:
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
});
应避免添加mouse:move
侦听器
因为move事件会在每个像素上触发
参见fabric.js事件检查器示例
mousedown
和mouseup
的两个点击位置
fabricjs_obj
.on('mousedown', function (event) {
event.target.dragStart = event.pointer
})
fabricjs_obj
.on('mouseup', function (event) {
const a = event.target.dragStart
const b = event.pointer
const obj = event.target
if (a.x != b.x || a.y != b.y) {
console.log('obj dragged: '+obj)
return // stop event handler
}
console.log('obj clicked: '+obj)
// process click event
})
相关文章:
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- 对象如何获取 Function.prototype 方法
- 什么是JavaScript对象.event=object.event=function()
- 财产的价值'openNewWin'为null或未定义,而不是Function对象
- "Function.createDelegate"原因;错误:对象没有't支持属性或方法
- 来自Facebook FQL Function的JSON JS对象数组
- 使用 Function.prototype.bind.apply(Obj, args) 将参数传递给对象,只传递第一个元
- [function].apply() 导致 IE 中出现“JScript 对象预期”错误
- 如果 Functions 是 javascript 中的对象,为什么 function.constructor 指向 F
- 使用 Function.apply() 构造一个带有原型的对象
- JavaScript Function()和JavaScript对象之间的区别
- 设计:为什么JavaScript有单独的Function和Object对象,以及为什么它们有自己单独的原型对象
- 未捕获类型错误:对象“function()”没有方法'呼叫'
- 对象.assign似乎对Function.prototype不起作用
- 为什么函数属性定义在对象本身上(例如Function.name),而方法定义在Function.prototype上?
- Node.js的require-function父对象
- function(){}"在JS对象构造函数中工作
- Node.js中的Function Arguments对象与Chrome' js中的JavaScript不同
- 为什么'(function a() {})'不放'a'到全局对象中
- 避免触发"canvas.on('mouse:up', function() {..}),对象结