Javascript 不同帧率函数中的随机数

Javascript 不同帧率函数中的随机数,javascript,variables,random,requestanimationframe,Javascript,Variables,Random,Requestanimationframe,我想生成一个随机数,我在条件语句(If…else)中使用它作为变量。 发生条件语句的函数PositionLoop()具有赋值requestAnimationFrame。但是,我不希望在每一帧中重新生成随机数。这太频繁,太快了。例如,我希望数字每3秒更改一次。另一个问题是,条件语句包含一个变量(Font),我在函数PositionLoop()内的另一行代码中再次使用该变量 我已经尝试了不同的方法–首先我为随机数创建了一个函数,并在另一个函数function PositionLoop()()中调用该

我想生成一个随机数,我在条件语句(
If…else
)中使用它作为变量。 发生条件语句的函数PositionLoop()具有赋值
requestAnimationFrame
。但是,我不希望在每一帧中重新生成随机数。这太频繁,太快了。例如,我希望数字每3秒更改一次。另一个问题是,条件语句包含一个变量(
Font
),我在
函数PositionLoop()
内的另一行代码中再次使用该变量

我已经尝试了不同的方法–首先我为随机数创建了一个函数,并在另一个函数
function PositionLoop()
()中调用该变量,然后我尝试了全局变量–但它不起作用。有人能帮我吗多谢各位

这是我的代码结构:

…

function positionLoop() {
    requestAnimationFrame(positionLoop);

    …


    var Zufallszahl1 = random(0,30);
    var Font;
    if (Zufallszahl1 = 6) {
        Font = …;
    } else if (Zufallszahl1 = 8) { 
        Font = …;
    } else {
        Font = …;
    };

    if (parameter < x) {
        Schriftart = …;
    } else if (parameter > x) { 
        Schriftart = Font;
    } else {
        Schriftart = …;
    };

    var Gestalt = selectAll('.class1');
    for (var i = 0; i < Gestalt.length; i++) {
        Gestalt[i].style('font-family', Schriftart);
        Gestalt[i].style(…);
        Gestalt[i].style(…);
        …
    };

    …

}positionLoop();

…
…
函数positionLoop(){
requestAnimationFrame(positionLoop);
…
var Zufallszahl1=随机(0,30);
var字体;
如果(Zufallszahl1=6){
字体=…;
}如果(Zufallszahl1=8){
字体=…;
}否则{
字体=…;
};
if(参数x){
SchriStart=Font;
}否则{
施里法特=…;
};
格式塔变量=selectAll('.class1');
for(var i=0;i<格式塔长度;i++){
格式塔[i].风格('font-family',Schriftart);
格式塔[i].风格(…);
格式塔[i].风格(…);
…
};
…
}positionLoop();
…

您可以使用单独的时间间隔:

(function () {
    var Zufallszahl1;
    function changeZufallszahl1() {
        Zufallszahl1 = random(0,30);
        if (Zufallszahl1 = 6) {
            Font = …;
        } else if (Zufallszahl1 = 8) { 
            …
        } else {
            …
        }

        …

    }

    changeZufallszahl1();
    // Repeat with whatever delay you want between changes
    setInterval(changeZufallszahl1, 1000); 

    // Keep your animation loop separate:
    function positionLoop() {
        requestAnimationFrame(positionLoop);

        …


    }
    positionLoop();
})();

您可以使用单独的时间间隔:

(function () {
    var Zufallszahl1;
    function changeZufallszahl1() {
        Zufallszahl1 = random(0,30);
        if (Zufallszahl1 = 6) {
            Font = …;
        } else if (Zufallszahl1 = 8) { 
            …
        } else {
            …
        }

        …

    }

    changeZufallszahl1();
    // Repeat with whatever delay you want between changes
    setInterval(changeZufallszahl1, 1000); 

    // Keep your animation loop separate:
    function positionLoop() {
        requestAnimationFrame(positionLoop);

        …


    }
    positionLoop();
})();

“但是,我不希望在每一帧中重新生成随机数。这太频繁、太快了。”那么,您希望它多久更新一次?“如果循环”:这是什么?同意前面的两条评论。为了给您一点帮助,
positionLoop
将收到一个HighResTimeStamp(类似于performance.now),您可以使用它每隔一段时间触发特殊事件。“但是,我希望随机数不要在每个帧中重新生成。这太频繁了,太快了。”那么,您希望它多久更新一次?“一个if循环”:那是什么?同意之前的两个评论。为了给您一点帮助,
positionLoop
将收到一个HighResTimeStamp(类似于performance.now),您可以使用它每隔一段时间触发特殊事件。谢谢您的回答!我真的忘了提到某个重要的东西(对不起):条件语句(if…else)包含一个变量(Font),我在函数PositionLoop()中的另一行代码中再次使用该变量……只需在与
Zufallszahl1
相同的位置定义该变量,因此在IIFE范围内。感谢您的回答!我真的忘了提到某个重要的东西(对不起):条件语句(if…else)包含一个变量(Font),我在函数PositionLoop()中的另一行代码中再次使用该变量……只需在与
Zufallszahl1
相同的位置定义该变量,因此在IIFE范围内。