Salut !
Alors voila j'ai essayé de faire une signature sur un canvas, au niveau de la souris aucun problème, mais sur mobile, le canvas est décallé
Avec une image ça va etre plus claire a expliquer:
https://www.casimages.com/i/180812041458604300.png.html
et voila mon morceau de code:
Quelqu'un sait d'ou ça pourrait venir?
Merci !
Alors voila j'ai essayé de faire une signature sur un canvas, au niveau de la souris aucun problème, mais sur mobile, le canvas est décallé
Avec une image ça va etre plus claire a expliquer:
https://www.casimages.com/i/180812041458604300.png.html
et voila mon morceau de code:
var myCanvas = {
drawing: false,
submitCanvas: document.querySelector('#submitCanvas'),
posiX: 0,
posiY: 0,
radius: 2,
canvas: document.querySelector('#canvas'),
ctx: document.querySelector('#canvas').getContext('2d'),
clearing: false,
style: function () {
myCanvas.ctx.strokeStyle = "black";
myCanvas.ctx.lineWith = 3;
myCanvas.ctx.lineCap = 'round';
myCanvas.ctx.lineJoin = 'round';
},
lastPos: function () {
var lastPos = posiX
},
mouseDown: function () {
this.canvas.addEventListener("mousedown", (e) => {
myCanvas.drawing = true;
[myCanvas.posiX, myCanvas.posiY] = [e.offsetX, e.offsetY];
});
},
mouseUp: function () {
myCanvas.canvas.addEventListener("mouseup", () => myCanvas.drawing = false);
},
mouseMove: function () {
this.canvas.addEventListener("mousemove", function (e) {
if (!myCanvas.drawing) {
return;
}
contentSign.isSigned = true;
myCanvas.submitCanvas.style.color = 'white';
myCanvas.submitCanvas.style.backgroundColor = 'black';
myCanvas.ctx.strokeStyle = 'black';
myCanvas.ctx.lineWidth = 3;
myCanvas.ctx.beginPath();
myCanvas.ctx.moveTo(myCanvas.posiX, myCanvas.posiY);
myCanvas.ctx.lineTo(e.offsetX, e.offsetY);
myCanvas.ctx.stroke();
[myCanvas.posiX, myCanvas.posiY] = [e.offsetX, e.offsetY];
});
},
renderCanvas: function () {
if (myCanvas.drawing) {
contentSign.isSigned = true;
submitCanvas.style.color = 'white';
submitCanvas.style.backgroundColor = 'black';
}
},
touchStart: function () {
myCanvas.canvas.addEventListener("touchstart", function (e) {
e.preventDefault();
var rect = e.target.getBoundingClientRect();
var x = e.targetTouches[0].pageX - rect.left;
var y = e.targetTouches[0].pageY - rect.top;
var touch = e.touches[0];
[myCanvas.posiX, myCanvas.posiY] = [x, y];
var mouseEvent = new MouseEvent("mousedown", {
clientX: touch.clientX,
clientY: touch.clientY
});
myCanvas.canvas.dispatchEvent(mouseEvent);
console.log(mouseEvent.clientX, mouseEvent.clientY)
});
},
touchEnd: function () {
myCanvas.canvas.addEventListener("touchend", function (e) {
e.preventDefault();
var mouseEvent = new MouseEvent("mouseup", {});
myCanvas.canvas.dispatchEvent(mouseEvent);
});
},
touchMove: function () {
myCanvas.canvas.addEventListener("touchmove", function (e) {
e.preventDefault();
var touch = e.touches[0];
var mouseEvent = new MouseEvent("mousemove", {
clientX: touch.clientX,
clientY: touch.clientY
});
console.log(mouseEvent.clientX, mouseEvent.clientY)
});
}
}
myCanvas.mouseDown();
myCanvas.mouseUp();
myCanvas.mouseMove();
myCanvas.touchStart();
myCanvas.touchEnd();
myCanvas.touchMove();
Quelqu'un sait d'ou ça pourrait venir?
Merci !