作者:我喜欢吕继宏 | 来源:互联网 | 2022-11-22 13:04
我正试图在html
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = '#FFFFF';
ctx.fill();
ctx.closePath();
我需要球在与其中一块砖碰撞后改变颜色.为了实现这一点,我创建了一个变量来存储颜色值:let colour = '#FFFFF';
,然后在检测碰撞的函数中,改变了这个变量的值.然而,无论何时球改变颜色,它的工作都很好,砖块和桨也是如此.当我试图解决这个问题时,我发现无论何时我手动改变球,砖或桨的颜色(所有这些都设置在不同的功能中),所有对象也会改变颜色.
这很奇怪,因为如果在一个emply .js文件中,我只做两个形状并以不同方式着色它可以正常工作:
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.rect(0, 0, 20, 40);
ctx.fillStyle = 'cyan';
ctx.fill();
ctx.closePath();
ctx.beginPath();
ctx.arc(50, 50, 20, 0, Math.PI*2);
ctx.fillStyle = 'black';
ctx.fill();
ctx.closePath();
但是对于我现在拥有的所有游戏代码,我不能为不同的对象分配不同的颜色,它们都会改变颜色!我不知道如何解决这个问题,只改变球的颜色!有谁知道可能导致这个问题的原因?请帮忙,非常感谢你
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
//Ball variables
const radius = 10;
let colour = '#FFFFF';
let x = canvas.width / 2;
let y = canvas.height - 30;
let dx = 2;
let dy = -2;
//Paddle
const paddleHeight = 10;
let paddleWidth = 100;
let paddleX = (canvas.width - paddleWidth) / 2;
//Paddle movement
var rightPressed = false;
var leftPressed = false;
//Bricks
var brickRowCount = 3;
var brickColumnCount = 5;
var brickWidth = 75;
var brickHeight = 20;
var brickPadding = 10;
var brickOffsetTop = 30;
var brickOffsetLeft = 30;
var bricks = [];
for (var c = 0; c 0) {
paddleX -= 7;
}
}
function drawBall() {
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = colour;
ctx.fill();
ctx.closePath();
//Bounce off the walls
if (x + dx > canvas.width - radius || x + dx canvas.height - radius) {
//Collision detection (ball + paddle)
if (x > paddleX && x b.x && x b.y && y