如何在 canvas javascript 中使用计时器?
How to work with timer in canvas javascript?
我需要在 canvas 的某个地方随机出现一个矩形,然后它需要在一个新的地方随机出现,但我有一个问题,它出现了一个新的但以前的矩形留在一开始的地方,然后 canvas 中有很多矩形,我只需要一个,这就是我所做的:
function rectangle(x,y){
var ctx
ctx.beginPath();
ctx.rect(20, 20, 15, 10);
ctx.stroke();
}
function randomMove(){
var myVar;
var x;
var y;
x = Math.floor(Math.random() * 10) + 1;
y = Math.floor(Math.random() * 10) + 1;
myVar = setInterval( ()=> {rectangle(x,y)}, 5000); // pass the rectangle function
}
您需要清除 canvas。
最简单的方法是在整个 canvas 上绘制一个矩形(假设它是白色背景)
ctx.fillStyle = "white";
ctx.fillRect(0, 0, width, height);
或者如果它是透明的...
ctx.clearRect(0, 0, width, height);
您需要在每一帧都执行此操作。
const ctx = window.canvas.getContext("2d");
function clearCanvas() {
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
}
function rectangle(x, y) {
ctx.beginPath();
ctx.fillStyle = "red";
ctx.rect(x, y, 15, 10);
ctx.stroke();
}
function randomMove() {
var myVar;
var x;
var y;
x = Math.floor(Math.random() * ctx.canvas.width) + 1;
y = Math.floor(Math.random() * ctx.canvas.height) + 1;
rectangle(x, y);
}
function draw() {
clearCanvas();
randomMove();
}
myVar = setInterval(draw, 200);
draw();
<canvas id="canvas"></canvas>
我需要在 canvas 的某个地方随机出现一个矩形,然后它需要在一个新的地方随机出现,但我有一个问题,它出现了一个新的但以前的矩形留在一开始的地方,然后 canvas 中有很多矩形,我只需要一个,这就是我所做的:
function rectangle(x,y){
var ctx
ctx.beginPath();
ctx.rect(20, 20, 15, 10);
ctx.stroke();
}
function randomMove(){
var myVar;
var x;
var y;
x = Math.floor(Math.random() * 10) + 1;
y = Math.floor(Math.random() * 10) + 1;
myVar = setInterval( ()=> {rectangle(x,y)}, 5000); // pass the rectangle function
}
您需要清除 canvas。
最简单的方法是在整个 canvas 上绘制一个矩形(假设它是白色背景)
ctx.fillStyle = "white";
ctx.fillRect(0, 0, width, height);
或者如果它是透明的...
ctx.clearRect(0, 0, width, height);
您需要在每一帧都执行此操作。
const ctx = window.canvas.getContext("2d");
function clearCanvas() {
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
}
function rectangle(x, y) {
ctx.beginPath();
ctx.fillStyle = "red";
ctx.rect(x, y, 15, 10);
ctx.stroke();
}
function randomMove() {
var myVar;
var x;
var y;
x = Math.floor(Math.random() * ctx.canvas.width) + 1;
y = Math.floor(Math.random() * ctx.canvas.height) + 1;
rectangle(x, y);
}
function draw() {
clearCanvas();
randomMove();
}
myVar = setInterval(draw, 200);
draw();
<canvas id="canvas"></canvas>