Я пытаюсь напечатать стрелку часов, которые я нарисовал на холсте, используя метод setInterval()
в Javascript.
Что я хочу сделать, так это то, что рука изначально указывает на 12. Метод setInterval()
должен запускаться каждые 3 секунды и поворачиваться рукой на 30 градусов. Это приведет к тому, что рука будет перерисована, указывая на 1, после чего она будет перерисована, указывая на 2 через 3 секунды, и так далее, и так далее.
Я пытался написать функцию в методе setInterval (), но меня не устраивает порядок операций.
let canvas = window.document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
function setup() {
drawCircle();
drawNumbers();
setInterval(function() {
ctx.translate(250, 250);
ctx.moveTo(0, 0);
ctx.lineTo(0, -100);
ctx.stroke();
ctx.rotate(30 * Math.PI / 180)
ctx.moveTo(0, 0);
ctx.lineTo(0, -100);
ctx.stroke();
}, 3000);
}
function drawCircle() {
ctx.save();
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.arc(0, 0, 200, 0, 2 * Math.PI);
ctx.stroke();
ctx.restore();
}
function drawNumbers() {
ctx.save();
ctx.translate(canvas.width / 2, canvas.width / 2);
for (let i = 12; i >= 1; i--) {
ctx.strokeText(i, -5, -185);
ctx.rotate(-30 * Math.PI / 180);
}
ctx.restore();
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Analogue Clock</title>
<script src='script.js' defer></script>
</head>
<body onload="setup()">
<canvas id="myCanvas" width="500" height="500" style="border: 1px solid black"></canvas>
</body>
</html>