JSFiddle - React, Tailwind, and code Playground
JavaScript
var canvas, ctx;
var draw = false,
pos = [];
function init() {
canvas = document.createElement("canvas");
canvas.width = 600;
canvas.height = 500;
ctx = canvas.getContext("2d");
document.body.appendChild(canvas);
setInterval(function() {
update();
render();
}, 1000/60);
}
function update() {
}
function render() {
//ctx.clearRect(0, 0, canvas.width, canvas.height);
Drawing();
}
document.addEventListener("mousedown", OnMouseDown, false);
document.addEventListener("mousemove", OnMouseMove, false);
document.addEventListener("mouseup", OnMouseUp, false);
document.addEventListener("touchstart", OnMouseDown, false);
document.addEventListener("touchmove", OnMouseMove, false);
document.addEventListener("touchend", OnMouseUp, false);
function OnMouseDown(e) {
var m = getMouse(e);
pos.push({
x: m.x,
y: m.y
});
draw = true;
}
function OnMouseMove(e) {
var m = getMouse(e);
if(draw)
pos.push({
x: m.x,
y: m.y
});
}
function OnMouseUp(e) {
draw = false;
pos = [];
}
function getMouse(e) {
var mx, my;
var el = document.getElementsByTagName("canvas")[0];
//проверяем мышка или тач
if((e.pageX == undefined && e.pageY == undefined) ||(e.clientX == undefined && e.clientY == undefined)){
var touches = e.changedTouches;
if(touches == undefined || touches.length > 1)
return false;
mx = (touches[0].pageX || touches[0].clientX) - el.getBoundingClientRect().left;
my = (touches[0].pageY || touches[0].clientY) - el.getBoundingClientRect().top;
}else{
mx = (e.cleintX || e.pageX) - el.getBoundingClientRect().left;
my = (e.clientY || e.pageY) - el.getBoundingClientRect().top;
}
return {x: mx,y: my};
}
function Drawing() {
ctx.lineCap = "round";
ctx.lineWidth = 7;
ctx.lineJoin = "round";
for(var i = 1; i < pos.length; i++) {
ctx.beginPath();
...