0

キャンバス領域があり、いくつかの画像を追加しています。キャンバス画像をドラッグ可能にしたいと思っています。マウス クリックを処理するために addEventListener を介してマウス イベントを作成しました。
しかし、私の問題は、画像だけでなく、すべてのキャンバス コンテキストをドラッグ可能にできることです。

html コード:

<canvas></canvas>

JS コードの一部:

var canvas = document.getElementsByTagName('canvas')[0];
var gkhead = new Image;
var ball   = new Image;
ctx.drawImage(gkhead,0,0,1000, 200);
ctx.drawImage(ball,0,0,100,100);

canvas.addEventListener('mousedown',function(evt){
        document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';
        lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);
        lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);
        dragStart = ctx.transformedPoint(lastX,lastY);
        dragged = false;
    },false);

canvas.addEventListener('mousemove',function(evt){
        lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);
        lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);
        dragged = true;
        if (dragStart){
            var pt = ctx.transformedPoint(lastX,lastY);
            ctx.translate(pt.x-dragStart.x,pt.y-dragStart.y);
            redraw();
        }
    },false);

canvas.addEventListener('mouseup',function(evt){
        dragStart = null;
        if (!dragged) zoom(evt.shiftKey ? -1 : 1 );
    },false);

そして、最初のイメージ( gkhead )をキャンバス領域だけでグラガブルにし、2番目(ボール)のイメージを最初の( gkhead )イメージの領域だけで移動可能にすることはできますか?
HEREは私のフィドル
です アドバイスありがとうございます。

4

1 に答える 1