рдЙрдиреНрдирдд рдПрдирд┐рдореЗрд╢рди requestAnimationFrame рдХреЗ рд╕рд╛рде

рдпрджрд┐ рдЖрдкрдиреЗ рдПрдирд┐рдореЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рдЖрдЧреЗ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ :)

рдЕрдиреБрд░реЛрдз рдХреНрдпрд╛ рд╣реИ


рдЖрдкрдХреА рд╕рднреА рдПрдиреАрдореЗрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ, рдЖрдк рд╣рд░ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ "рд╣рдо рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред" рдЗрд╕рд▓рд┐рдП, рдпрд╣ DOM рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ, рдХреИрдирд╡рд╛рд╕ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рд╡реЗрдмрдЬреАрдПрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдПрдкреАрдЖрдИ рд╣реИ

рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдмреНрд░рд╛рдЙрдЬрд╝рд░реНрд╕ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдирд┐рдореЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд░рд┐рдлреНрд▓реЛ рдФрд░ рд░реЗрдкреЗрдВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдХреНрд░рдордг рдпрд╛ рдПрд╕рд╡реАрдЬреА рдПрд╕рдПрдордЖрдИрдПрд▓ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдПрдиреАрдореЗрд╢рди рдПрдХ рдЯреИрдм рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрджреГрд╢реНрдп рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдирд╣реАрдВ рд░рд╣реЗрдВрдЧреЗ , рдЬрд┐рд╕рд╕реЗ рд╕реАрдкреАрдпреВ, рдЬреАрдкреАрдпреВ, рдореЗрдореЛрд░реА рдХрд╛ рдХрдо рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдмреИрдЯрд░реА рдХреА рдЦрдкрдд рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


//    -    window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(/* function */ callback, /* DOMElement */ element){ window.setTimeout(callback, 1000 / 60); }; })(); // : (function animloop(){ render(); requestAnimFrame(animloop, element); })(); 

рдиреЛрдЯ: рдореИрдВ requestAnimFrame рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдирд╛рдордХрд░рдг рдХрд░реЗрдВ (рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВ)

рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдХреНрд░рд┐рдпрд╛: jsfiddle.net/paul/XQpzU

requestAnimationFrame API


 window.requestAnimationFrame(function(/* time */ time){ // time ~= +new Date }, /*   */ elem); 

рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд░реНрддрдорд╛рди рдПрдиреАрдореЗрд╢рди (рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП) рд╕реЗ рдЬреБрдбрд╝реЗ рддрддреНрд╡ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдХреИрдирд╡рд╛рд╕ рдФрд░ рд╡реЗрдмрдЬреАрдПрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ <рдХреИрдирд╡рд╛рд╕> рддрддреНрд╡ рд╣реЛрдЧрд╛ред рдЕрдиреНрдп рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?


рдЕрдм рд╡реЗрдмрдХрд┐рдЯ ( рдирд╛рдЗрдЯрд▓реА рд╕рдлрд╛рд░реА рдФрд░ рдХреНрд░реЛрдо рджреЗрд╡ рдЪреИрдирд▓ ) рдФрд░ рдореЛрдЬрд╝рд┐рд▓рд╛ (рдПрдлрдПрдл 4) рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИрдВред рдореЛрдЬрд╝рд┐рд▓рд╛ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬреЛ рдПрдиреАрдореЗрд╢рди рдХреЗ рдлрд╝реНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ (рд▓рдЧрднрдЧ 30) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рдпрд╣ 1000 / (16 + рдПрди) рдПрдлрдкреАрдПрд╕ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ рдПрди рдПрдиреАрдореЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди 1 рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдлрд╝реНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╣реЛрдЧреАред рдпрджрд┐ рдПрдиреАрдореЗрд╢рди рдлрд╝рдВрдХреНрд╢рди 1 рдПрдордПрд╕ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ 60 рд╣реЛрдЧреА ред рдпрд╣ рдЕрдЧрд▓реЗ рдПрдлрдПрдл рд░рд┐рд▓реАрдЬ рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдлрдПрдл 4 рдХреЗ рдмрд╛рджред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд░реЛрдо 10 рдореЗрдВ рд╕рдордп рдкреИрд░рд╛рдореАрдЯрд░ (m11 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛) рдирд╣реАрдВ рд╣реИ, рдПрдлрдПрдл рдЕрдм рдПрд▓рдо рддрд░реНрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред

рд╕рдореАрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВ!


рдпрджрд┐ рдЖрдк рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрдмрдХрд┐рдЯ рдФрд░ рдЧреЗрдХреЛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╕реБрдирдХрд░ рдЦреБрд╢ рд╣реЛрдВрдЧреЗред рдбреНрд░рд╛рдлреНрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП requestAnimationFrame рдХреЛ рджреЗрдЦреЗрдВред рдЕрдм рдпрд╣ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; рдХреНрдпрд╛ рдпрд╣ setInterval рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рдХреНрдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдПрдкреАрдЖрдИ рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ? рдХреНрдпрд╛ рдПрд▓рд┐рдореЗрдВрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдПрдкреАрдЖрдИ рд╕рднреА рдПрдиреАрдореЗрд╢рди рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ?

рдЕрдиреНрдп рд╕реНрд░реЛрдд

  1. рдбреНрд░рд╛рдлреНрдЯ рдХрд▓реНрдкрдирд╛ (рд╣рд╛рдЗрдХреИрдо рдФрд░ рдЬреИрдорд╕рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд)
  2. рдХреНрд░реЛрдорд┐рдпрдо рдбрд┐рдЬрд╝рд╛рдЗрди рдбреЙрдХ
  3. рдПрдХ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг
  4. рдХреБрдЫ рдЙрдкрд▓рдмреНрдз рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рдЙрджрд╛рд╣рд░рдг
  5. MoCRequestAnimationFrame рдкрд░ MDC рдбреЙрдХреНрд╕
  6. рдПрдирд┐рдореЗрд╢рди рдЯрд╛рдЗрдорд░реНрд╕ рдпреВрдЖрдИ рдПрдиреАрдореЗрд╢рди рд▓реВрдк , рдереНрд░реА.рдЬреЗрдПрд╕ , рд▓рд╛рдЗрдордЬ , рдЬреАрдЖрдИрд╕реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЯрд┐рдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп
  7. рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдЯреИрдм рдкрд░ рд▓реБрдИрд╕-рд░реЗрдореА рдмрд╛рдмреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
  8. рдиреЛрдХрд░реНрдорд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдХрд╡рд░реЗрдЬ
  9. рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рд░реЙрдмрд░реНрдЯ рдУ'рдХреИрд▓реНрд╣рд╛рди рдиреЗ рдЖрд░рдПрдПрдл рдкрд░ рд╢реБрд░реБрдЖрддреА рдкреЛрд╕реНрдЯ рдХреА

Source: https://habr.com/ru/post/In114358/


All Articles