SlideShare a Scribd company logo
1 of 13
Sprite Animation
Codin9 café third html5 canvas
HTML5Canvas
leesanghun
Sprite animation이란?
Canvas 기본 설정
이미지 가져오기
drawImage 알아보기
좀 더 smooth하게 !
QnA
content
Html5 canvas sprite animation
Spilte animation 실행
Sprite animation이란?
Sprite sheet and Texture
스프라이트 시트와 텍스처
텍스처가 프레임마다 물리적으로 다른 비트맵 파일이면 프레임을 진행할 때마다 텍스처 전환이 발생한다.
텍스처 전환 처리에는 당연히 시간이 걸린다. 또한 텍스처의 GPU에 업로드가 필요할 때 추가 오버헤드가 증가한다.
일반적으로 이 문제를 해결하기 위해 각 프레임의 텍스처를 하나의 파일에 정의한다.
이것을 스프라이트 시트라고한다.
스프라이트 화면 표시에서 이용되는 도형의 무늬를 등록하고, 그 무늬에 다른 그림을 겹쳐서 합성시킬
수 있다. 고속 표시가 가능하면 연속되는 그림을 매끄럽게 움직일 수 있다.
무엇을 할 수 있을까?
4
4가지 걸어가는 형태의 각각의 텍스쳐들을 하나의 파일(Sprite.png)로 정의된 것을 이용하여
오른쪽 키(->)를 누르면 옆으로 걸어가는 간단한 애니메이션
Canvas 기본 설정
Canvas 사용을 위한 기본 설정01
Canvas 기본 설정
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<style>
body{
margin: 0px;
overflow: hidden;
}
</style>
<script>
window.addEventListener("load",draw,false);
function draw(){
var canvas = document.getElementById('canvas');
var content = canvas.getContext("2d");
}
</script>
</head>
<body>
<canvas id = "canvas" width = "800" height ="600"></canvas>
</body>
</html>
이미지 가져오기
Keydown 실행
Sprite animation
이미지 가져 오기
객체 선언과 이미지 불러오기02
Canvas 기본 설정
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<style>
body{
margin: 0px;
overflow: hidden;
}
</style>
<script>
window.addEventListener("load",draw);
var Image = new Image()
Image.src = "Sprite.png";
function draw(){
var canvas = document.getElementById('canvas');
var content = canvas.getContext("2d");
//drawImage를 통해서 그린다.
content.drawImage(Image,0,0);
}
</script>
</head>
<body>
<canvas id = "canvas" width = "800" height ="600">
</canvas>
</body>
</html>
이미지 가져오기
Keydown 실행
Sprite animation
Keydown 실행
Keydown을 통해 실행하기03
Canvas 기본 설정
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<style>
body{margin: 0px;overflow: hidden;}
</style>
<script>
window.addEventListener("load",draw);
window.addEventListener("keydown",move);
var Image = new Image()
Image.src = "Sprite.png";
var Image_x = 0;
function draw(){
var canvas = document.getElementById('canvas');
var content = canvas.getContext("2d");
content.drawImage(background,0,0);
content.drawImage(Image, Image_x,0)
function move(e){
switch(e.keyCode){
case 39 : Image_x +=30;
}break;
}draw();
}
</script>
</head>
<body>
<canvas id = "canvas" width = "800" height ="600">
</canvas>
</body>
</html>
이미지 가져오기
Keydown 실행
Sprite animation
Keydown – e(인자값 전달) – e.keyCode(e의 키코드 식별) – 맞는지 확인
drawImage
step1 이미지 처리 기본
drawImage
step2 이미지 확대 / 기본
drawImage
step3 이미지 자르기
Sprite animation
Sprite animation04
Canvas 기본 설정
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<style>
body{margin: 0px;overflow: hidden;}
</style>
<script>
window.addEventListener("load",draw);
window.addEventListener("keydown",move);
var background = new Image();
background.src = "codingcafe.png";
var Image = new Image()
Image.src = "Sprite.png";
var Image_x = 0;var Image_y = 0;
var Image_X = 0;var Image_Y = 0;
function draw(){
var canvas = document.getElementById('canvas');
var content = canvas.getContext("2d");
//drawImage를 통해서 그린다.
content.drawImage(background,0,0);
content.drawImage(Image, Image_X, Image_Y, 100, 200,
Image_x, Image_y , 100, 200);
}
function move(e){
switch(e.keyCode){
case 39 : Image_x +=30;
Image_X +=78;
if(Image_X == (78*3))
Image_X = 0;
if(Image_x>800)
Image_x = 0;
break;
}
draw();}
이미지 가져오기
Keydown 실행
Sprite animation
좀 더 smooth하게 !
canvas에서이미지뿌리기와타이머를이용한스프라이트출력
Made by lee sang hun in Coding café
감사합니다
HTML5 Canvas Sprite animation

