以可变速度递增计数器

时间:2017-08-07 20:05:04

标签: javascript increment

我正在使用JavaScript创建增量游戏(如CookieClicker,如果您曾经玩过它)。

要使用CookieClicker作为示例,您每秒都会生成一定数量的Cookie。如果你每秒制作700个cookie,那么计数器每秒增加1个cookie 700次(或者似乎)。

目前在我的游戏中,如果你正在制作700" cookies"每秒,计数器将增加700" cookies"每秒一次,而不是按固定数量顺利增加。

我对如何做到这一点感到茫然。我已经创建了一个计算" cookies"的数量的函数。你每秒做一次,我尝试使用那个数字来使window.setInterval()的时间参数成为一个变量,但我甚至不确定这是否可行,更不用说实用了。

我很确定这不是正确的方法,但我还是会发布相关代码:

function getManaPerSecond(){
    manaPerSecond = earthEssence + (windEssence * 5) + (waterEssence * 10) + 
    (fireEssence * 150);
};

window.setInterval(function(){
    getManaPerSecond();
}, 1000);

window.setInterval(function(){
    if(manaPerSecond>0){
        incrementalMana++;
     document.getElementById('incrementalMana').innerHTML = incrementalMana;
 }
 }, (1000/manaPerSecond));

1 个答案:

答案 0 :(得分:1)

每当频率发生变化时,您需要停止旧间隔功能并启动一个新功能。

var manaCounter;
var oldManaPerSecond = 0;
function restartManaCounter(manaPerSecond) {
    if (manaPerSecond != oldManaPerSecond) {
        clearInterval(manaCounter);
        oldManaPerSecond = manaPerSecond;
        if (manaPerSecond > 0) {
            manaCounter = setInterval(function() {
                incrementalMana++;
                document.getElementById('incrementalMana').innerHTML = incrementalMana;
            }, 1000/manaPerSecond);
        }
    }
}

function getManaPerSecond(){
    var manaPerSecond = earthEssence + (windEssence * 5) + (waterEssence * 10) +  (fireEssence * 150);
    return manaPerSecond;
};

window.setInterval(function() {
    restartManaCounter(getManaPerSecond());
}, 1000);