diary       blog       guest

프로그래머가 아닌 분들을 위한 <액션스크립트 공부 길라잡이>

http://www.action-scripter.com/blog/trackback/887
플래시의 액션스크립트 기능이 발전하면서 디자이너들은 고민에 빠졌다. "스크립트 공부를 하긴 해야하겠는데.. 도대체 어떻게 해야하는 거야.."  최근에 한 독자분으로부터 받은 질문에 답변을 하고 나서, 비슷한 고민을 하고 계신 분들께 조금이나마 도움이 될 것 같아 Flash Note란에 글을 올려본다. 이 독자분께 질문을 받기 전에도 친구로부터, 아는 분들로부터 이런 질문을 많이 받아오고 좋은 방법이 없을까하고 생각해 오던 중이었다. 어떤 것을 배우든 그 학습에 있어 좋은 방법론이 있다면 많은 사람들이 그 어떤 것을 더 잘 할 수 있도록 큰 도움이 될 것이라 믿어 의심치 않는다. 특히 액션스크립팅을 위한 책을 집필한 필자로서는 책에서 언급하지 못한 이러한 방법론에 대해 논해보는 기회를 마련해보고 싶었던 것도 사실이다. 이 글에는 필자의 주관적인 생각이 많이 배어 있고 필자 또한 이 문제에 대한 더 좋은 해결책을 계속해서 찾고 있는 사람이므로 어떤 분들에게는 전혀 도움이 안되는 글일 수도 있다. 이 글은 나중에 더 좋은 생각이 나면 업데이트시키기로 하고.. 시작해보기로 하자.

----------------------------------------------------------------------------------------------
> 많은 답변하시느랴 수고많으십니다. 책잘보고있구여, 저번 답변 정말 잘 받았습니다.
>현재 액션스크립트의 핵심개념 부분을 보고있답니다. 공부하는데 있어서 도움을 한가지 받고자 이렇게 글을 남깁니다. 디자인 전공자로서 프로그래밍에대한 이해부족으로인한 언어접근이 참 힘들군여... 어디서부터 꼭 알아야 하는 부분인지, 다 외우고있어야 활용이 가능한것인지 궁금하군여. 피해가려는것보다, 중심이 되는것과 부수적인것은 구분하며 학습하는것이 능률적이라는 생각이 들어서 말이죠. 물론 책에 자세한 설명이 나와 있으나 그런 부분을 여쭈어보는 것이 아님을 잘 아실꺼라 생각됩니다.
> 디자이너가 프로그래밍적인 시선으로 접근할때의 고충을 저자께서도 잘아실것같아 이런 조금은 추상적인 질문을 드립니다. 물론 그 답변은 책을 보고 공부하는 저에게 많은 도움이 되리라 생각되구요.
>또한번의 수고를 부탁드리며...  

안녕하세요~

제가 받는 질문 중에 가장 어려운 질문이 아닌가 합니다. 그 고충 잘 이해합니다. 저도 아트 스쿨에서 아트/디자인을 백그라운드로 가진 학생들이 C++, 링고, 액션스크립트, 자바스크립트와 같은 스크립팅/프로그래밍을 배우면서 힘들어 하는 것을 많이 봅니다. 또한 제 책의 독자분들도 언젠가는 이런 질문을 하실 것이라고 예상했었습니다. 제가 고민을 많이 해봤는데, 나름대로 생각을 정리해가며 적어봅니다. 주관적인 견해가 많이 들어가 있으니, 혹시 이견이 있으시면 말씀해주세요... 그리고 이 글을 쓰는 목적은 스크립팅을 어려워하시는 분들(디자이너, non-programmer 등)에게 조금이나마 가이드가 될 수 있으면 하는 마음에서입니다.

- 액션스크립트를 배워야 하는 이유 --> 한번 스크립팅해두면 재사용하기가 쉽다. 엄청난 노가다를 통해 트위닝시켜야 할 것을 몇 줄의 스크립트로서 간단하고 파워풀하게 구현할 수 있다. 트위닝으로는 표현이 불가능한 움직임 표현과 Interaction을 가능케 한다. 스크립팅/프로그래밍이 디자인 도구라는 것은 이제 새로운 사실이 아니다.

- 우선 먼저.. 액션스크립트를 잘 쓰려면 플래시의 각종 기능들을 잘 이해하고 있어야 합니다. 예를 들어 심볼의 특성이라든가 텍스트 필드의 특성이라든가.. 또 하나의 무비 내에 타임라인이 여러 개 있고 각 타임라인은 독립적이다라든가.. 등등..  스크립팅이 아닌, 플래시의 기초가 취약하다고 생각되시는 분들은 플래시의 기초 기능부터 탄탄하게 다지십시오.

- 모든 액션의 사용법을 다 외우고 있을 필요는 없고, 어떤 액션이 어느 때 사용되는지만 알고 계시면 됩니다. 예를 들어 색상 조절을 액션을 이용해서 해야 한다면 setRGB 메쏘드를 사용하면 된다는 정도만 아시면 되고, 실제 액션을 사용하실 때는 책을 참고하시거나 플래시 5에서 Help>ActionScript Dictionary를 참고하시면 됩니다. 그러나 플래시의 기본 개념을 잘 이해하고 계셔야하죠. 가령 플래시가 여러 타임라인을 갖고 있다는 것을 아주 잘 이해해야하고, 또 모든 액션을 다 외우고 있을 필요는 없지만 기본적으로 어떻게 액션스크립트를 표현하는가하는 기본 표현 방식에 대해서 익숙해지셔야만 중급 이상으로 도약할 수 있어요.

- 액션스크립트를 공부할 때는 각 액션의 사용법을 하나씩 익혀보세요. 예를 들어 swapDepths 메쏘드를 이용해서 오브젝트 간의 높이(Depth)를 바꾸는 것을 해보겠다면  swapDepths를 이용한 가장 간단하고 단순한 예제를 만들어 보세요. 그리고 이런 식으로 다른 액션들도 간단한 예제들을 하나씩 만들어 두고 자신만의 예제 폴더에 저장해두세요. --- 간단하더라도 자신이 직접 제작한 스크립트가 이해하기도 쉽고(당연히), 나중에 복잡한 스크립팅 작업을 할 때 이런 예제들을 열어보고 참고할 수 있습니다. 제 책의 예제들은 하나씩의 액션을 이해하기 위한 예제들은 아니지요. '구현하고자 하는 예제 또는 효과'가 목표로 있고 그것을 구현해나가는 스크립팅 과정에서 나오게 되는 액션을 설명하는 방식입니다. (하지만 책의 모든 예제들에서 액션스크립트에서 가장 중요한 액션들이 모두 커버될 수 있도록 꼼꼼하게 계획을 다 세웠습니다.) 이렇게 하다보니 각각의 액션이 어떠한 큰 예제에서 실행되는 것은 이해가 되겠는데, 직접 그 액션을 사용하려고 하면 잘 안되는 경우가 있을 겁니다. 바로 이런 경우 때문에 어떤 새로운 액션을 철저히 이해하겠다 그러면 그 액션만 위주로 사용된 아주 간단한 예제를 만들어보시라는 거죠.

- 간단하게 시작해서 더 복잡한 것으로 키워나가세요. --- 보통 액션스크립팅 작업은 처음부터 복잡하게 바로 구상해서 시작하는 경우는 많지 않습니다. 항상 Simplicity를 생각하셔야 해요. 뭔가 액션스크립트를 활용한 예제를 제작하겠다 그러면 간단한 부분부터 시작해서 실행이 되도록 해보고, 실행이 잘 되면 거기에 덧붙여 나가는 식으로 작업을 이어 나가는 겁니다.

- 액션스크립트로 구현하고자 하는 것을 먼저 그림으로 그린 다음 스크립팅을 시작해보시고 논리의 흐름을 순서도(FlowChart)로 그려보세요. --- 대부분의 디자이너/아티스트들은 그들의 생각을 비쥬얼하게.. 시각적으로 상상을 합니다. 대부분의 프로그래머들은 데이터가 어떻게 논리적으로 처리되어야 할지에 대해 구상을 합니다. 어떻게 하면 디자이너/아티스트들이 프로그래머처럼 논리적인 구상을 할 수 있을까요? 프로그램이 컴퓨터에 의해 해석되고 실행될 때는 어떤 순서에 입각을 합니다. 어떤 스크립트를 들여다 보고 있으면 처음에 A가 실행되고 두번째로 B가 실행되고... 세번째로는 C가 잠시 반복되고... 이런 식으로 뭔가 순서가 있습니다. 스크립팅/프로그래밍을 할 때는 컴퓨터가 처리해야 할 일을 '아주 천천히' 기술하는 셈입니다. 논리적인 순서에만 맞게 스크립팅을 해놓으면 컴퓨터는 눈깜짝할 사이보다 더 빠르게 바로 실행해버리죠. 그래서 제가 권해드리고 싶은 것은 순서도를 그려보시라는 것인데, http://plaza.snu.ac.kr/~mal/JavaMATH/manual/algorithm.htm 웹페이지를 참고하시면 그 개념을 아실 겁니다. 꼭 이런 순서도의 방식이 아니더라도, 자기만의 발상 기법을 개발해서 스크립팅을 본격적으로 시작하기 전에 구현하고자 하는 것, 논리적으로 어떤 순서대로 엮어나갈 것인지에 대해 그림을 그려보세요.  아이디어를 시각화한 다음 논리적인 구상으로 연결을 시켜야 하는 겁니다.

- Y사의 모 플래시 책(제 책 아님)에 보니까 이런 좋은 얘기가 있더군요. "액션스크립트를 볼 때는 외국어를 해석할 때처럼 읽어보세요". 우리가 영어 문장을 볼 때는 머리 속에서 또는 입으로 소리내어 한글로 해석을 하죠. 그런 식으로 _root.apple._x=100; 라는 액션을 본다면 "메인 타임라인에 있는 apple 인스턴스의 X 위치를 100으로 설정한다"라고 읽는 겁니다. 저 역시 다른 사람이 스크립팅한 것을 분석할 때는 그런 식으로 읽으면서 생각하면서 논리의 흐름을 파악합니다.

- 웹 상에서 널려 있는 수많은 플래시 소스들을 연구해보세요. --- 기초적인 것부터 고급까지 많은 FLA 소스들이 있으니까 다운로드 받아서 연구해보세요. 처음부터 너무 어려운 것부터 손대면 엄두가 안나니까 쉬운 예제부터. 단, 자신의 플래시 무비를 제작할 때는 반드시 자신의 것으로 만드시고, 확실하게 이해하고, 약간 다른 형태로 응용을 해보세요. 스크립팅 작업은 경우에 따라 아주 백지 상태에서 시작하는 것이 아니라 기본적인 핵심 스크립트가 있는 상태에서 거기에 기능을 덧붙이는 방식으로 발전시키는 경우가 많습니다. 그러므로 스크립팅에 익숙해질 때까지는 자신의 레벨에 맞는 다른 사람의 FLA 소스를 확실하게 이해될 때까지 분석해보면서 또 스스로 스크립팅하는 연습을 병행해 나가야 합니다.

- 어떤 스크립트를 볼 때는 스크립트의 양(길이)에 겁먹지 마세요. --- 많은 프로그래머들은 새로운 것을 만들 때 한 줄 두 줄부터 스크립팅/프로그래밍을 시작하기 때문에 자신들이 구현하고자하는 것이 최종적으로 얼마나 길어질 것인가에 대해서 자신들조차 모릅니다. 가령 제 책에서는 Lesson 34에 있는 조각 그림 맞추기 퍼즐이 스크립트의 길이로 보면 가장 긴데, 저도 처음 이 스크립팅을 시작할 때 얼마나 길어질지 모르고 시작을 했죠. 근데 실제로 "하다보면" 그렇게 길어집니다. 하다보면 뭔가 기능적으로 보완을 위해서, 또는 오류 해결을 위해서, 또는 더 효율적인 방법을 위해서 스크립트를 이리저리 고치고 뭔가 더 입력하고 하다보면 그렇게 길어집니다. 그리고 자신이 직접 작업한 스크립트더라도 나중에 다시 보면 한참 들여다 보고 있어야 이해가 되는 경우도 있습니다. 그러므로 주석문(Comment)를 잘 달아놓고 스크립트를 깔끔하게 정리하는 것이 좋지요. 변수 이름 같은 것도 직관적으로 알기 쉽게 잘 부여하는 것이 좋고..

- 액션 패널에 있는 많은 양의 액션들을 모두 다 알고 계실 필요는 없습니다. 그 중에 자주 사용되는 것들만 잘 이해하시면(책에 쓰인 액션들 참조) 스크립팅하는데 아무 지장이 없습니다. 물론 공부하시면서, 또 작업을 많이 하시면서 새로운 액션의 기능을 이해하게 되면서 실력이 늘어나가기도 합니다. (이런 게 있었나 하면서..)

- 스크립팅 작업을 할 때는 생각보다 아주 많은 시간이 필요합니다. 또한 그 작업의 70-80%는 디버깅(Debugging; 프로그램의 오류를 해결하는 과정) 작업으로 채워집니다. --- 책의 예제도 아주 많은 디버깅 작업을 통해 완성된 것입니다. 열 줄 정도의 간단한 코드가 아니라면 대부분은 정확하게 입력하기도 어렵고 중괄호 기호나 괄호 같은 것을 빼먹어서, 테스트 무비해보면 Output 창에 에러가 나는 경우가 많습니다. 처음부터 그냥 주루룩 정확하게 그리고 완벽하게 스크립팅 작업을 끝내는 프로그래머는 별로 없을 것입니다. 스크립팅 작업은 재미있기도 하면서 또 한편으로는 고통(?)스러울 때도 있습니다. 저 역시 스크립팅 작업을 하면서 버그 잡느라 밤을 숱하게 세웁니다. 간단한 작업이야 쉽게 끝나지만 구현하고자 하는 것의 성격에 따라 머리에서 김나도록 고민하고 생각하고 그림을 그려가며 액션스크립트 사전을 뒤져가며 생각해야 하는 경우도 있습니다. 더군다나 스크립팅을 배우는 과정 역시 많은 시간이 필요하죠. (책에서 '스크립팅 아이디어' 코너에 그림이 나오는 경우가 있는데 이런 그림이 그 아이디어 스케치에 가깝습니다. 깔끔하게 정리한 그림이지만.. 예를 들어 459쪽이나 481쪽의 그림..)

- 제 책에서는 Expert Mode로만 설명을 드렸는데, Normal Mode와 Expert Mode에서 스크립팅하는 방법은 차이가 있습니다. 예를 들어 Expert Mode에서는 _root.a._alpha=50; 이라고 표기하는 것을 Normal Mode에서는 setProperty("_root.a", _alpha, "50"); 액션으로 입력합니다. (물론 Evaluate 액션을 사용하면 Normal Mode에서도 _root.a._alpha=50; 액션 형태로 입력할 수는 있지만..) Expert Mode에서 사용하는 Dot Syntax가 스크립팅도 훨씬 빠르고 또 읽고 해석할 때도 쉽습니다. Normal Mode를 사용해서는 그 많은 양의 스크립트를 입력하기가 어렵고 또 하나의 책에서 Normal Mode와 Expert Mode를 모두 다 설명드리면 더 혼동이 된다고 생각되었기 때문에 더 좋은 방법으로 한가지 방식으로 밀고 나가는 것으로 결정을 했던 것이지요. Normal Mode로 사용하든 Expert Mode로 사용하든 그 스크립트가 더 어려워지는 것 같지는 않습니다. 다만 입력할 때 Normal Mode에서 입력하면 '선택'하는 방식이라서 더 쉬운 것처럼 느껴질 뿐이지요. 그보다 스크립트가 어떻게 논리적 흐름을 따라서 구현이 되는가를 이해하고, 또 자신의 플래시 무비를 제작할 때 단 몇 줄의 코드라도 직접 작성하는 훈련이 필요한 거죠.

- 스크립팅을 잘 하려면 많은 작업과 훈련이 요구됩니다. 그러니 당연히 많은 시간이 요구됩니다. 고민하면서 스스로 한줄씩이라도 액션을 입력해가면서 문제를 해결해나가는 과정을 통해 스크립팅 실력이 나날이 늘게 됩니다. 저는 스크립팅/프로그래밍이 예술이며 창조적인 행위라고 생각을 합니다. 기억하십시오. 기초적인 것부터 스스로, 그리고 많은 시간을 들여가며 실력을 늘려가십시오.

- 스크립팅/프로그래밍을 아주 잘 하려면 수학적인 논리가 반드시 필요합니다. 수학을 잘 해야 한다기보다 '논리적인 사고'를 잘 하는 훈련이 되어 있어야 합니다. 특히 액션스크립팅에서 잘 이해해두어야 할 것이, 액션이 '언제' 실행되는가.. 또 어디에서 '반복'이 일어나는가.. 그리고 어디에서 '조건 판단'이 일어나는가 등입니다. 그런 의미에서 각종 이벤트(press, release, load, enterFrame 등)들을 잘 이해하셔야 하며 if 액션과 for 액션을 아주 확실하게 이해해두셔야 합니다.

- 스크립팅 작업은 아주 아주 꼼꼼하게 하셔야 합니다. 불필요한 공백을 넣는다거나 문자 하나를 잘못 입력한다거나 액션을 넣는 위치를 다르게 하기만 해도 전혀 다른 결과가 나오거나 에러가 발생합니다. 컴퓨터가 먹통이니까.. 정확하게 스크립팅해줘야 하는 거죠... 그 대신 엄청나게 빨리 처리하잖아요? 꼼꼼하고 차분하게 스크립팅하세요~

- 마지막으로... 어쩌면 가장 중요한 얘기일지도 모르겠군요. 프로그래밍을 별도로 공부하세요. 스크립팅 작업은 그 바탕에 필요한 논리적인 이해가 없으면 실제로 자신이 응용하기에 어려움이 따를 수 있습니다. 플래시 책이면서 프로그래밍의 기초 개념을 포함하고 있는 책은 다음과 같습니다. (아래 책들은 제 생각일 뿐이므로 최종 판단은 독자님이 하시길 바랍니다. 그리고 국내에도 좋은 책들이 있을텐데, 제가 현재 타지에 나와 있어서 다른 책들의 내용을 몇 권 밖에 보지 못했습니다.. 국내 서적들도 잘 찾아보세요.)
1. Foundation ActionScript (Sham Bhangal) - http://www.friendsofed.com - 괜찮습니다..
2. Flash Actionscript F/X and Design (Bill Sanders) - 책도 두껍지 않고 비교적 쉽게 접근할 수 있습니다.
3. ActionScript : The Definitive Guide (Collin Moock) - http://www.moock.org - 요건 좀 어려울 수 있습니다. 중고급 사용자에게 좋을 듯.. 액션스크립트를 프로그래밍 차원에서 확실하게 배우고 싶은 분이라면 권하는데, 디자이너들을 위한 책은 아닌듯..
4. Flash to the core (Joshua Davis) - http://flashtothecore.praystation.com - 아직 나오지 않은 책입니다.. 프로그래밍 기초 개념을 포함하고 있는지는 아직 잘 모릅니다만 조슈아 데이비스의 명성 때문에 많은 플래셔들이 기대하고 있죠.

긴 글... 정리하자면... 스크립트가 실행될 때 어떤 순서로 실행될 것인가를 항상 잘 염두에 두셔야 하고 액션을 하나씩 확실히 이해해나가시고 몇 줄의 코드라도 직접 작성해가면서 실력을 키워나가세요. 그리고 시간이 많이 필요하고 버그도 많이 잡아야 되고 또 중요한 건 스크립팅 작업에 재미를 느끼셔야 됩니다.. 그리고 실험(Experiment)도 많이 하시구요.

"Building a complex well-crafted piece doesn't just happen overnight. As you start out on a project, although you might have an idea of the total scope, I would encourage you not to think about the entire picture, but to start from a very stripped down foundation." - Joshua Davis(PrayStation)

이글은 이기철님께서 직접 작성하신 글입니다. 원문은 http://www.studiotimo.com/flashclinic 에 있습니다.
2004/05/20 11:37 2004/05/20 11:37
   1    
ABOUT  |  WORKS  |  @seonggyu
COPYRIGHT ⓒ 2000 - 2010. ACTION-SCRIPTER.COM. ALL RIGHTS RESEVED.