requestAnimationFrame
Last updated
Last updated
Web API μ€ νλλ‘ λΈλΌμ°μ λ λλ§ μμ§κ³Ό ν¨κ» μΉ μ΄ν리μΌμ΄μ μ μ λλ©μ΄μ μ λΆλλ½κ² λ§λλλ° μ¬μ©λλ€.
λΈλΌμ°μ μκ² μννκΈ°λ₯Ό μνλ μ λλ©μ΄μ μ μλ¦¬κ³ , λ€μ 리νμΈνΈκ° μ§νλκΈ° μ μ ν΄λΉ μ λλ©μ΄μ μ μ λ°μ΄νΈνλ ν¨μλ₯Ό νΈμΆνκ² νλ€.
μ΄ λ©μλλ 리νμΈνΈ μ΄μ μ μ€νν μ½λ°±μ μΈμλ‘ λ°λλ€.
λ€μ 리νμΈνΈμμ κ·Έ λ€μ νλ μμ μ λλ©μ΄νΈνλ €λ©΄ μ½λ°± 루ν΄μ΄ λ°λμ μ€μ€λ‘ requestAnimationFrame()
μ νΈμΆν΄μΌ νλ€.
60hz κΈ°μ€ 60fps(16.7ms)λ§λ€ λΈλΌμ°μ λ₯Ό μ λ°μ΄νΈ
λΈλΌμ°μ μ DOM μμλ₯Ό λ³ννκ²λ€μ΄ νκΈ° λκΈ° μν΄μλ λ λνΈλ¦¬λ₯Ό μ λ°μ΄νΈ, (Layout, Paint, Composite)λ¨κ³λ₯Ό κ±°μΉλ€.
λΈλΌμ°μ κ° μ λ°μ΄νΈ λκΈ°μ μ RequestAnimationFrameμ λ±λ‘ν μ½λ°±μ΄ μ€νλλ€. μ¦, RequestAnimationFrameμ 60fpsλ₯Ό 보μ₯νλ€.
rAF -> layout -> paint -> composit λ¨κ³μμΌλ‘ μ²λ¦¬λλ€.
νλ©΄μ νμλ νλμ μ μ§λ μ΄λ―Έμ§λ₯Ό λνλΈλ€.
μ λλ©μ΄μ μ μ΄ νλ μλ€μ΄ μ°μμ μΌλ‘ λΉ λ₯΄κ² λμ΄λμ΄ μμ§μμ λνλΈκ²
μ¬μ©μκ° μ λλ©μ΄μ μ μ΄μ νμ§ μκ² λλΌλ €λ©΄ μ΅μ 1μ΄μ 60νλ μ(60fps)μ νλ©΄μ νμν΄μΌ νλ€.
λͺ¨λν° μ£Όμ¬μ¨(Hz)
μ λ°λΌ rAF μ½λ°± μ€ν νμκ° λ¬λΌμ§λ―λ‘, λμΌν μ λλ©μ΄μ
μ μ 곡νκΈ° μν΄μλ λ°λ‘ μ²λ¦¬κ° νμνλ€.
λͺ¨λν° μ£Όμ¬μ¨μ΄λ λͺ¨λν°κ° νλ©΄μ κ°±μ νλ μλλ₯Ό λνλΈλ€.
μ£Όλ‘ ν€λ₯΄μΈ (Hz)λ‘ νμνλ©° 60Hzλ νλ©΄μ 1μ΄μ 60λ² κ°±μ νλ€λ μλ―Έμ΄λ€.
λλΆλΆμ μΉλΈλΌμ°μ λ λμ€νλ μ΄μ Hzλ₯Ό λ°λ₯Έλ€. μ¦, 120Hzλ₯Ό μ§μνλ λͺ¨λν°λ rAF μ½λ°±ν¨μκ° 1μ΄μ 120λ² μ€νλλ€.
rAF μ½λ°± μ€ννμμ μκ΄ μμ΄ 1μ΄μ μ½λκ° λͺλ² μ€νλ μ§(fps) μ ν΄μ λͺ¨λ λͺ¨λν°μμ λμΌν μκ°μ λμΌν μμ§μμ λνλΌ μ μλ€.
60hz κΈ°μ€ rAF μ½λ°±μ 16.7msλ§λ€ μ€νλλ€.
now β rAF μ½λ°±μ΄ μ€νλ λ νμ¬ νμμ€ν¬νλ₯Ό μ μ₯ν λ³μ ex:) 1000ms -> 1016ms -> 1032 ms
then β μ λλ©μ΄μ μ΄ νΈμΆ λ‘μ§μ΄ μ€νλ νμμ€ν¬νλ₯Ό μ μ₯ν λ³μ
delta β νμ¬μ νμμ€ν¬νμ μ΄μ μ λλ©μ΄μ μ΄ νΈμΆλ νμμ€ν¬νμ μκ° κ°κ²©μ μ μ₯νλ λ³μ
μ¦, interval
μκ° κ°κ²© λ§λ€ μ λλ©μ΄μ
λμ λ‘μ§μ μ€νμν¨λ€.