既存の jQuery プラグインを使用したい場合は、Hammer.js を調べてください。とても使いやすいライブラリです。ただし、純粋な Javascript ソリューションを好む場合は、こちらをご覧ください:
https://github.com/rombdn/img-touch-canvas
タッチ イベントを使用してキャンバス上で画像をドラッグおよびズームするのに非常に便利です。
さらに、ここに私のソリューションがあります。これは非常にシンプルで簡単ですが、純粋な Javascript を使用するためのドラッグ可能な唯一のソリューションです。
HTML:
<canvas id="canvas"></canvas>
JS:
var can = document.getElementById("canvas");
can.addEventListener("touchstart", ctxTouchStart, false);
can.addEventListener("touchmove", ctxTouchMove, false);
can.addEventListener("touchend", ctxTouchEnd, false);
var oX, oY, dX, dY, iX, iY;
iX = 0; iY = 0;
function ctxTouchStart(e) {
if (!e)
var e = event;
e.preventDefault();
mouseIsDown = 0;
oX = e.targetTouches[0].pageX - canvas.offsetLeft;
oY = e.targetTouches[0].pageY - canvas.offsetTop;
}
function ctxTouchMove(e) {
if (!e)
var e = event;
e.preventDefault();
var canX = e.targetTouches[0].pageX - canvas.offsetLeft;
var canY = e.targetTouches[0].pageY - canvas.offsetTop;
dX = canX - oX;
dY = canY - oY;
/* redraw img on canvas
* where -(iX + dX) is the startX
* and -(iY + dY) is the startY
*/
reDrawImageOnCanvas(can, img, -(iX + dX), -(iY + dY));
}
function ctxTouchEnd(e) {
if (!e)
var e = event;
e.preventDefault();
iX += dX;
iY += dY;
}
そうすることで、キャンバス内で画像をスムーズにドラッグできます。ただし、ズーム部分の実行方法がわからなかったので、オンラインで検索したところ、https://github.com/rombdn/img-touch-canvasが便利であることがわかり、代わりにこれを使用するように切り替えました。私の答えが役に立てば幸いです。