Javascript 如何修复生成随机颜色时的颜色闪烁
我正在制作一个简单的网络游戏,我试图让砖块产生随机的颜色(不改变颜色),但它们每毫秒都会闪烁颜色Javascript 如何修复生成随机颜色时的颜色闪烁,javascript,Javascript,我正在制作一个简单的网络游戏,我试图让砖块产生随机的颜色(不改变颜色),但它们每毫秒都会闪烁颜色 function drawBricks() { for (var c = 0; c < brickColumnCount; c++) { for (var r = 0; r < brickRowCount; r++) { if (bricks[c][r].status == 1) {
function drawBricks() {
for (var c = 0; c < brickColumnCount; c++) {
for (var r = 0; r < brickRowCount; r++) {
if (bricks[c][r].status == 1) {
var brickX = (c * (brickWidth + brickPadding)) + brickOffsetLeft;
var brickY = (r * (brickHeight + brickPadding)) + brickOffsetTop;
bricks[c][r].x = brickX;
bricks[c][r].y = brickY;
ctx.beginPath();
ctx.rect(brickX, brickY, brickWidth, brickHeight);
randomNumber = Math.floor(Math.random() * 4 + 1);
if (randomNumber == 1)
ctx.fillStyle = "#0095DD";
if (randomNumber == 2)
ctx.fillStyle = "#FF0000";
if (randomNumber == 3)
ctx.fillStyle = "#FF8A00";
if (randomNumber == 4)
ctx.fillStyle = "0100FF";
ctx.fill()
ctx.closePath();
}
}
}
}
函数drawBricks(){
对于(var c=0;c
您的Pastebin具有代码var interval=setInterval(图10)代码>(第185行)setInterval
接受所提供函数执行之间的毫秒数作为其第二个参数,因此它尝试每秒运行100次(每10毫秒一次)。尝试将10
更改为1000
(1秒)或类似值
编辑:根据对原始问题中问题的澄清,问题在于每次渲染游戏场景时,砖块颜色都是随机的;这似乎是通过将随机化器移出渲染循环(即drawBricks()
)函数而解决的。如果它们每毫秒闪烁一次,那是因为drawBricks
每毫秒被调用一次。你可能只想画一次,或者每隔一秒左右。如果你想知道更具体的细节,你必须发布调用代码。Pastebin:这只会让整个游戏以每秒2帧的速度运行。我想做的是保持砖块的随机颜色不变。然后我误解了你最初的问题——在这种情况下,您需要确保随机化功能在渲染循环之外-否则每次绘制游戏时,您都会再次随机化块。最佳放置位置是哪里?听起来您可能希望在开始时这样做,然后从那时起保持值不变…所以在渲染循环之外的某个位置drawBricks()
哇,太感谢了,真是太好了!