I have a canvas area and I'm adding some images into and I would love to make my canvas images draggable. I've created mouse events via addEventListener to handle mouse clicks.
But my problem is that I'm able to make draggable all canvas context and not just only my images.
html code:
<canvas></canvas>
part of JS code:
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);
And is it event possible to make the first image( gkhead ) graggable just in canvas area and the second( ball ) image moveable just in the area of the first ( gkhead ) image?
HERE is my fiddle
Thank you all in advice.