JavaScript画布——是否可以根据Math.random绘制?

JavaScript画布——是否可以根据Math.random绘制?,javascript,canvas,Javascript,Canvas,我正在为游戏创建一个非常基本的精灵(它是在Canvas/Context/LineTo中绘制的)。我希望它的表达式根据两种不同的绘制方法随机更改。这是我的尝试: drawFace = function () { if (Math.random() < 0.05) { Player.drawhappyface(context); } e

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

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

            drawFace();
drawFace=函数(){
if(Math.random()<0.05){
Player.drawhappyface(上下文);
}
else if(Math.random()<0.1){
Player.drawsadface(上下文);
}
}
drawFace();
我可以确认drawhappyface和drawsadface绘制方法独立于此功能工作(分别绘制微笑和皱眉)。但是使用这个函数和它的逻辑,它们根本就不会被画出来(玩家完全没有脸)。那么,我写错了吗?我受到以下模拟的启发,该模拟不断使用Math.random为表达式设置动画:

如果我改为这样编写函数,那么画布上绝对不会绘制任何内容(所有其他精灵等也不会绘制):

drawFace=函数(上下文){
if(Math.random()<0.05){
Player.drawhappyface(上下文);
}
else if(Math.random()<0.1){
Player.drawsadface(上下文);
}
}
drawFace();

问题可能是在两个
if
语句中调用
Math.random()
,然后它们将具有不同的值。只调用
Math.random()
一次,并在每次需要时保存值/Call
drawFace
尝试这样做:

drawFace=函数(){
var randomNumber=Math.random();
控制台日志(随机编号);
如果(随机数<0.05){
控制台日志(“随机数<0.05”);
}
否则如果(随机数<0.1){
console.log('randomNumber<0.1');
}
}

drawFace()
您有一个概率很低的
if…else if…
,没有
else
,当然会有几个实例它什么也不做。您的第二个
绘图面
需要一个名为
context
的参数,但当您调用它时,您提供的参数为零。i、 例如,您使用
drawFace()
而不是
drawFace(foo)
。如果调用时没有提供参数,为什么要让
drawFace
期待参数?因此,
上下文
在函数hi中是
未定义的
。谢谢你的回答。这成功了!不知道你为什么被否决!我已经注意到我的角色的快乐和悲伤的脸现在随机抽取!非常感谢。然而,与我的灵感()不同,这里有一个明显的空白,没有画任何东西,因此我必须进行数学计算/考虑解决办法。@SpaceShips 111现在看到,每次单击“运行代码片段”时,它也会记录
randomNumber
你可能需要根据你想要什么来改变你的if-else。很抱歉进一步打扰你,但是我的happyface和sadface表情变化很快,不断变化,因此看起来很糟糕。这与以下情况非常不同,它每~秒都会平滑变化:这对我来说很奇怪,因为我对随机数使用相同的数学。我可能不得不提出一个关于这个的后续问题。@Spaceships 111抱歉,到目前为止还没有看到这个。我不明白你的最后一句话,你得到了什么,为什么得到它,以及你想要达到什么。。
        drawFace = function (context) {
            if (Math.random() < 0.05) {
                Player.drawhappyface(context);
            }
            else if (Math.random() < 0.1) {
                Player.drawsadface(context);
            }
        }

        drawFace();