JavaScript Canvas——是否可以依赖Math.random进行绘制?

标签 javascript canvas

我正在为游戏创建一个非常基本的 Sprite (它是在 Canvas/Context/LineTo 中绘制的)。我希望它的表达根据两种不同的绘制方法随机变化。这是我的尝试:

            drawFace = function () {
                if (Math.random() < 0.05) {
                    Player.drawhappyface(context);
                }
                else if (Math.random() < 0.1) {
                    Player.drawsadface(context);
                }
            }

            drawFace();

我可以确认drawhappyface和drawsadface绘制方法独立于该函数工作(分别绘制微笑和皱眉)。但使用这个函数及其逻辑,它们根本就不会被绘制(玩家完全没有脸)。那么,我写错了吗?我受到以下模拟的启发,该模拟也使用 Math.random 不断地对表达式进行动画处理:http://www.blobsallad.se/

如果我像这样编写函数,那么 Canvas 上绝对不会绘制任何内容(所有其他 Sprite 等也不会绘制):

        drawFace = function (context) {
            if (Math.random() < 0.05) {
                Player.drawhappyface(context);
            }
            else if (Math.random() < 0.1) {
                Player.drawsadface(context);
            }
        }

        drawFace();

最佳答案

问题可能是您在两个 if 语句中调用 Math.random() ,然后它们将具有不同的值。仅调用 Math.random() 一次,并在每次需要/调用 drawFace 时保存该值,尝试如下所示:

drawFace = function () {
    var randomNumber = Math.random();
    console.log(randomNumber);
    if (randomNumber < 0.05) {
        console.log('randomNumber < 0.05');
    }
    else if (randomNumber < 0.1) {
        console.log('randomNumber < 0.1');
    }
}

drawFace();

如果你只是想画快乐或悲伤的脸,你可以做更简单的if else

drawFace = function () {
    var randomNumber = Math.random();
    console.log(randomNumber);
    if (randomNumber < 0.5) {
        console.log('draw happy face');
    } else {
        console.log('draw sad face');
    }
}

drawFace();

关于JavaScript Canvas——是否可以依赖Math.random进行绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366128/

相关文章:

java - 绘制线程

jquery - 如何将DIV内容发送到html5 CANVAS

javascript - 如何在 Javascript 中使用 Promise 在一定时间间隔后打印日志

javascript - zeroclipboard 元素在位于辅助/非默认 jQuery 选项卡内时不起作用

javascript - 如何在同构应用程序中通过 Node 获取传递请求 cookie?

javascript - 如何使 Canvas 的不同形状可拖动且其特定区域可放置在同一 Canvas 中

javascript - Canvas 游戏 : Maximum steering angle in n seconds

javascript - 编辑屏蔽输入时如何获取正确的值(自定义屏蔽)

javascript - 如何在 ajax 调用中将动态 json 文件名作为 url?

javascript - 如何检测快速移动物体之间的碰撞