Необходимо, чтобы счетчик работал вне метода цикла анимации кадров. Вы можете добавить некоторый таймер в функцию для компенсации кадра (60fps означает, что animate()
будет работать примерно каждые 16.667 мс), но requestAnimationFrame()
не всегда будет работать при 60 fps. Если браузер не может выполнить рендеринг в таком темпе, он замедлит цикл кадров. Поэтому не стоит создавать таймер, который вообще связан с requestAnimationFrame();
.
Вместо этого сделал счетчик вне функции. В идеале, используйте setInterval()
прямо перед началом цикла анимации. Интервал может выглядеть примерно так ...
var counter = 0;
var timer = window.requestAnimationFrame(function(){
timeBoard.update();
if(counter+1 == 60){
//a minute has passed, clear the interval:
clearInterval(timer);
}else{
counter++;
}
},1000);
Если вы включите код, который запускает цикл анимации, в детали вашего вопроса, я могу помочь точно показать, как вы бы это реализовали. Кроме того, вы не упоминаете, нужен ли счетчик для повторного использования. Это все вещи для рассмотрения. Если вам нужно, чтобы его можно было повторно использовать, вы можете рассмотреть возможность использования объектно-ориентированного решения.