Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复生成随机颜色时的颜色闪烁_Javascript - Fatal编程技术网

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()
哇,太感谢了,真是太好了!