Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
<canvas> 요소는 JavaScript로 제어하는 것이므로, 애니메이션도 쉽게 만들 수 있습니다. 복잡한 애니메이션을 만드는 것은 추가 작업이 더 필요하고, 앞으로 그에 대한 페이지도 머지 않아 추가되기를 기대합니다.
도형은 한번 만들어 놓으면 그 모습 그대로 있다는 것이 애니메이션을 만들 때의 가장 큰 제약일 것입니다. 그 도형을 움직이고자 하면 그 도형뿐만이 아니라 그 도형이 그려지기 전에 그려진 모든 것을 다시 그려야 합니다. 복잡한 장면을 다시 그리는 것은 시간도 많이 걸리며, 코드를 실행하는 컴퓨터의 능력에 따라 달라집니다.
한 장면을 그리려면 아래와 같은 단계를 밟습니다.
캔버스 메소드를 사용하거나 사용자 함수를 사용하여 캔버스에 도형들을 그립니다. 보통의 경우에서는, 코드 실행이 완료되면 캔버스에 나타나는 결과만을 보게 됩니다. 예를 들어, for 반복문 안에서 애니메이션을 실행하는 것은 불가능합니다.
그래서 정해진 시간마다 그리기 함수를 실행하는 방법이 필요한 것입니다. 아래와 같이 애니메이션을 제어하는 두 가지 방법이 있습니다.
정해진 시간마다 특정 함수를 부를 때 사용할 수 있는 window.setInterval()과 window.setTimeout() 함수가 있습니다.
참고 : 알아둘 것: 현재는 애니메이션을 만드는 방법으로 window.requestAnimationFrame() 메소드를 추천합니다. 이에 대한 튜토리얼은 곧 업데이트할 것입니다.
delay 밀리세컨드(1,000분의 1초)마다 function 함수 반복 실행을 시작합니다.
setTimeout(function, delay)delay 밀리세컨드(1,000분의 1초) 경과후, function 함수를 실행합니다.
사용자의 제어를 필요로 하지 않는 반복 실행에는 setInterval() 함수가 알맞을 것입니다.
애니메이션을 제어하는 두번째 방법은 사용자 입력입니다. 게임을 만들려고 한다면, 애니메이션을 제어하기 위해 키보드나 마우스 이벤트를 사용할 수 있을 것입니다. EventListener를 설정하여, 사용자와 상호 작용하여 애니메이션 함수를 실행합니다.
사용자 상호 작용이 필요하다면, 우리가 만든 애니메이션용 프레임웍(framework)의 최소 기능 버전 또는 최대 기능 버전을 사용할 수 있을 것입니다.
또는
아래 예제에서는, 애니메이션을 제어하기 위해 window.setInterval()을 사용할 것입니다. 페이지 제일 아래쪽에 window.setTimeout()을 사용한 예제 링크도 있습니다.
이 예제에서는 달이 지구를 돌고 지구가 태양을 도는 애니메이션을 만듭니다.
이 예제에서는, 현재 시각을 보여주는 움직이는 시계를 만듭니다.
이 예제에서는, 움직이는 파노라마 사진을 만듭니다. 사용할 그림은 위키피디어(Wikipedia)에서 구한 요세미티 국립공원입니다. 캔버스보다 큰 그림을 사용할 수도 있습니다.
예제에 사용된 <canvas>의 크기는 아래와 같다. 캔버스의 너비가 변수 CanvasXSize값과 같고, 캔버스의 높이는 변수 CanvasYSize값과 같다는 것에 주목하라.
다중 사용자 지원 그리기 놀이.
Canvascape3D 어드벤처 게임 (1인칭 슈팅).
A basic ray-caster키보드를 사용한 애니메이션 제어 방법에 대한 좋은 예제.
canvas adventure키보드 제어를 사용하는 또다른 좋은 예제.
An interactive Blob물방울 갖고 놀기.
Flying through a starfield별, 동그라미, 네모가 떠다니는 우주를 누벼라.
iGrapher주식 시장 자료 차트 예제.
This page was last modified on 2026년 4월 15일 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.