我有一个画布区域,我正在向其中添加一些图像,我想让我的画布图像可拖动。我通过 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 )仅在画布区域中可移动,而第二个(球)图像仅在第一个( gkhead )图像区域中可移动?
这是我的小提琴
谢谢大家的建议。