1
我需要在FabricJS畫布上啓用觸控縮放/平移。有一些庫允許在圖像上發生這種行爲(請參閱pinch-zoom-canvas)或通過鼠標點擊事件(請參閱this Fiddle),但我似乎無法正確連接「touch:gesture」事件。FabricJS輕觸平移/縮放整個畫布
我已經建立了手勢庫啓用(所以this FabricJS演示在我本地工作),但我不知道從哪裏開始將手勢與工作小提琴結合起來。
我想這樣的代碼變化:
canvas.on({
'touch:gesture': function() {
var text = document.createTextNode(' Gesture ');
info.insertBefore(text, info.firstChild);
// Handle zoom only if 2 fingers are touching the screen
if (event.e.touches && event.e.touches.length == 2) {
// Get event point
var point = new fabric.Point(event.self.x, event.self.y);
// Remember canvas scale at gesture start
if (event.self.state == "start") {
zoomStartScale = self.canvas.getZoom();
}
// Calculate delta from start scale
var delta = zoomStartScale * event.self.scale;
// Zoom to pinch point
self.canvas.zoomToPoint(point, delta);
}
},
'touch:drag': function(e) {
panning = true;
var text = document.createTextNode(' Dragging ');
info.insertBefore(text, info.firstChild);
if (panning && e && e.e) {
debugger;
var units = 10;
var delta = new fabric.Point(e.e.movementX, e.e.movementY);
canvas.relativePan(delta);
}
panning = false;
},
'touch:longpress': function() {
var text = document.createTextNode(' Longpress ');
info.insertBefore(text, info.firstChild);
}
});
但是,當我用iPhone/iPad測試沒有任何反應。
真棒!真正爲所有面料用戶提供了極大的幫助! –
得到了一些問題:我試過這個答案,但我的'帆布'沒有收到'touch:gesture',似乎只有物體接收到'touch:gesture'?真的很想知道你的畫布如何接收「touch:gesture」事件,謝謝!順便說一句,我使用1.7.20(帶有build_with_gestures)。 –