gpt4 book ai didi

javascript - HTML、CSS、JS、Canvas 矩形不删除

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:56 25 4
gpt4 key购买 nike

我希望矩形在 Canvas 上移动而不是每次都复制。它绘制它但随后矩形停留在那里。

我是 Canvas 的初学者,所以如果它是一个史诗般的失败,那么请做好准备。

codepen 在 LINK .

var c = document.getElementById("canvas");
var ctx = c.getContext("2d");

var WIDTH = canvas.width;
var HEIGHT = canvas.height;
var boxWidth = 50;
var boxHeight = 50;
var bX = WIDTH / 2 - boxWidth / 2;
var bY = HEIGHT / 2 - boxHeight / 2;

function render() {
ctx.fillStyle = "white";
ctx.rect(bX, bY, boxWidth, boxHeight);
ctx.fill();
}

function control() {
bX++;
}

function main() {
control();
render();
}

main();
var run = setInterval(main, 10)
canvas {
width: 400px;
height: 400px;
background-color: black;
}

div {
text-align: center;
}
<div>
<canvas width="400px" height="400px" background-color="black" id="canvas"></canvas>
</div>

最佳答案

每次绘制矩形之前重新绘制 Canvas - 考虑一下。这一切都是分层完成的。

矩形“留在那里”是因为您没有替换上次绘制的矩形。

var c = document.getElementById("canvas");
var ctx = c.getContext("2d");

var WIDTH = canvas.width;
var HEIGHT = canvas.height;
var boxWidth = 50;
var boxHeight = 50;
var bX = WIDTH / 2 - boxWidth / 2;
var bY = HEIGHT / 2 - boxHeight / 2;

function render() {

ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); //use clear rect instead

ctx.fillStyle = "white";
ctx.fillRect(bX, bY, boxWidth, boxHeight); //use fillRect instead of fill()

}

function control() {
bX++;
}

(function main() {
control();
render();

requestAnimationFrame(()=>main());
})()

canvas {
width: 400px;
height: 400px;
background-color: black;
}

div {
text-align: center;
}
<html>

<head></head>

<body>
<div>
<canvas width="400px" height="400px" background-color="black" id="canvas"></canvas>
</div>
</body>

</html>

另请查看与 setInterval 相对的 requestAnimationFrame() 方法 - 它与窗口的 javascript 计时器同步,不太可能导致问题。

关于javascript - HTML、CSS、JS、Canvas 矩形不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com