1

HTML要素をドラッグしてキャンバスにドロップし、解放された場所を取り、キャンバスの同じ場所にオブジェクトをプロットします。しかし、別の場所で表示されます。私のコードを参照してください。

脚本

function init() {
    var canvas = document.getElementById("graphCanvas");
    var context = canvas.getContext("2d");

    context.lineWidth = 2;
}

function allowDrop(ev) {
    ev.preventDefault();
}

function drag(ev) {
    ev.dataTransfer.setData("Text",ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    document.getElementById("graphCanvas").getContext("2d").drawImage(document.getElementById(data), 
        ev.clientX, ev.clientY);
}

HTML

<body onload="init();">
    <canvas id="graphCanvas" ondrop="drop(event)" ondragover="allowDrop(event)" height=300 width=300 style="border:1px solid #000000;"></canvas>
    <img id="img1" src="http://static.tumblr.com/vcbmwcj/foumiteqs/arrow_up_alt1.svg" draggable="true" ondragstart="drag(event)"/>
</body>
4

1 に答える 1

2

修理済み。更新されたコードはhttp://jsfiddle.net/YXxsH/5/です。計算はpageXpageYおよび 画像offsetの値で行われます。

于 2013-09-30T09:26:32.230 に答える