文章详情页
javascript - requestAnimationFrame如何控制帧速?
浏览:124日期:2022-12-11 15:11:44
问题描述
想在canvas里实现动画,动画是每帧都画在Sprite上连成一张图的,试过用setTimeout实现动画,发现会跳帧,但是requestAnimationFrame无法控制帧速,我希望1s画7帧该怎么办?
问题解答
回答1:requestAnimationFrame就是在浏览器下一帧渲染时调用的,所以可以认为requestAnimationFrame的调用速率就是浏览器的刷新速率,一般来说是60帧
但是requestAnimationFrame调用callback的时候会传入一个时间戳参数,可以根据这个参数来进行判断从而处理你实际需要的帧速
比如要1秒7帧的话可以这样写
let step = (timestamp, elapsed) => { if (elapsed > 1000 / 7) {//TO DO SOMETHINGelapsed = 0 }window.requestAnimationFrame(_timestamp => step(_timestamp, elapsed + _timestamp - timestamp) )}window.requestAnimationFrame(timestamp => step(timestamp, 0))回答2:
貌似不可控,浏览器自己计算的
回答3:1s7帧这种刷新速率...本来就是'跳帧'的效果...
标签:
JavaScript
相关文章:
1. mysql - ubuntu开启3306端口失败,有什么办法可以解决?2. php传对应的id值为什么传不了啊有木有大神会的看我下方截图3. extra没有加载出来4. javascript - 微信网页开发从菜单进入页面后,按返回键没有关闭浏览器而是刷新当前页面,求解决?5. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();6. mysql日期类型默认值’0000-00-00’ 报错7. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?8. mysql replace 死锁9. windows - asp.net连接上mysql之后如何调用?比如下面的登录验证功能怎么实现10. android - 安卓做前端,PHP做后台服务器 有什么需要注意的?
排行榜
