Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. 'use strict'
  2.  
  3. const createFPSControlledLoop = (callback, fps = 60) => {
  4. let startTime = null
  5. let lastFrame = -1
  6. let requestId = null
  7.  
  8. const loop = () => {
  9. requestId = requestAnimationFrame(loop)
  10.  
  11. if (!startTime) {
  12. startTime = performance.now()
  13. }
  14.  
  15. const currentTime = performance.now()
  16. const elapsedTime = currentTime - startTime
  17. const currentFrame = Math.floor(elapsedTime / (1000 / fps))
  18.  
  19. if (lastFrame !== currentFrame) {
  20. callback()
  21. lastFrame = currentFrame
  22. }
  23. }
  24.  
  25. const stop = () => cancelAnimationFrame(requestId)
  26.  
  27. requestId = requestAnimationFrame(loop)
  28.  
  29. return stop
  30. }
  31.  
  32. const stop = createFPSControlledLoop(() => console.log('do animate'), 10)
  33.  
  34. setTimeout(stop, 3000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement