【发布时间】:2017-12-20 00:05:45
【问题描述】:
我需要在 FabricJS 画布上启用触摸缩放/平移。有些库允许在图像上执行此行为(请参阅pinch-zoom-canvas)或通过鼠标单击事件(请参阅this Fiddle),但我似乎无法正确连接“触摸:手势”事件。
我已经构建了启用手势的库(所以 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 上测试时,什么都没有发生。
【问题讨论】: