FabricJSキャンバスでタッチズーム/パンニングを有効にする必要があります。画像(参照)またはマウスクリックイベント(this Fiddle参照)でこの動作を許可するライブラリがありますが、「touch:ジェスチャ」イベントが正しく接続されていないようです。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)を使用しています。 –