2017-07-25 47 views
1

我有一个定制的fabric.js绑定与触摸支持。现在我可以用捏缩放手势缩放任何物体。问题是变焦真的非常敏感,我几乎不会移动手指,而且物体的比例非常大。在fabric.js中改变捏缩放灵敏度

我无法在有关如何更改灵敏度的文档中找到很多信息。我知道Event.js用于处理fabric.js内的触摸事件。有什么办法可以改变这种敏感性吗?

+0

你怎么能在面料捏放大你能解释一下,或者你可以请分享您的代码......我开发的应用程序 – Gopinath

+0

@Vicky智能我结束了使用'hammer.js'检测手势在元素上并手动应用缩放。 – Andres

+0

Andres我已经尝试过与hammerjs和quojs,但没有得到任何想法,请你给我的例子代码?所以我可以得到想法,并使事情工作 – Gopinath

回答

2

好吧,我最终实现了自己的触摸控制,这是我制作的代码。此代码被放置在我自定义的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; 
    } 
});