2017-07-25 60 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; 
    } 
});