이미 소장하고 있다면 판매해 보세요.
|
01장 캔버스 구성
1.1 [canvas] 요소 _1.1.1 [canvas] 요소의 크기와 드로잉 표면의 크기 _1.1.2 캔버스 API 1.2 캔버스 콘텍스트 _1.2.1 2d 콘텍스트 _1.2.2 캔버스 상태 저장 및 복원 1.3 책에서 사용하는 표준 형태 1.4 개발 환경 개요 _1.4.1 명세서 _1.4.2 브라우저 _1.4.3 콘솔 및 디버거 _1.4.4 성능 1.5 기본적인 드로잉 작업 1.6 이벤트 처리 _1.6.1 마우스 이벤트 _1.6.2 키보드 이벤트 _1.6.3 터치 이벤트 1.7 드로잉 표면의 저장 및 복원 1.8 캔버스에서 HTML 요소 사용하기 _1.8.1 보이지 않는 HTML 요소 1.9 캔버스 출력하기 1.1 오프스크린 캔버스 1.11 간단한 수학 입문 _1.11.1 대수 방정식 풀이 _1.11.2 삼각법 _1.11.3 벡터 _1.11.4 측정 단위에서 방정식 산출하기 1.12 결론 02장 드로잉 2.1 좌표계 2.2 드로잉 모델 2.3 직사각형 그리기 2.4 색상과 투명도 2.5 그라디언트와 패턴 _2.5.1 그라디언트 _2.5.2 패턴 2.6 그림자 효과 _2.6.1 안쪽 그림자 2.7 패스, 윤곽 그리기, 내부 칠하기 _2.7.1 패스와 서브패스 _2.7.2 컷아웃(cutout) 2.8 선 _2.8.1 선의 경계 및 픽셀 경계 _2.8.2 격자무늬 그리기 _2.8.3 축 그리기 _2.8.4 러버 밴드를 이용해 선 그리기 _2.8.5 점선 그리기 _2.8.6 CanvasRenderingContext2D를 확장해 점선 그리기 _2.8.7 lineCap과 lineJoin 2.9 호와 원 _2.9.1 arc() 메서드 _2.9.2 러버 밴드 원 _2.9.3 acrTo() 메서드 _2.9.4 다이얼 및 게이지 2.10 베지어 곡선 _2.10.1 이차 곡선 _2.10.2 다항 곡선 2.11 다각형 _2.11.1 다각형 오브젝트 2.12 고급 패스 조작 _2.12.1 다각형 드래그하기 _2.12.2 베지어 곡선 편집하기 _2.12.3 패스를 뷰로 스크롤하기 2.13 변환 _2.13.1 이동, 회전, 확대/축소 _2.13.2 사용자 정의 변환 2.14 합성 _2.14.1 합성 논란 2.15 클리핑 영역 _2.15.1 클리핑 영역으로 지우기 _2.15.2 클리핑 영역을 이용한 망원경 2.16 결론 03장 텍스트 3.1 텍스트의 윤곽 그리기 및 내부 칠하기 3.2 font 속성 설정하기 3.3 텍스트 배치하기 _3.3.1 가로 및 세로로 배치하기 _3.3.2 중앙에 텍스트 배치하기 _3.3.3 텍스트 측정하기 _3.3.4 축 라벨링 _3.3.5 다이얼 라벨링 _3.3.6 호 둘레에 텍스트 그리기 3.4 텍스트 컨트롤 구현하기 _3.4.1 텍스트 커서 _3.4.2 캔버스에서 텍스트 라인 편집하기 _3.4.3 단락 3.5 결론 04장 이미지 및 비디오 4.1 이미지 그리기 _4.1.1 캔버스에 이미지 그리기 _4.1.2 drawImage() 메서드 4.2 이미지 확대하기 _4.2.1 캔버스 경계 밖에 이미지 그리기 4.3 캔버스에 캔버스 그리기 4.4 오프스크린 캔버스 4.5 이미지 조작하기 _4.5.1. 이미지 데이터에 접근하기 _4.5.2 이미지 데이터 변경하기 4.6 이미지 클리핑 4.7 이미지 움직이기 _4.7.1 오프스크린 캔버스를 이용한 애니메이션 4.8 보안 4.9 성능 _4.9.1 drawImage(HTMLImage) vs. drawImage(HTMLCanvas) vs. putImageData() _4.9.2 캔버스에 캔버스 그리기 vs. 캔버스에 이미지 그리기; 확대 vs. 원본 _4.9.3 반복문을 이용한 이미지 데이터 반복 4.1 돋보기 _4.10.1 오프스크린 캔버스 사용하기 _4.10.2 파일 시스템에서 이동한 이미지에 접근하기 4.11 비디오 프로세싱 _4.11.1 비디오 포맷 _4.11.2 캔버스에서 비디오 재생하기 _4.11.3 비디오 프로세싱 4.12 결론 05장 애니메이션 5.1 애니메이션 루프 _5.1.1 requestAnimationFrame() 메서드로 브라우저에서 프레임률을 설정하게 하기 _5.1.2 인터넷 익스플로러 _5.1.3 간편한 애니메이션 루프 5.2 프레임률 계산하기 5.3 대체 프레임률을 이용해 작업 예약하기 5.4 배경 복원하기 _5.4.1 클리핑 _5.4.2 블리팅 5.5 이중 버퍼링 5.6 시간 기반 모션 5.7 배경 스크롤하기 5.8 시차(視差) 5.9 사용자 동작 5.10 시한 애니메이션 _5.10.1 스톱워치 _5.10.2 애니메이션 타이머 5.11 애니메이션 모범 사례 5.12 결론 06장 스프라이트 6.1 스프라이트 개요 6.2 페인터 _6.2.1 스트로크 페인터와 필 페인터 _6.2.2 이미지 페인터 _6.2.3 스프라이트 시트 페인터 6.3 스프라이트 동작 _6.3.1 동작 조합하기 _6.3.2 시한 동작 6.4 스프라이트 애니메이터 6.5 스프라이트 기반 애니메이션 루프 6.6 결론 07장 물리학 7.1 중력 _7.1.1 낙하 _7.1.2 탄도 궤적 _7.1.3 진자 7.2 시간 왜곡 7.3 시간-왜곡 함수 7.4 운동 왜곡 _7.4.1 등속도 운동 _7.4.2 Ease In: 지속적인 가속 _7.4.3 Ease Out: 지속적인 감속 _7.4.4 Ease In, Ease Out _7.4.5 탄성과 바운싱 7.5 애니메이션 왜곡 7.6 결론 08장 충돌 감지 8.1 바운싱 영역 _8.1.1 직사각형의 경계 영역 _8.1.2 원형 경계 영역 8.2 바운싱 8.3 레이 캐스팅 _8.3.1 미조정 8.4 SAT 및 MTV _8.4.1 SAT를 이용한 충돌 감지 _8.4.2 MTV를 이용해 충돌 처리하기 8.5 결론 09장 게임 개발 9.1 게임 엔진 _9.1.1 게임 루프 _9.1.2 이미지 로딩 _9.1.3 멀티 트랙 사운드 _9.1.4 키보드 이벤트 _9.1.5 하이 스코어 _9.1.6 게임 엔진 코드 9.2 Ungame _9.2.1 ungame의 HTML _9.2.2 ungame의 게임 루프 _9.2.3 ungame 로딩 _9.2.4 일시 정지 _9.2.5 키 리스너 _9.2.6 게임 종료 및 하이 스코어 9.3 핀볼게임 _9.3.1 게임 루프 _9.3.2 공 _9.3.3 중력과 마찰 _9.3.4 플리퍼의 움직임 _9.3.5 키보드 이벤트 처리하기 _9.3.6 충돌 감지 9.4 결론 10장 사용자 정의 컨트롤 10.1 모서리가 둥근 직사각형 10.2 프로그레스 바 10.3 슬라이더 10.4 이미지 패너 10.5 결론 11장 모바일 11.1 모바일 뷰 포트 _11.1.1 viewport [meta] 태그 11.2 미디어 쿼리 _11.2.1 미디어 쿼리 및 CSS _11.2.2 자바스크립트를 사용해 미디어 변경 처리하기 11.3 터치 이벤트 _11.3.1 터치 이벤트 오브젝트 _11.3.2 터치 리스트 _11.3.3 터치 오브젝트 _11.3.4 터치 이벤트 및 마우스 이벤트 지원 _11.3.5 핀치 및 줌 11.4 iOS5 _11.4.1 애플리케이션 아이콘 및 시작 이미지 _11.4.2 iOS5 애플리케이션 아이콘과 시작 이미지를 위한 미디어 쿼리 _11.4.3 브라우저 크롬을 사용하지 않는 전체 화면 _11.4.4 애플리케이션 스테이터스 바 11.5 가상 키보드 _11.5.1 캔버스 기반 키보드 구현 11.6 결론 |
김민섭의 다른 상품
|
이 책은 크게 두 부분으로 구분된다. 처음 네 개의 장으로 책의 절반을 차지하고 있는 책의 전반부에서는 도형 및 텍스트를 캔버스에 그리는 방법과 이미지를 조작하고 그리는 방법을 소개하는 캔버스 API를 다룬다. 그리고 후반부인 나머지 일곱 개의 장에서는 API를 사용해 애니메이션과 움직이는 스프라이트를 구현하고 시뮬레이션을 생성, 충돌 감지, 비디오 게임을 개발하는 방법을 소개한다. 참고로, 이 책의 마지막 장인 11장에서는 프로그레스 바, 슬라이더, 이미지 패너 등과 같은 사용자 정의 컨트롤을 구현하는 방법과 캔버스 기반 모바일 애플리케이션을 생성하는 방법도 소개한다.
1장 "캔버스 구성(Essentials)"에서는 [canvas] 요소를 소개하고 웹 애플리케이션에서 [canvas] 요소를 사용하는 방법과 브라우저, 콘솔, 디버거, 프로파일러, 타임라인 등을 다루는 HTML5 개발에 대해 간단히 소개한다. 또한, 캔버스에 그리기, 캔버스 파라미터 및 드로잉 표면을 저장하고 복원하기, 캔버스 출력하기, 오프스크린 캔버스 개론 등과 같은 캔버스의 필수 구성 요소를 구현하는 방법도 소개한다. 1장의 마지막 부분에서는 측정 단위로부터 방정식을 유도하는 방법과 벡터 계산, 삼각법, 기본 대수학을 다룬 수학 입문서도 간략하게 소개한다. 2장 "드로잉"에서는 이 책에서 내용이 가장 많은 장으로 선, 호, 곡선, 원, 직사각형, 임의 다각형을 캔버스에 그리는 방법과 색상, 그라디언트, 패턴 등을 사용해 도형 내부를 칠하는 방법을 소개하며 캔버스 API를 사용한 드로잉을 심도 있게 다룬다. 또한, 2장에서는 도형을 그릴 수 있게 임시 러버 밴드를 그리는 방법, 캔버스 내부에서 도형을 드래그하는 방법, 사용자가 편집할 수 있도록 캔버스에 다각형을 기록하는 간단한 보유 모드(retained mode) 그래픽 서브시스템을 구현하는 방법, 클리핑 영역을 사용해 캔버스 배경을 건드리지 않고 도형을 지우는 방법 등과 같이 단순한 드로잉 기법의 범위를 넘어 캔버스 API를 사용한 드로잉을 구현하는 방법을 소개한다. 3장 "텍스트"에서는 캔버스에서 텍스트를 그리고 조작하는 방법을 소개한다. 따라서 텍스트 내부를 칠하고 윤곽을 그리는 방법과 폰트 속성을 설정하고 캔버스에 텍스트를 위치시키는 방법 등을 살펴 본다. 또한, 3장에서는 텍스트 커서와 편집할 수 있는 단락과 함께 캔버스에서 텍스트 컨트롤을 구현하는 방법도 소개한다. 4장 "이미지 및 비디오"에서는 이미지, 이미지 조작, 비디오 프로세싱을 중점으로 소개하므로 캔버스에서 이미지를 확대하고 그리는 방법을 살펴보고 각 픽셀의 색상 구성 요소에 접근해 이미지를 조작하는 방법을 배운다. 또한, 클리핑 영역을 사용하는 방법과 이미지를 움직이는 방법을 살펴 보고 비디오 프로세싱을 소개한 4장의 마지막 절로 넘어가기 전에 보안과 성능에 대해 다룬다. 5장 "애니메이션"에서는 《스크립트 기반 애니메이션을 위한 타이밍 컨트롤(Timing control for script-based animations)》이란 제목의 W3C 명세서에서 정의한 requestAnimationFrame() 메서드를 사용해 애니메이션을 자연스럽게 재생할 수 있는 구현 방법을 소개 한다. 그리고 애니메이션의 프레임률을 계산하는 방법과 임시 프레임률로 애니메이션의 사용자 인터페이스를 업데이트하는 등과 같이 다른 활동에 대한 일정을 잡는 방법도 살펴본다. 또한, 5장에서는 애니메이션이 실행되는 동안 세 가지 다른 방법을 사용해 배경을 복원하는 방법을 소개하고 각 방법에 따라 성능에 미치는 영향을 살펴보겠다. 그뿐만 아니라 시간 기반 모션을 구현하는 방법, 애니메이션의 배경을 스크롤하는 방법, 시차를 사용해 3D처럼 보이게 하는 방법, 애니메이션이 실행되는 동안 사용자 제스처를 감지하고 처리하는 방법도 살펴볼 것이다. 마지막으로 애니메이션 모범 사례를 소개하기 전에 간단한 애니메이션 타이머를 구현하는 방법과 시한 애니메이션을 살펴볼 것이다. 6장 "스프라이트"에서는 자바스크립트에서 움직이는 오브젝트인 스프라이트를 구현하는 방법을 소개한다. 스프라이트는 시각적인 표현, 주로 이미지를 가지고 있으므로 캔버스에서 스프라이트를 이동시킬 수 있을 뿐만 아니라 일련의 이미지를 순환하여 스프라이트를 움직이게 만들 수도 있다. 따라서 스프라이트는 게임을 구성하는 기본 구성 요소라고 할 수 있다. 7장 "물리학"에서는 떨어지는 물체와 탄도 궤적을 모델링하는 방법부터 진자 운동에 이르기까지 애니메이션에서 물리학을 시뮬레이션하는 방법을 보여준다. 또한, 7장에서는 애니메이션에서 시간과 모션을 모두 왜곡해 단거리 주자가 달릴 때 발생하는 가속 효과(ease-in)나 자동차가 브레이크를 잡을 때 발생하는 감속 효과(ease-out) 등과 같이 실제 움직임을 시뮬레이션하는 방법도 살펴볼 것이다. 대부분 게임에서 충돌 감지를 핵심 기능으로 취급하므로 8장 "충돌 감지"에서는 스프라이트 사이에 발생하는 충돌을 감지하는 방법도 자세히 소개한다. 8장의 시작 부분에서는 구현하기 쉬울 뿐만 아니라 신뢰도가 높은 경계 박스와 원을 사용한 간단한 충돌 감지를 구현하는 방법을 소개한다. 하지만 간단한 충돌 감지를 사용하면 다양한 환경에 대처하는 능력이 부족해지므로 2D와 3D에서 임의 다각형 사이에 발생하는 충돌을 감지하는데 효과적인 방법 중 하나인 SAT(Sepatating Axis Theorem)를 소개하는데 8장의 대부분을 사용하고 있다. 그러나 SAT는 수학적 측면이 강하므로 더 쉬운 용어로 SAT를 소개할 수 있도록 많은 노력을 기울였다. 9장 "게임 개발"에서는 스프라이트를 그리는 작업과 하이 스코어를 관리하는 작업부터 시간 기반 모션과 멀티 트랙 사운드에 이르기까지 모든 기능을 제공할 뿐만 아니라 간단하면서 효과적인 게임 엔진에 대한 코드를 살펴보는 것으로 시작한다. 9장에서는 두 가지 게임을 소개한다. 첫 번째 게임은 간단한 Hello World 형태의 게임으로 게임 엔진을 사용하는 방법과 게임에 대한 시작 포인트를 알려준다. 또한, 첫 번째 게임으로 하이 스코어를 위한 사용자 인터페이스, 자산 관리, 헤드-업 디스플레이 등과 같이 대부분 게임에서 일반적으로 사용되는 기능을 구현하는 방법을 소개한다. 두 번째 게임은 강력한 핀볼게임으로 책 앞부분에서 소개한 내용을 사용해 구현하고 있으며 실제 게임에서처럼 복잡한 충돌 감지를 사용하고 있다. 많은 캔버스 기반 애플리케이션에서 사용자 정의 컨트롤을 필요로 하므로 10장 "사용자 정의 컨트롤"에서는 사용자 정의 컨트롤을 구현하는 방법을 소개한다. 10장에서는 일반적으로 사용자 정의 컨트롤을 구현하는 방법을 소개하고 모서리가 둥근 직사각형, 프로그레스 바, 슬라이더, 이미지 패너 등 네 가지 사용자 정의 컨트롤을 이용하는 방법을 보여준다. 마지막 장인 "모바일"에서는 캔버스 기반 모바일 애플리케이션을 구현하는데 중점을 두고 있으므로 애플리케이션을 모바일 장치에서 표시할 수 있도록 애플리케이션의 뷰 포트 크기를 제어하는 방법과 CSS3 미디어 쿼리를 사용해 화면 크기와 방향을 처리하는 방법을 살펴본다. 또한 캔버스 기반 애플리케이션을 데스크톱 전체 화면으로 실행하고 아이콘과 시작 스크린에 맞춤으로써 iOS5 전용 애플리케이션과 구별되지 않은 캔버스 기반 애플리케이션을 구현하는 방법도 소개한다. 그리고 11장의 마지막 부분에서는 텍스트 필드로 텍스트를 입력 받지 않는 iOS5 애플리케이션용 키보드를 구현하는 방법을 소개한다. ---「서문」 중에서 |
|
HTML5에서 제공하는 기능 가운데 하나인 캔버스에서는 워드 프로세스부터 비디오 게임에 이르기까지 모든 애플리케이션을 구현할 수 있는 강력한 2D 그래픽 API를 제공하고 있다. 베스트셀러 작가인 데이비드 기어리가 집필한 《HTML5 캔버스 완벽 가이드(Core HTML5 Canvas)》에서는 현실에서 사용될 수 있는 실제 코드를 이용하여 2D 그래픽 API에 대해 소개하는 동시에 다양한 운영 체제와 장치에서 실행할 수 있는 웹 애플리케이션을 구현할 때 알아야 할 모든 사항을 다루고 있다.
그뿐만 아니라 도형을 그리고 조작하는 작업, 도형과 텍스트를 그릴 수 있도록 드로잉 표면을 저장하고 복원하는 작업, 텍스트 컨트롤을 구현하는 작업 등과 같이 현실에서 캔버스 API를 사용하는 방법도 간결하고 알기 쉽게 소개하고 있다. 여러분은 이미지를 필터링할 때 웹 워커를 사용하여 애플리케이션에서 즉시 처리하는 방법, 자연스럽게 실행되도록 애니메이션을 구현하는 방법, 시차를 이용하여 배경을 3D처럼 스크롤 하는 방법, 게임 엔진 및 핀볼게임에 대한 코드와 충돌 감지, 물리학, 스프라이트 등을 이용하여 비디오 게임을 구현하는 방법에 대해서도 살펴볼 것이다. 그리고 이 책 마지막 부분에서는 iOS5를 포함한 모바일 장치에서 캔버스를 사용하는 방법과 HTML5 애플리케이션에서 사용할 수 있는 캔버스 기반 컨트롤을 구현하는 방법을 살펴볼 것이다. 이 책에서 다루는 내용 ○ [canvas] 요소 - 다른 HTML 요소와 함께 [canvas] 요소를 사용하는 방법 및 이벤트를 처리하고, 캔버스를 출력하고, 오프스크린 캔버스를 사용하는 방법. ○ 도형 - 라인, 호, 원, 곡선, 다각형을 편집하고, 지우고, 드래그하고, 그리는 방법 및 그림자, 그라디언트, 패턴을 사용하는 방법. ○ 텍스트 - font 속성을 설정하고, 배치하고, 그리는 방법 및 텍스트 컨트롤을 생성하는 방법. ○ 이미지 - 이미지를 움직이고, 처리하고, 클리핑하고, 확대하고, 그리는 방법. ○ 애니메이션 - 자연스럽게 재생될 뿐만 아니라 효율적이고 간편한 애니메이션을 생성하는 방법. ○ 스프라이드 - 페인터와 동작을 가지고 있는 움직이는 오브젝트를 구현하는 방법. ○ 물리학 - 물적 시스템(낙하하는 물체, 추, 발사체 등)을 구축하는 방법 및 비선형 움직임과 애니메이션을 위한 트위닝을 구현하는 방법. ○ 충돌 감지 - 충돌 감지와 관련된 고급 기술을 사용하는 방법. ○ 게임 개발 - 시간 기반 모션 및 하이 스코어 지원 등과 같이 게임 엔진에서 구현하고 있는 게임 개발에 대한 모든 기능을 구현하는 방법. ○ 사용자 컨트롤 - 사용자 정의 컨트롤을 구현하는 데 필요한 모든 인프라 및 프로그레스 바, 슬라이드, 이미지 패너 등을 구현하는 방법. ○ 모바일 애플리케이션 - 모바일 화면에 캔버스 애플리케이션을 맞추고, 미디어 쿼리를 사용하고, 터치 이벤트를 처리하고, iOS5의 애플리케이션 아이콘과 비슷한 아이콘을 생성하는 방법. |