文章详情页
javascript - requestAnimationFrame如何控制帧速?
浏览:339日期: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. docker容器呢SSH为什么连不通呢?2. docker api 开发的端口怎么获取?3. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题4. docker网络端口映射,没有方便点的操作方法么?5. docker gitlab 如何git clone?6. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~7. Hbuilder中的phpMyAdmin访问题8. 请问“由于 Cookie “PHPSESSID”的“SameSite”属性设置为“None”,但缺少“Secure”属性,此 Cookie 未来将被拒绝。”请问出现这个问题怎么办?9. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?10. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?
排行榜

网公网安备