[JavaScript] 자바스크립트 requestAnimationFrame 사용하기
2022. 7. 19. 15:02ㆍProgram/JavaScript
182_자바스크립트 requestAnimationFrame 사용하기
[적용]
- WebGL과 HTML 캔버스에서 애니메이션을 처리하고 싶을 때
- 요소에 3D 효과를 주고 싶을 때
[문법]
메소드 | 의미 | 반환 |
requestAnimationsFrame(함수) | 시간 경과에 따른실행 함수 등록 | 숫자 |
[내용]
requestAnimationFrame()은 화면에 각 프레임이 표시되기 전에 함수를 불러내는 명령으로,
이 메소드를 사용하면 시간 경과에 따른 지속적인 변화를 줄 수 있다.
일반적인 디스플레이는 초당 60프레임이 표시되며, 이는 한 프레임단 약 16밀리초의 시간이다.
만약 setTimeout()과 setInterval()을 사용해 16밀리초 이하의 시간을 설정한다면,
화면에는 표시되지 않으므로 불필요한 처리가 발생한다.
그러나 requestAnimationsFrame()을 사용하면 웹에서 불필요한 처리 없이 프레임 표시에 맞춰 애니메이션 효과를 줄 수 있다.
requestAnimationFrame()은 한 번만 호출되나, 애니메이션을 생성하기 위해서는 함수의 연속 호출이 필요하다.
함수 내에서 자신을 다시 불러내도록 하여 tick 함수를 지속적으로 실행할 수 있다.
JavaScript
tick();
function tick() {
requestAnimationFrame(tick);
// 애니메이션 작업 처리 내용
}
requestAnimationFrame()은 주로 WebGL과 HTML 캔버스에서 사용한다.
함수의 실행을 멈추고 싶을 때는 다음과 같은 방법을 사용한다.
- requestAnimationFrame()의 호출을 멈춤
- cancelAnimationFrame()을 사용해 멈춤
JavaScript
tick();
function tick() {
if (조건문) {
requestAnimationFrame(tick);
}
// 애니메이션 작업 처리 내용
}
requestAnimationFrame()은 숫자 값의requestID를 반환한다.
임의의 시점에 requestID를 cancelAnimationFrame()의 인수로 전달하면 해당 함수의 실행을 취소한다.
JavaScript
tick();
let requestID;
function tick() {
requestID = requestAnimationFrame(tick);
// 애니메이션 작업 처리 내용
}
calcelAnimationFrame(requestID);
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 스크립트로 이미지 로딩하기 (0) | 2022.07.22 |
---|---|
[JavaScript] 자바스크립트 requestAnimationFrame 사용하기 (HTML) (0) | 2022.07.22 |
[JavaScript] 자바스크립트 요소 채도 조절하기 (0) | 2022.07.19 |
[JavaScript] 자바스크립트 요소 밝기 조절하기 (0) | 2022.07.19 |
[JavaScript] 자바스크립트 요소 투명도 조절하기 (0) | 2022.07.19 |