【发布时间】:2024-04-11 00:50:02
【问题描述】:
我想移动我用画布绘制的形状;例如:我画矩形。如何使用可拖动属性将其移动到特定区域?还使用Javascript如何添加监听器?
等待帮助。
这是我的代码:
在 Javascript 文件中:
var c=document.getElementById("rectangle");
var cxt=c.getContext("2d");
cxt.fillStyle="#009933";
cxt.fillRect(20,10
,150,75);
function dragStart(ev) {
//allow move
ev.dataTransfer.effectAllowed='move';
ev.dataTransfer.dropEffect='move';
//on transfer
var style = ev.target.getAttribute("id").style;
ev.dataTransfer.setData("Text",ev.target.getAttribute("id"));
//ev.dataTransfer.setDragImage(ev.target,0,0);
ev.dataTransfer.setDragImage(ev.target,(parseInt(style.getPropertyValue("left"),10) - ev.clientX) ,(parseInt(style.getPropertyValue("top"),10) - ev.clientY));
return true;
}
function dragEnter(ev) {
return true;
}
function dragOver(event) {
event.preventDefault();
return false;
}
function dragDrop(ev) {
//var offset = event.dataTransfer.getData("text/plain").split(',');
var dm = document.getElementById(ev.dataTransfer.getData("Text"));
// dm.style.left = (event.clientX + parseInt(offset[0],10)) + 'px';
// dm.style.top = (event.clientY + parseInt(offset[1],10)) + 'px';
ev.target.appendChild(dm);
ev.stopPropagation();
ev.preventDefault();
return false;
}
HTML 文件:
<div ondragenter="return dragEnter(event)"
ondrop="return dragDrop(event)"
ondragover="return dragOver(event)">
<canvas id="rectangle" width="200px" height="150px" draggable="true"></canvas>
</div>
<div id="target"ondragenter="return dragEnter(event)"
ondrop="return dragDrop(event)"
ondragover="return dragOver(event)">
</div>
【问题讨论】:
-
到目前为止你得到了什么代码?
-
我可以将Firefox中的画布移动到特定区域,但不能移动到该区域的特定位置。我也可以将它移回原位。使用 JavaScript。这将使用 Firefox 完成,但 chrome 会在移动过程中显示画布背景的高光。感谢您的重播。
-
发布您正在处理的代码的相关部分。
标签: javascript html canvas dom-events draggable