0

我有一个简单的计数计时器,它将计数到指定的数字并在一段时间(65 秒)后完成。我想知道如何将计数随机化一点,以便在某些点计数更快而在其他点计数更慢,但仍使其在指定的结束时间完成。这是我用来计数的功能。maxCount 是动态的,但在本例中我只是将其设置为 101。

我在这里设置了一个 jsfiddle:http: //jsfiddle.net/bz2Hz/

function fillCounter() {
var maxCount = 101;
var interval = 65000/maxCount;
var val = 0;
count();
function count(){
    if ( val <= maxCount ){
        val++;
        $('.results-number').html(val);
        setTimeout(count,interval);
    }
}
}

任何提示将不胜感激。提前致谢

4

1 回答 1

1

尝试将间隔也设置为随机

fiddle

function fillCounter() {
var maxCount = 101;
var interval = 65000/maxCount;
var val = 0;
count();
function count(){
    if ( val <= maxCount ){
        val++;
        $('.results-number').html(val);

        setTimeout(count,interval);

        var plusOrMinus = Math.random() < 0.5 ? -100 :100;
        console.log(plusOrMinus);
        interval =  (interval + Math.floor((Math.random())+plusOrMinus));

        console.log(interval);
    }
  }
}
fillCounter();

编辑 :

你可以这样尝试fiddle

  1. 设置计时器

    var count = 65;
    var counter = setInterval(timer, 1000); 
    function timer() {
    counting();
    count = count - 1;
       if (count <= 0) {
        clearInterval(counter);
        return;
     }
    
     }
    

然后通过设置随机间隔打印您的值

  var val = 0;

  function printer() {
    val++;
     $('.results-number').html(val);
  }

 function counting() {
   var multi = Math.random() < 0.5 ? 1 : 10000;

   interval = Math.floor((Math.random() * multi));

    console.log(interval);
    setTimeout(printer, interval);
 }
于 2013-05-10T17:34:57.637 回答