gpt4 book ai didi

javascript - clearRect 函数在 Javascript 中不起作用

转载 作者:行者123 更新时间:2023-12-03 03:51:01 25 4
gpt4 key购买 nike

我有一些代码应该清除 rect() 中 50px 宽的间隙。但由于某种原因它不起作用。我尝试了几种不同的方法,但似乎无法使其发挥作用。任何帮助将不胜感激!

我的代码

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var rectWidth = 50;
var rectHeight = 50;
var rectRad = 25;
var x = (canvas.width / 2) - rectRad;
var y = canvas.height - 100;
var dx = 4;
var cw = canvas.width;
var ch = canvas.height;
var leftPressed = false;
var rightPressed = false;

function rect() {
ctx.beginPath();
ctx.rect(x, y, rectWidth, rectHeight);
ctx.fillStyle = "#0095DD";
ctx.fill();
ctx.closePath();
}

function bar() {
ctx.beginPath();
ctx.clearRect(50, 0, 100, ch);
ctx.rect(0, (ch / 2) - rectRad, cw, 50);
ctx.fillStyle = "#FF9900";
ctx.fill();
ctx.closePath();
}



function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
rect();
bar();

if (leftPressed == true && x + dx > 0) {
x -= dx;
}

if (rightPressed == true && x + dx < cw - rectWidth) {
x += dx;
}
}
setInterval(draw, 10);

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);

function keyDownHandler(e) {
if (e.keyCode === 37) {
leftPressed = true;
}

if (e.keyCode === 39) {
rightPressed = true;
}
}

function keyUpHandler(e) {
if (e.keyCode === 37) {
leftPressed = false;
}

if (e.keyCode === 39) {
rightPressed = false;
}
}
* {
padding: 0;
margin: 0;
}

canvas {
background: #eee;
display: block;
margin: 0 auto;
}
<canvas id="myCanvas" width="480" height="320"></canvas>

最佳答案

您试图在绘制矩形之前清除矩形中的区域。调用 fill 后必须调用clearRect。

此外,您将其绘制在错误的位置。

function bar() {
ctx.beginPath();
ctx.rect(0, (ch / 2) - rectRad, cw, 50);
ctx.fillStyle = "#FF9900";
ctx.fill();
ctx.closePath();
ctx.clearRect(50, (ch/2) - 25, 50, 50); // this line
}

关于javascript - clearRect 函数在 Javascript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153365/

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