Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict'
- const createFPSControlledLoop = (callback, fps = 60) => {
- let startTime = null
- let lastFrame = -1
- let requestId = null
- const loop = () => {
- requestId = requestAnimationFrame(loop)
- if (!startTime) {
- startTime = performance.now()
- }
- const currentTime = performance.now()
- const elapsedTime = currentTime - startTime
- const currentFrame = Math.floor(elapsedTime / (1000 / fps))
- if (lastFrame !== currentFrame) {
- callback()
- lastFrame = currentFrame
- }
- }
- const stop = () => cancelAnimationFrame(requestId)
- requestId = requestAnimationFrame(loop)
- return stop
- }
- const stop = createFPSControlledLoop(() => console.log('do animate'), 10)
- setTimeout(stop, 3000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement