액션스크립트로 구현할 수 있는 모든 애니메이션의 비밀을 전해주는 책이다.

액션스크립트 3.0으로 동적 표현을 통해 사용자 경험을 다채롭게 하기 위한 기본적인 기술을 아주 쉽고 흥미롭게 다룬다. 어렵게만 생각해왔던 수학, 물리, 3D 등의 개념들을 하나씩 따라 하다 보면, 그저 바라보며 동경만 해왔던 멋진 효과들을 스스로 만들어 가는 자신을 새삼 깨닫게 될 것이다.

책 속에 있는 수많은 애니메이션 구현 공식들은 지금까지 소개되었던 그 어느 책에서도 볼 수 없는 액션스크립트 애니메이션 구현의 핵심 공식들로, 무엇보다 이해하기 쉽게 설명하고 있다. 삼각함수와 속도, 가속도, 마찰, 인력, 바운드, 모션공식 등 일반적인 내용부터 기구학과 3D 등 비교적 고급주제까지 다루고 있어, 플래시뿐만 아니라 GUI를 다루는 개발자라면 누구나 접근해야 하고 풀어가야 하는 수학과 물리학 등의 기초적인 틀을 제공해주므로 많은 도움이 될 것이다.

플래시는 웹 기반의 애니메이션, 게임, 어플리케이션 등을 만드는 데 오랫동안 유저에게 익숙한 도구로 사용되어 왔다. 그래서 플래시는 다이내믹한 웹 콘텐츠를 제작하는 데 가장 널리 사용되는 프로그램 중 하나가 되었다. 그리고 새로운 버전의 플래시와 내장된 스크립트 언어인 액션스크립트는, 좀 더 강력하고 복잡해졌다. 액션스크립트 3.0은 플래시 애니메이션에서 사용하던 키프레임과 트윈을 넘어서는 것을 꿈꿔오던 것들이 프로그래밍 언어로써 성숙해짐으로써 훨씬 강한 파워와 스피드가 생겼다.

이 책은 여러분이 액션스크립트 3.0의 강력한 파워를 익히는 데 필요한 것을 담고 있다. 먼저 스크립트 애니메니션의 기본과 액션스크립트 3.0 프로젝트를 설정하는 것을 다룬다. 객체지향 프로그래밍의 안내를 새로운 문법, 이벤트, 액션스크립트 3.0의 렌더링 테크닉 등을 통해 다루고, 액션스크립트 2.0에서 자연스럽게 3.0으로 올라와 언어의 사용에 자신감을 준다.

이 책은 가속도, 속도, 이징(easing), 스프링 충돌 검사, 운동량 보존, 3D, 전-역기구학 등과 같은 물리 개념으로 들어가기 전에 필요한 모든 삼각함수를 안내해 줄 것이다. 짧은 시간 안에 여러분은 스크립트 애니메이션의 개념을 이해하고, 온갖 종류의 흥미로운 애니메이션과 게임을 제작하는 능력을 동시에 갖추게 될 것이다.

이 책에서 다루는 내용
  • ActionScript 3.0의 전반적인 내용(수학과 삼각함수 포함)과 코드로 애니메이션하는 데 필요한 플래시 렌더링 테크닉
  • 속도, 기속도, 마찰, 이징, 바운드 등의 기본적인 모션의 원리
  • 키보드와 마우스를 이용한 유저 인터랙션
  • 스프링, 좌표회전, 운동량 보전, 순-역기구학 등의 고급 모션 테크닉
  • 단순한 퍼스펙티브의 3D를 플래시로 구현하는 데 필요한 기본 3D 개념과, 뒷면 제거, 다이내믹 라이팅을 적용해 완전한 3D 물체를 완성

키스 피터스(Keith Peters)

키스 피터스는 1999년부터 플래시와 액션스크립트를 사용해 왔고, 현재 매사추세츠주의 캠브리지에 있는 Brightcove사에서 수석 소프트웨어 엔지니어를 담당하고 있다. 이 책은 플래시와 액션스크립트에 대해서 그가 저술한 11번째의 저서(공저 포함)에 해당한다. 그는 또 플래시나 액션스크립트를 주제로 많은 잡지에 기고하는 것 외에 전 세계의 컨퍼런스에서 강연을 하거나 다수의 플래시 사이트 제작으로 수상 경력도 있다. 그의 개인 사이트인 www.bit-101.com 은 액션스크립트로 제작한 수많은 실험작품을 플래시 커뮤니티에서 오픈소스로 공개하고 있다. 또한 일을 쉴 때는 컴퓨터에서 떨어져 대부분의 시간을 아내와 딸과 함께 보낸다.

윤도선

2001년부터 웹 프로젝트를 진행하면서 Flash ActionScript, PHP, JAVA 등을 사용해 왔고, 현재는 ㈜감성테크놀러지에서 플렉스 솔루션 개발 팀장을 담당하고 있다. 플래시 플랫폼과 서비스, 모바일에 관심이 많고 2000년 전 IT로 방향을 정하기까지 인생을 걸었던 드럼/퍼커션 연주에 아직 많은 아쉬움을 가지고 있다. 향후 Flash Platform에서 그를 찾지 못한다면 음악생활을 하고 있을지도 모른다. 개인 블로그인 www.drumcap.com 를 운영하고 있으며 여기에 각종 팁과 드럼/퍼커션 관련 글을 올리고 있다. 요즘에는 트위터를 사용하는 것에 푹 빠져있는데 www.twitter.com/drummeryun 이 역자의 주소이며 플래시 관련 트윗을 같이 주고받을 친구를 찾고 있다.

 

옮긴이 글

제가 액션스크립트의 매력에 푹 빠지게 된 계기는 액션스크립트는 웹에서 동적이고, 화려하며, 사용자 인터랙션을 할 수 있게 해주기 때문입니다. 이러한 화려한 효과나 애니메이션은 처음에는 배우기 쉬웠지만 좀 더 고급 애니매이션 제작 기술을 알고 싶어졌을 때 무엇부터 어떻게 해야 하는지 너무 막막했고 전혀 감이 안 왔습니다. 그러던 중 아마존(Amazon.com)에서 사용자 평이 좋은 애니메이션 관련 책을 찾아보았는데 바로 ActionScript 3.0 Animation Making Things Move! (이 책의 원저 제목) 책이 눈에 들어왔고 반신반의하며 덜컥 구매했었습니다.

책이 배송되어 도착한 날 저는 깜짝 놀랐습니다. 여기에 바로 제가 원했던 그런 내용들이 상세히 기록되어 있었습니다. 마치 무협지나 무협영화에서 주인공이 힘들게 찾는 무림비급을 찾은 기분이었으며, 저는 단숨에 책을 읽어 2주만에 독파하게 되었습니다. 이 책은 그만큼 쉽게 구성이 되어 있었으며, 저자가 옆에서 일대일 과외를 시켜주는 방식으로 내용을 진행합니다. 내용이 수학을 다루긴 하지만 그다지 어렵진 않으며 기초부터 설명하고 있고, 하나하나 문제를 해결해 가면서 더 나은 해결책을 독자인 우리에게 물어보기도 하면서 읽어나가다 보면, 어느덧 마지막 장을 읽고 있을 것입니다.

이 책을 읽으면 플래시/플렉스 애플리케이션을 제작하는 분들이라면 누구라도 새로운 아이디어가 샘솟을 것입니다. 그리고 이전에는 단순히 “멋있다” 라고만 생각했던 다른 사람이 만들어 놓은 플래시 작품들이 이제는 어떻게 만들어져 있을지에 대한 원리도 이해가 되기 시작할 것이며, 이러한 것을 어떻게 응용을 하면 좋을지에 대한 아이디어도 생길 것입니다.

플래시 플랫폼의 태생은 애니메이션입니다. 다양한 사용자 경험은 매우 효과적인 애니메이션을 얼마나, 어떻게, 적재 적소에 써 주느냐에 달려있기 때문에 모쪼록 이 책으로 다양한 아이디어를 얻으시는데 도움이 되기를 바라겠습니다. 더 나아가 이 책을 통하여 우리나라에서도 예술적인 저작물이 많이 탄생되길 기대해 봅니다.

  • 제1부 액션스크립트애니메이션 기초
    •  
    • 01장 애니메이션 기본 사상
      • 애니메이션이란 무엇일까요?
      • 프레임과 모션
        • 기록으로서의 프레임
        • 프로그래밍된 프레임
      • 동적인 애니메이션과 정적인 애니메이션
      • 요약
      •  
    • **02장 액션스크립트 3.0 애니메이션 기본 **
      • 기본적인 애니메이션
      • 액션스크립트 버전에 따른 정리
      • 클래스와 OOP
        • 클래스
        • 패키지
        • 임포트
        • 생성자
        • 상속
        • MovieClip/Sprite 하위클래스
        • 도큐먼트 클래스 작성
      • 액션스크립트 3.0 애플리케이션의 설정
        • Flash CS3 IDE 사용
        • Flex Builder 2 사용
        • 커멘드 라인 컴파일러 사용
        • Trace에 대한 안내
        • 무비의 리사이징(크기조절)
      • 코드를 사용한 애니메이션
        • 루프
        • 프레임 루프
        • 클립 이벤트
        • 이벤트와 이벤트 핸들러
        • 리스너와 핸들러
        • 애니메이션의 이벤트
      • 디스플레이 오브젝트
        • 디스플레이 오브젝트의 하위클래스화
      • 유저 인터랙션
        • 마우스 이벤트
        • 마우스 위치
        • 키보드 이벤트
        • 키 코드
      • 요약
      •  
    • 03장 애니메이션을 위한 삼각함수
      • 삼각함수란 무엇일까요?
      • 각도
        • 라디안과 도
        • Flash의 좌표계
        • 3개의 변
      • 삼각함수
        • 사인
        • 코사인
        • 탄젠트
        • 아크사인과 아크코사인
        • 아크탄젠트
      • 회전
      • 곡선
        • 매끄럽게 움직이는 상하모션
        • 직선 상하 모션
        • 박동하는 모션
        • 2개의 각도를 가진 곡선
        • 드로잉 API를 사용한 곡선
      • 원과 타원
        • 원운동
        • 타원 운동
      • 피타고라스의 정리
      • 두 점 사이의 거리
      • 중요한 공식
      • 요약
      •  
    • **04장 렌더링 기술 **
      • Flash의 컬러
        • 16진수 컬러 값의 사용
        • 투명도와 32비트 컬러
        • 새로운 number 타입: int와 uint
        • 컬러의 결합
        • 컬러 성분의 추출
      • 드로잉 API
        • 그래픽 오브젝트
        • clear를 사용한 드로잉의 삭제
        • IineStyle에 의한 라인의 외형 설정
        • IineTo와 moveTo에 의한 라인의 드로잉
        • curveTo 메서드에 의한 곡선의 드로잉
        • beginFili와 endFill에 의한 도형 제작
        • BeginGradientFill에 의한 그라데이션 채우기의 작성
      • 컬러의 변환
        • ColorTransform 클래스에 의한 컬러의 변경
      • 필터
        • 필터 생성
        • 필터의 애니메이션
      • 비트맵
      • 에셋의 로딩과 임베딩
        • 에셋 로드
        • 에셋 임베딩
      • 이 장의 중요한 공식
      • 요약
      •  
  • 제2부 기본 모션 -  
    • **05장 속도와 가속도 **
      • 속도
        • 벡터와 속도
        • 1축에서의 속도
        • 2축에서의 속도
        • 각 속도
        • 속도의 확장
      • 가속도
        • 1축에서의 가속도
        • 2축에서의 가속도
        • 가속도로서의 중력
        • 모퉁이 가속도
        • 우주선
      • 중요한 공식
      • 요약
      •  
    • **06장 경계와 마찰 **
      • 경계가 있는 환경
        • 경계의 설정
        • 오브젝트의 삭제
        • 오브젝트의 재생성
        • 스크린 래핑(화면 감싸기)
        • 바운드
      • 마찰
        • 마찰, 올바른 방법
        • 마찰, 간단한 방법
        • 마찰의 적용
      • 중요한 공식
      • 요약
      •  
    • 07장 유저 인터랙션: 오브젝트의 이동
      • 스프라이트를 프레스, 릴리즈하기
      • 스프라이트의 드래그
        • mouseMove를 사용한 드래그
        • startDrag와 stopDrag를 사용한 드래그
        • 드래그와 모션 코드의 조합
      • 던지기(스로잉)
      • 요약
      •  
  • 제3부 고급 모션 -  
    • 08장 이징과 스프링
      • 비례모션
      • 이징
        • 간단한 이징
        • 이징을 정지하는 타이밍
        • 이동하는 목표
        • 이징은 모션만을 위한 것은 아니다
        • 고급 이징
      • 스프링
        • 1축에서의 스프링
        • 2축에서의 스프링
        • 움직이는 목표의 스프링
        • 스프링은 도대체 어디에 있지?
        • 스프링 체인
        • 복수 목표지점의 스프링
        • 목표의 오프셋
        • 복수의 오브젝트로 스프링 할당
      • 중요한 공식
      • 요약
      •  
    • 09장 충돌 판정
      • 충돌 판정의 방법
      • hitTestObject와 hitTestPoint
        • 2개 스프라이트의 히트 테스트
        • 스프라이트와 포인트의 히트 테스트
        • shapeFlag를 사용한 히트 테스트
        • hitTest 요약
      • 거리 기반 충돌 판정
        • 간단한 거리 기반 충돌 판정
        • 충돌 기반 스프링 운동
      • 여러 오브젝트의 충돌 판정을 하는 방법
        • 여러 오브젝트의 기본 충돌 판정
        • 여러 오브젝트의 스프링 운동
      • 다른 충돌 판정 방법
      • 중요한 공식
      • 요약
      •  
    • 10장 좌표 회전과 각이 있는 바운드
      • 단순한 좌표 회전
      • 고급 좌표 회전
        • 단일 오브젝트의 회전
        • 여러 오브젝트의 회전
      • 각이 있는 바운드
        • 회전의 실행
        • 코드의 최적화
        • 다이내믹하게 만들기
        • ‘구석에서 떨어지는’ 문제의 수정
        • ‘라인의 아래’ 문제 수정
        • 여러 각도의 바운드
      • 중요한 공식
      • 요약
      •  
    • 11장 당구공 물리
      • 질량
      • 운동량
      • 운동량 보존
        • 1축에서의 운동량 보존
        • 2축에서의 운동량 보존
      • 중요한 공식
      • 요약
      •  
    • 12장 파티클과 인력
      • 파티클
      • 인력
        • 만유인력
        • 충돌 판정과 반응
        • 궤도 선회(Orbiting)
      • 스프링
        • 인력과 스프링
        • 탄력 있는 노드 가든
        • 노드의 접속
        • 질량을 가진 노드
      • 중요한 공식
      • 요약
      •  
    • 13장 순기구학: 걷게 만들기
      • 순기구학과 역기구학이란?
      • 순기구학 프로그래밍의 시작
        • 하나의 세그먼트를 움직여 봅시다
        • 2개의 세그먼트를 움직여 봅시다
      • 처리의 자동화
        • 자연스럽게 보이는 보행 사이클의 작성
      • 좀 더 다이내믹하게
      • 실제로 걷게 하기
        • 공간 할당
        • 중력의 추가
        • 충돌 처리
        • 반응의 처리
        • 다시 스크린 래핑
      • 요약
      •  
    • 14장 역기구학: 드래그와 도달
      • 단일 세그먼트의 도달과 드래그
        • 단일 세그먼트를 사용한 도달
        • 단일 세그먼트를 사용한 드래그
      • 복수의 세그먼트 드래그
        • 2개의 세그먼트 드래그
        • 3개 이상의 세그먼트 드래그
      • 복수의 세그먼트 도달
        • 마우스로 도달
        • 오브젝트의 도달
        • 상호작용의 추가
      • 표준 역기구학 방법의 사용
        • 코사인 정리 소개
        • 코사인 정리 액션스크립트
      • 중요한 공식
      • 요약
      •  
  • 제4부 3D 애니메이션
    •  
    • 15장 3D 기본
      • 3차원과 퍼스펙티브
        • z축
        • 퍼스펙티브(관점)
      • 속도와 가속도
      • 바운드
        • 단일 오브젝트의 바운드
        • 복수 오브젝트의 바운드
        • Z소팅
        • 인력
      • 래핑
      • 이징과 스프링
        • 이징
        • 스프링
      • 좌표 회전
      • 충돌 판정
      • 중요한 공식
      • 요약
      •  
    • 16장 3D 라인과 채우기
      • 점과 라인의 제작
      • 3D 도형의 제작
      • 3D의 채우기의 생성
        • 삼각형의 사용
      • 3D 입체 모델링
        • 회전하는 큐브 모델링
        • 다른 도형 모델링
      • 3D 입체의 이동
      • 요약
      •  
    • 17장 뒷면컬링과 3D 조명
      • 뒷면컬링
      • 심도소팅
      • 3D 조명(라이팅)
      • 요약
      •  
      • 제5부 고급 기법
      •  
    • 18장 행렬 수학
      • 행렬기초
      • 행렬 연산
        • 행렬 덧셈
        • 행렬 곱셈
      • 행렬 클래스
      • 요약
      •  
    • 19장 각종 팁과 비법
      • 브라운 운동
      • 랜덤 분포
        • 정사각형 분포
        • 원형 분포
        • 편향 분포
      • 타이머 기반의 애니메이션과 타임 기반의 애니메이션
        • 타이머 기반의 애니메이션
        • 타임 기반의 애니메이션
      • 같은 질량을 갖는 오브젝트의 충돌
      • 사운드 통합
      • 유용한 공식
  • 63쪽 그림 3-6에서

    양수 --->음수, 음수 --->양수

  • 65쪽 밑에서 세 번째 줄

    시계 반대 방향 ---> 시계 방향

  • 149쪽 굵게 표시한 코드 부분은 아래 내용으로 수정

    var radians:Number = angle * Math.PI / 180;
    var vx:Number = Math.cos(radians) * speed;
    var vy:Number = Math.sin(radians) * speed;

  • 348쪽 두 번째 공식에서

    G = (6.6742 ± 0.0010) * 10-11 * m3 * kg-1 * s-2 ---> G = (6.6742 ± 0.0010) * 10-¹¹ * m³ * kg-¹ * s-²

예제코드 관련 GitHub 페이지

도서 소개자료

관련 글