在 fabric.js 中更改双指缩放灵敏度
Change pinch-zoom sensitivity in fabric.js
我有一个自定义的 fabric.js
捆绑包,支持触摸。现在我可以使用双指缩放手势缩放任何对象。问题是缩放真的很灵敏,我几乎不动手指,物体就被放大了。
我在文档中找不到太多关于如何更改灵敏度的信息。我知道 Event.js
用于处理 fabric.js
内的触摸事件。有什么办法可以改变这种敏感度吗?
好的,我最终自己实现了触摸控制,这是我编写的代码。此代码放置在我的自定义 fabric.js
对象的 added
事件中。
////////////////////////////// Touch event handlers
// Add listener event for pinch-zoom
var bbScope = this;
var hammer = new Hammer.Manager(this.canvas.upperCanvasEl);
var pinch = new Hammer.Pinch();
hammer.add([pinch]);
hammer.on('pinch', function (ev) {
// Set the scale and render only if we have a valid pinch (inside the object)
if (bbScope._validPinch) {
bbScope.set('scaleX', ev.scale);
bbScope.set('scaleY', ev.scale);
bbScope.canvas.renderAll();
}
});
hammer.on('pinchend', function (ev) {
bbScope._validPinch = false;
});
hammer.on('pinchcancel', function (ev) {
bbScope._validPinch = false;
});
hammer.on('pinchstart', function (ev) {
// Convert mouse coordinates to canvas coordinates
ev.clientX = ev.center.x;
ev.clientY = ev.center.y;
// Check if the pinch was started inside this object
if (bbScope.canvas) {
var p = bbScope.canvas.getPointer(ev);
bbScope._validPinch = bbScope.containsPoint(p);
}
else {
bbScope._validPinch = false;
}
});
我有一个自定义的 fabric.js
捆绑包,支持触摸。现在我可以使用双指缩放手势缩放任何对象。问题是缩放真的很灵敏,我几乎不动手指,物体就被放大了。
我在文档中找不到太多关于如何更改灵敏度的信息。我知道 Event.js
用于处理 fabric.js
内的触摸事件。有什么办法可以改变这种敏感度吗?
好的,我最终自己实现了触摸控制,这是我编写的代码。此代码放置在我的自定义 fabric.js
对象的 added
事件中。
////////////////////////////// Touch event handlers
// Add listener event for pinch-zoom
var bbScope = this;
var hammer = new Hammer.Manager(this.canvas.upperCanvasEl);
var pinch = new Hammer.Pinch();
hammer.add([pinch]);
hammer.on('pinch', function (ev) {
// Set the scale and render only if we have a valid pinch (inside the object)
if (bbScope._validPinch) {
bbScope.set('scaleX', ev.scale);
bbScope.set('scaleY', ev.scale);
bbScope.canvas.renderAll();
}
});
hammer.on('pinchend', function (ev) {
bbScope._validPinch = false;
});
hammer.on('pinchcancel', function (ev) {
bbScope._validPinch = false;
});
hammer.on('pinchstart', function (ev) {
// Convert mouse coordinates to canvas coordinates
ev.clientX = ev.center.x;
ev.clientY = ev.center.y;
// Check if the pinch was started inside this object
if (bbScope.canvas) {
var p = bbScope.canvas.getPointer(ev);
bbScope._validPinch = bbScope.containsPoint(p);
}
else {
bbScope._validPinch = false;
}
});