Есть две функции, одна рисует красный квадрат, другая зеленый. При старте запущена функция с красным квадратом, нажав на него запускается вторая функция и вызывается очистка канвас. По идее должен пропасть красный квадрат и отрисоваться зеленый, а при нажатии на зеленый он затрется и вызовется красный. Но отрисованы два квадрата - почему? Как сделать, чтобы канвас полностью очистился от первой функции до белого экрана и запустилась вторая функция и наоборот?
Код HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<canvas id="canvas" width = 1000 height = 620 style = "border: 1px solid #000000;"></canvas>
</body>
</html>
Код javascript
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let clearCanvas = function() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
};
let launchLayerOne = function() {
canvas.style.background = 'black';
ctx.rect(50, 50, 100, 100);
ctx.fillStyle = 'rgba(247, 7, 7, 0.8)';
ctx.fill()
canvas.onmousedown = function(e) {
let rect = this.getBoundingClientRect();
x = e.clientX - rect.left;
y = e.clientY - rect.top;
let detect
ctx.isPointInPath(x, y) ? detect = 1 : detect = 0;
if(detect === 1) {
clearCanvas();
launchLayerTwo();
}
};
};
launchLayerOne()
let launchLayerTwo = function() {
canvas.style.background = 'grey';
ctx.rect(250, 50, 100, 100);
ctx.fillStyle = 'rgba(13, 171, 10, 0.8)';
ctx.fill()
canvas.onmousedown = function(e) {
let rect = this.getBoundingClientRect();
x = e.clientX - rect.left;
y = e.clientY - rect.top;
let detect
ctx.isPointInPath(x, y) ? detect = 1 : detect = 0;
if(detect === 1) {
clearCanvas();
launchLayerOne();
}
};
};