为了账号安全,请及时绑定邮箱和手机立即绑定

requestAnimationFrame如何控制帧速?

requestAnimationFrame如何控制帧速?

慕桂英4014372 2018-11-13 13:14:09
想在canvas里实现动画,动画是每帧都画在Sprite上连成一张图的,试过用setTimeout实现动画,发现会跳帧,但是requestAnimationFrame无法控制帧速,我希望1s画7帧该怎么办?
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

requestAnimationFrame就是在浏览器下一帧渲染时调用的,所以可以认为requestAnimationFrame的调用速率就是浏览器的刷新速率,一般来说是60帧

但是requestAnimationFrame调用callback的时候会传入一个时间戳参数,可以根据这个参数来进行判断从而处理你实际需要的帧速

比如要1秒7帧的话可以这样写

let step = (timestamp, elapsed) => {

    if (elapsed > 1000 / 7) {

        //TO DO SOMETHING

        elapsed = 0

    }

    

    window.requestAnimationFrame(

        _timestamp => step(_timestamp, elapsed + _timestamp - timestamp)

    )

}

window.requestAnimationFrame(timestamp => step(timestamp, 0))


查看完整回答
反对 回复 2018-12-08
  • 1 回答
  • 0 关注
  • 672 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信