More Related Content

Similar to Html5 canvas sprite animation

Html5 canvas animation
Html5 canvas animationHtml5 canvas animation
Html5 canvas animationSangHun Lee
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드Jong-hyun Park
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 [122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 NAVER D2
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차Michael Yang
 
[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overviewNAVER D2
 
Improve CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for AccessibilityImprove CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for Accessibilityyamoo9
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장ukjinkwoun
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지yongwoo Jeon
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetectJunyi Song
 
프론트엔드 애니메이션의 정수
프론트엔드 애니메이션의 정수프론트엔드 애니메이션의 정수
프론트엔드 애니메이션의 정수jeong seok yang
 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphicsJinKyoungHeo
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7jangpd007
 
스키닝 애니메이션
스키닝 애니메이션스키닝 애니메이션
스키닝 애니메이션sung suk seo
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법SooHwan Ok
 
Pro android performance optimization 20171213
Pro android performance optimization 20171213Pro android performance optimization 20171213
Pro android performance optimization 20171213Changwook Jun
 
[C3]collie deview2012
[C3]collie deview2012[C3]collie deview2012
[C3]collie deview2012NAVER D2
 

Similar to Html5 canvas sprite animation (20)

Html5 canvas animation
Html5 canvas animationHtml5 canvas animation
Html5 canvas animation
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기 [122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview
 
Improve CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for AccessibilityImprove CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for Accessibility
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
프론트엔드 애니메이션의 정수
프론트엔드 애니메이션의 정수프론트엔드 애니메이션의 정수
프론트엔드 애니메이션의 정수
 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphics
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7
 
스키닝 애니메이션
스키닝 애니메이션스키닝 애니메이션
스키닝 애니메이션
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법
 
Pro android performance optimization 20171213
Pro android performance optimization 20171213Pro android performance optimization 20171213
Pro android performance optimization 20171213
 
Pp3 devweb
Pp3 devwebPp3 devweb
Pp3 devweb
 
Web_05_ jQuery
Web_05_ jQueryWeb_05_ jQuery
Web_05_ jQuery
 
[C3]collie deview2012
[C3]collie deview2012[C3]collie deview2012
[C3]collie deview2012
 

More from SangHun Lee

PWA 파헤치기
PWA 파헤치기PWA 파헤치기
PWA 파헤치기SangHun Lee
 
Angular CodeLab 두번째
Angular CodeLab 두번째Angular CodeLab 두번째
Angular CodeLab 두번째SangHun Lee
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째SangHun Lee
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular ToolsSangHun Lee
 
Chrome 69 updates
Chrome 69 updatesChrome 69 updates
Chrome 69 updatesSangHun Lee
 
Angular Component Interaction
Angular Component InteractionAngular Component Interaction
Angular Component InteractionSangHun Lee
 
Chrome 68 updates
Chrome 68 updatesChrome 68 updates
Chrome 68 updatesSangHun Lee
 
Reactive Programming with Rxjs
Reactive Programming with RxjsReactive Programming with Rxjs
Reactive Programming with RxjsSangHun Lee
 
Angular Features and New Things
Angular Features and New ThingsAngular Features and New Things
Angular Features and New ThingsSangHun Lee
 
SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SangHun Lee
 
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기SangHun Lee
 
Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)SangHun Lee
 
Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)SangHun Lee
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작SangHun Lee
 
Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02SangHun Lee
 
Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)SangHun Lee
 

More from SangHun Lee (20)

PWA 파헤치기
PWA 파헤치기PWA 파헤치기
PWA 파헤치기
 
Angular Library
Angular LibraryAngular Library
Angular Library
 
Angular CodeLab 두번째
Angular CodeLab 두번째Angular CodeLab 두번째
Angular CodeLab 두번째
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular Tools
 
Chrome 69 updates
Chrome 69 updatesChrome 69 updates
Chrome 69 updates
 
Angular Component Interaction
Angular Component InteractionAngular Component Interaction
Angular Component Interaction
 
Chrome 68 updates
Chrome 68 updatesChrome 68 updates
Chrome 68 updates
 
Reactive Programming with Rxjs
Reactive Programming with RxjsReactive Programming with Rxjs
Reactive Programming with Rxjs
 
Angular Features and New Things
Angular Features and New ThingsAngular Features and New Things
Angular Features and New Things
 
SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼
 
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
 
Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)
 
Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작
 
Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02
 
Eclipse gef
Eclipse gefEclipse gef
Eclipse gef
 
Gef 정리
Gef 정리Gef 정리
Gef 정리
 
Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 

