requestAnimationFrame()
자바스크립트로 애니메이션을 구현할 때는 1초에 60프레임을 찍어내면 된다.
사람은 1초에 60개의 프레임을 볼 수 있기 때문이다.
16.6ms(1000ms/60frame)마다 프레임을 찍어내면 된다.
setInterval로도 이를 구현할 수 있지만, setInterval이나 setTimeout은 프레임을 신경쓰지 않고 동작하기 때문에
애니메이션 코드를 실행하는데 16.6ms가 넘게 걸린다면 16.6ms동안 프레임을 찍어내지 못했기 때문에 화면이 끊기는 듯한 현상이 발생할 수 있다.
프레임 시작시간에 맞춰 함수가 시작되는 것이 아니라 중간쯤부터 시작해 프레임 시간을 초과해버린다.
requestAnimationFrame을 사용하면 프레임 생성 시작시간에 맞춰 애니메이션 코드를 시작할 수 있다.
최적화된 속도로 부드러운 애니메이션을 표현하면서 성능도 확보할 수 있다.
사용 예시
function update() {
requestAnimationFrame(update);
}
화면에 새로운 애니메이션을 업데이트할 때마다 이 메소드를 호출한다.
requestAnimationFrame()은 스스로 반복해서 호출하지 않기 때문에 재귀적으로 함수를 다시 호출해줘야한다.
'FRONT > JAVASCRIPT' 카테고리의 다른 글
[TS] TypeScript란? (테스트/설치) (0) | 2022.01.20 |
---|---|
[JS] 바닐라 자바스크립트 벽돌깨기 게임 (0) | 2021.08.25 |
[JS] 바닐라 자바스크립트 무한 스크롤링(infinite scrolling) (0) | 2021.08.12 |
[JS] 바닐라 자바스크립트 타이핑 게임 (0) | 2021.08.09 |
[JS] 자바스크립트 이벤트 위임( Event Delegation ) (0) | 2021.07.25 |