aboutsummaryrefslogtreecommitdiff
path: root/files/ko/web/api/window/requestanimationframe/index.html
blob: d85946dee310bd3f1f1fa6807cba27b299339023 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
---
title: window.requestAnimationFrame()
slug: Web/API/Window/requestAnimationFrame
tags:
  - API
  - Animations
  - DOM
  - DOM 레퍼런스
  - requestAnimationFrame
  - 게임
  - 그래픽
  - 그리기
  - 레퍼런스
  - 메소드
  - 성능
  - 스케줄링
  - 윈도우
  - 자바스크립트 타이머
  - 중급
translation_of: Web/API/window/requestAnimationFrame
---
<p>{{APIRef}}<br>
 <strong><code>window.requestAnimationFrame()</code></strong>은 브라우저에게 수행하기를 원하는 애니메이션을 알리고 다음 리페인트가 진행되기 전에 해당 애니메이션을 업데이트하는 함수를 호출하게 합니다. 이 메소드는 리페인트 이전에 실행할 콜백을 인자로 받습니다.</p>

<div class="note"><strong>노트:</strong> 다음 리페인트에서 그 다음 프레임을 애니메이트하려면 콜백 루틴이 반드시 스스로 <code>requestAnimationFrame()</code>을 호출해야합니다.</div>

<p>화면에 새로운 애니메이션을 업데이트할 준비가 될때마다 이 메소드를 호출하는것이 좋습니다. 이는 브라우저가 다음 리페인트를 수행하기전에 호출된 애니메이션 함수를 요청합니다. 콜백의 수는 보통 1초에 60회지만, 일반적으로 대부분의 브라우저에서는 W3C 권장사항에 따라 그 수가 디스플레이 주사율과 일치하게됩니다. 대부분의 최신 브라우저에서는 성능과 배터리 수명 향상을 위해 <code>requestAnimationFrame()</code> 호출은 백그라운드 탭이나 hidden {{ HTMLElement("iframe") }}에서 실행이 중단됩니다.</p>

<p>콜백 메소드에는 <code>requestAnimationFrame()</code>이 대기된 콜백을 실행하는 시점을 나타내는 단일 인자 {{domxref("DOMHighResTimeStamp")}}가 전달됩니다. 따라서, 모든 이전 콜백의 작업 부하를 계산하는동안 시간이 지나갔음에도 불구하고 단일 프레임에서의 다중 콜백은 각각 동일한 타임스탬프를 받습니다. 이 타임스탬프는 밀리초 단위의 십진수지만, 최소 정밀도는 1ms (1000 µs) 입니다.</p>

<h2 id="Syntax" name="Syntax">구문</h2>

<pre class="syntaxbox">window.requestAnimationFrame(callback);
</pre>

<h3 id="Parameters" name="Parameters">파라미터</h3>

<dl>
 <dt><code>callback</code></dt>
 <dd>다음 리페인트를 위한 애니메이션을 업데이트할 때 호출할 함수입니다. 콜백 함수에는 <code>requestAnimationFrame()</code>이 콜백 함수 실행을 시작할 때의 시점을 나타내는 {{domxref('performance.now()')}} 에 의해 반환되는 것과 유사한 {{domxref("DOMHighResTimeStamp")}} 단일 인자가 전달됩니다.</dd>
</dl>

<h3 id="반환_값">반환 값</h3>

<p>콜백 리스트의 항목을 정의하는 고유한 요청 id 인 <code>long</code> 정수 값. 0 이 아니라는것 외에는 다른 추측을 할 수가 없는 값입니다. 이 값을 {{domxref("window.cancelAnimationFrame()")}} 에 전달해 콜백 요청을 취소할 수 있습니다.</p>

<h2 id="Notes" name="Notes">예시</h2>

<pre class="brush: js">var start = null;
var element = document.getElementById('SomeElementYouWantToAnimate');
element.style.position = 'absolute';

function step(timestamp) {
  if (!start) start = timestamp;
  var progress = timestamp - start;
  element.style.left = Math.min(progress / 10, 200) + 'px';
  if (progress &lt; 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);
</pre>

<h2 id="노트">노트</h2>

<p>인터넷 익스플로러와 Edge 17 버전 이하는 페인트 사이클 이전에 <code>requestAnimationFrame</code> 실행을 보장하지 않습니다.</p>

<h2 id="Specification" name="Specification">명세</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">명세</th>
   <th scope="col">상태</th>
   <th scope="col">코멘트</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('HTML WHATWG', '#animation-frames', 'requestAnimationFrame')}}</td>
   <td>{{Spec2('HTML WHATWG')}}</td>
   <td>변경 사항 없음, 이 전 것을 대체.</td>
  </tr>
  <tr>
   <td>{{SpecName('RequestAnimationFrame', '#dom-windowanimationtiming-requestanimationframe', 'requestAnimationFrame')}}</td>
   <td>{{Spec2('RequestAnimationFrame')}}</td>
   <td>초기 정의</td>
  </tr>
 </tbody>
</table>

<h2 id="브라우저_호환성">브라우저 호환성</h2>

<div>


<p>{{Compat("api.Window.requestAnimationFrame")}}</p>
</div>

<h2 id="See_also" name="See_also">함께 보기</h2>

<ul>
 <li>{{domxref("Window.mozAnimationStartTime")}}</li>
 <li>{{domxref("Window.cancelAnimationFrame()")}}</li>
 <li><a href="http://weblogs.mozillazine.org/roc/archives/2010/08/mozrequestanima.html">mozRequestAnimationFrame</a> - 블로그 포스트</li>
 <li><a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/">requestAnimationFrame for smart animating</a> - 블로그 포스트</li>
 <li><a href="http://hacks.mozilla.org/2011/08/animating-with-javascript-from-setinterval-to-requestanimationframe/">Animating with javascript: from setInterval to requestAnimationFrame</a> - 블로그 포스트</li>
 <li><a href="http://blogs.msdn.com/b/ie/archive/2011/07/05/using-pc-hardware-more-efficiently-in-html5-new-web-performance-apis-part-1.aspx">Using PC Hardware more efficiently in HTML5: New Web Performance APIs, Part 1</a> - 블로그 포스트</li>
 <li><a href="http://www.testufo.com/#test=animation-time-graph" title="http://www.testufo.com/#test=animation-time-graph">TestUFO: Test your web browser for requestAnimationFrame() Timing Deviations</a></li>
 <li>Paul Irish: <a class="external external-icon" href="http://updates.html5rocks.com/2012/05/requestAnimationFrame-API-now-with-sub-millisecond-precision">requestAnimationFrame API: now with sub-millisecond precision</a></li>
</ul>