Html5 canvas sprite animation

  • 1. Sprite Animation Codin9 café third html5 canvas HTML5Canvas leesanghun
  • 2. Sprite animation이란? Canvas 기본 설정 이미지 가져오기 drawImage 알아보기 좀 더 smooth하게 ! QnA content Html5 canvas sprite animation Spilte animation 실행
  • 3. Sprite animation이란? Sprite sheet and Texture 스프라이트 시트와 텍스처 텍스처가 프레임마다 물리적으로 다른 비트맵 파일이면 프레임을 진행할 때마다 텍스처 전환이 발생한다. 텍스처 전환 처리에는 당연히 시간이 걸린다. 또한 텍스처의 GPU에 업로드가 필요할 때 추가 오버헤드가 증가한다. 일반적으로 이 문제를 해결하기 위해 각 프레임의 텍스처를 하나의 파일에 정의한다. 이것을 스프라이트 시트라고한다. 스프라이트 화면 표시에서 이용되는 도형의 무늬를 등록하고, 그 무늬에 다른 그림을 겹쳐서 합성시킬 수 있다. 고속 표시가 가능하면 연속되는 그림을 매끄럽게 움직일 수 있다. 무엇을 할 수 있을까?
  • 4. 4 4가지 걸어가는 형태의 각각의 텍스쳐들을 하나의 파일(Sprite.png)로 정의된 것을 이용하여 오른쪽 키(->)를 누르면 옆으로 걸어가는 간단한 애니메이션
  • 5. Canvas 기본 설정 Canvas 사용을 위한 기본 설정01 Canvas 기본 설정 <!doctype html> <html> <head> <meta charset = "utf-8"> <style> body{ margin: 0px; overflow: hidden; } </style> <script> window.addEventListener("load",draw,false); function draw(){ var canvas = document.getElementById('canvas'); var content = canvas.getContext("2d"); } </script> </head> <body> <canvas id = "canvas" width = "800" height ="600"></canvas> </body> </html> 이미지 가져오기 Keydown 실행 Sprite animation
  • 6. 이미지 가져 오기 객체 선언과 이미지 불러오기02 Canvas 기본 설정 <!doctype html> <html> <head> <meta charset = "utf-8"> <style> body{ margin: 0px; overflow: hidden; } </style> <script> window.addEventListener("load",draw); var Image = new Image() Image.src = "Sprite.png"; function draw(){ var canvas = document.getElementById('canvas'); var content = canvas.getContext("2d"); //drawImage를 통해서 그린다. content.drawImage(Image,0,0); } </script> </head> <body> <canvas id = "canvas" width = "800" height ="600"> </canvas> </body> </html> 이미지 가져오기 Keydown 실행 Sprite animation
  • 7. Keydown 실행 Keydown을 통해 실행하기03 Canvas 기본 설정 <!doctype html> <html> <head> <meta charset = "utf-8"> <style> body{margin: 0px;overflow: hidden;} </style> <script> window.addEventListener("load",draw); window.addEventListener("keydown",move); var Image = new Image() Image.src = "Sprite.png"; var Image_x = 0; function draw(){ var canvas = document.getElementById('canvas'); var content = canvas.getContext("2d"); content.drawImage(background,0,0); content.drawImage(Image, Image_x,0) function move(e){ switch(e.keyCode){ case 39 : Image_x +=30; }break; }draw(); } </script> </head> <body> <canvas id = "canvas" width = "800" height ="600"> </canvas> </body> </html> 이미지 가져오기 Keydown 실행 Sprite animation Keydown – e(인자값 전달) – e.keyCode(e의 키코드 식별) – 맞는지 확인
  • 11. Sprite animation Sprite animation04 Canvas 기본 설정 <!doctype html> <html> <head> <meta charset = "utf-8"> <style> body{margin: 0px;overflow: hidden;} </style> <script> window.addEventListener("load",draw); window.addEventListener("keydown",move); var background = new Image(); background.src = "codingcafe.png"; var Image = new Image() Image.src = "Sprite.png"; var Image_x = 0;var Image_y = 0; var Image_X = 0;var Image_Y = 0; function draw(){ var canvas = document.getElementById('canvas'); var content = canvas.getContext("2d"); //drawImage를 통해서 그린다. content.drawImage(background,0,0); content.drawImage(Image, Image_X, Image_Y, 100, 200, Image_x, Image_y , 100, 200); } function move(e){ switch(e.keyCode){ case 39 : Image_x +=30; Image_X +=78; if(Image_X == (78*3)) Image_X = 0; if(Image_x>800) Image_x = 0; break; } draw();} 이미지 가져오기 Keydown 실행 Sprite animation
  • 12. 좀 더 smooth하게 ! canvas에서이미지뿌리기와타이머를이용한스프라이트출력
  • 13. Made by lee sang hun in Coding café 감사합니다 HTML5 Canvas Sprite animation