javascript - requestAnimationFrame如何控制幀速?
仅有的幸福
仅有的幸福 2017-05-16 13:44:28
0
3
756

想在canvas裡實現動畫,動畫是每幀都畫在Sprite上連成一張圖的,試過用setTimeout實現動畫,發現會跳幀,但是requestAnimationFrame無法控制幀速,我希望1s畫7幀怎麼辦?

仅有的幸福
仅有的幸福

全部回覆(3)
过去多啦不再A梦

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))
Ty80

似乎不可控,瀏覽器自己計算的

迷茫

1s7幀這種刷新速率...本來就是"跳幀"的效果...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板