如何使用鼠标中键禁用拖动选择?
How to disable drag selection with middle mouse button?
转到 kitchensink,使用鼠标中键,尝试在 canvas 的空白区域单击并按住鼠标并移动鼠标。
显示选择矩形。如何禁用它?我问是因为,在以前版本的 fabric 中,我有鼠标中键单击和拖动绑定到 canvas 平移。升级到新版本,canvas 出现意外行为。
如果 event.button == 1
,我尝试通过在 mousedown 中执行 canvas.selectable = false;
并在 mouseup 事件处理程序中将其设置为 true 来禁用鼠标按下时 canvas 的选择。
那没用。
关于如何使用鼠标中键单击并拖动禁用选择的任何想法?
Prasanth,你的问题很简单。你有错字。尝试这样使用:
canvas.selection = false;
这是您可以尝试的代码:
canvas.on('mouse:down',function(e){
canvas.selection = true;
});
canvas.on('mouse:down',function(e){
if( e.e.button == 1 ) {
canvas.selection = false;
};
});
问题是 fabric 最近启用了点击其他按钮而不是离开。
重点是左边处理了,右边处理了,中间没...
我猜中间的按钮跟左边的按钮一样,只是因为它不是右边的。
这里是 1.7.3 版 fabric 的 mousedown 处理函数的片段(当前为 2017 年 2 月)。
__onMouseDown: function (e) {
var target = this.findTarget(e);
// if right click just fire events
var isRightClick = 'which' in e ? e.which === 3 : e.button === 2;
if (isRightClick) {
if (this.fireRightClick) {
this._handleEvent(e, 'down', target ? target : null);
}
return;
}
... continue normal flow ...
所以这需要适当的修复。
按照建议发布自定义事件是一个补丁,但通常这根本不应该发生。
(因为我是项目的维护者,所以我要解决这个问题)
转到 kitchensink,使用鼠标中键,尝试在 canvas 的空白区域单击并按住鼠标并移动鼠标。
显示选择矩形。如何禁用它?我问是因为,在以前版本的 fabric 中,我有鼠标中键单击和拖动绑定到 canvas 平移。升级到新版本,canvas 出现意外行为。
如果 event.button == 1
,我尝试通过在 mousedown 中执行 canvas.selectable = false;
并在 mouseup 事件处理程序中将其设置为 true 来禁用鼠标按下时 canvas 的选择。
那没用。
关于如何使用鼠标中键单击并拖动禁用选择的任何想法?
Prasanth,你的问题很简单。你有错字。尝试这样使用:
canvas.selection = false;
这是您可以尝试的代码:
canvas.on('mouse:down',function(e){
canvas.selection = true;
});
canvas.on('mouse:down',function(e){
if( e.e.button == 1 ) {
canvas.selection = false;
};
});
问题是 fabric 最近启用了点击其他按钮而不是离开。 重点是左边处理了,右边处理了,中间没... 我猜中间的按钮跟左边的按钮一样,只是因为它不是右边的。
这里是 1.7.3 版 fabric 的 mousedown 处理函数的片段(当前为 2017 年 2 月)。
__onMouseDown: function (e) {
var target = this.findTarget(e);
// if right click just fire events
var isRightClick = 'which' in e ? e.which === 3 : e.button === 2;
if (isRightClick) {
if (this.fireRightClick) {
this._handleEvent(e, 'down', target ? target : null);
}
return;
}
... continue normal flow ...
所以这需要适当的修复。
按照建议发布自定义事件是一个补丁,但通常这根本不应该发生。 (因为我是项目的维护者,所以我要解决这个问题)