定时器不不准确的问题

a5550602 CreateJS基础 最后由 极客学院_吕布 于2015年10月09日回复

  • 1 回答
  • 2.6k 浏览

createjs.Ticker.setFPS(30);
createjs.Ticker.addEventListener("tick",updateStage);

来实现时间每隔一段时间运行一次方法    调用方法的时间差别很大. 有时是区间大概在 30 - 300之间  很不稳定. 请问有什么办法让运行方法的时间差降到最小值

用自带的  window.setInterval(updateStage,30) ; 这个定时器也会有这样的问题. 会导致物体移动不流畅


  • 极客学院_吕布 2015年10月09日 回答 #1楼
  • 可以这样

    var startTime = new Date().getTime();

    var count = 0;

    setInterval(function(){

        var i = 0;    

    while(i++ < 100000000);}, 0);

    function fixed() 

    {    

    count++;    

    var offset = new Date().getTime() - (startTime + count * 1000);    

    var nextTime = 1000 - offset;    

    if (nextTime < 0) 

    nextTime = 0;    

    setTimeout(fixed, nextTime);         

    console.log(new Date().getTime() - (startTime + count * 1000));}setTimeout(fixed, 1000);


    代码里,通过1000(也就是周期时间)减去当前时间和准确时间的差距,来算出下次触发的时间,从而修正了当前触发的延迟.

  • 0 评论