저자: 조요섭(
cyscys@netian.com)
flash MX의 기능
지난번 기사에서는 플래시가 무엇인지 그리고 플래시로 무엇을 할 수 있는지 플래시의 개략적인 모습을 살펴보았다. 이번 기사에서는 플래시로 할 수 있는 일을 간단하게 설명해 보겠다.
기능 1: 개발 환경
flash를 설치하고 실행해 보면 그래픽 툴을 쓰고 있다는 느낌이 들 것이다(매크로미디어에서 다운로드 받아 사용할 수 있음).
[그림 7] 매크로미디어 플래시 MX
위의 [그림 7]에서 보듯이 플래시 MX에는 다양한 컴퍼넌트는 물론이고 code hint도 된다. 이와 같이 플래시를 사용하여 swf 파일을 결과물로 내놓을 수 있다. 글자, 그림, 소리, 색, 동영상을 하나의 툴로 통합할 수 있으며 이것을 바로 인터넷에 올릴 수도 있다. 코딩에 의한 로직에 따라 이들을 직접 다룰 수 있다. 다른 개발 환경은 코드가 모든 것을 결정하지만 플래시에서 코드는 그림, 도형같은 오브젝트나 프레임에 할당되는 식이다.
기능 2: 멀티미디어 저작
- 애니메이션
애니메이션은 플래시 초창기 버젼부터 있었던 아주 기본적인 기능으로 모션 트위닝(motion tweening) 쉐이프 트위닝(shape tweening), 패스 애니메이션(path animation) 등을 할 수 있다. 모션 트위닝은 처음과 마지막 위치만 정해주면 시간의 흐름에 따라 움직이도록 하는 것이고, 쉐이프 트위닝은 이런식으로 모양을 바꾸는 것이다. 세모에서 네모, 네모에서 원 등으로 변하는 애니메이션을 만들 수 있다. 패스 애니메이션는 움직이는 경로를 정해서 움직일 수 있다.
물론 단순하게 프레임별로 그림을 그려서 보여줄 수도 있지만 이렇게 플래시를 이용할 수도 있다.
마스크 효과는 디자이너가 정해준 모양을 통해서만 그림을 볼 수 있게 하는 기능이다. 이 기능을 사용하면 밤에 벽을 향해 손전등을 비추는 효과 같은 것을 연출할 수 있다.
- 사운드
소리를 편집해서 첨가할 수 있다. wav나 mp3도 지원한다.
- 동영상
quicktime이나 avi포맷 동영상을 프래임별로 무비에 포함시킬 수 있다. 또한 quicktime이나 RealPlayer에서 사용할 수 있는 포맷으로 저장할 수도 있다. 아니면 바로 스트리밍으로 동영상을 방송하는 것도 가능하다.
기능 3: 애플리케이션 개발툴
- 이미지 객체를 쉽게 다룬다.
어떠한 이미지나 애니메이션을 객체(심벌이라 부름)로 선언하면 위치, 회전, 축소, 확대, 투명도, 색깔 등을 모두 쉽게 바꿀 수 있다. 또한 테그처럼 외부 jpg 파일을 불러 올 수도 있다.
- 선과 면을 다룰 수 있다.
선을 그리고, 그레디언트 효과가 있는(색깔이 점차적으로 바뀌는 효과) 색칠을 할 수 있다. 하지만 픽셀단위로 그림을 그릴 수는 없다.
- 사운드 효과를 다룰 수 있다.
프로그램으로 외쪽 오른쪽 스피커 별로 볼륨을 조절할 수 있다. 외부 mp3를 url로 바로 불러올 수 있다.
- 다양한 사용자 입력
마우스는 기본이고, 키보드, 소리, 카메라가 있을 경우 동영상까지 받아들일 수 있다. 마우스와 키보드 이벤트 처리는 게임을 만들기에도 부족함이 없을 정도이다.
드래그, 버튼 처리, text box입력 등도 쉽게 처리할 수 있다.
- 자바스크립수준의 OOP
객체지향적인 프로그래밍이 가능하다. super나 new, this 같은 키워드를 지원한다. 여기에서 사용되는 프로그래밍 언어를 액션스크립트(ActionScript)라고 한다.
- 다양한 통신 기능
웹 서버나 소켓 서버, 웹 서비스 등과 잘 결합한다. HTML의 자바스크립트(JavaScript)와도 정보를 교환할 수도 있다.
- XML
xml을 파싱하고 생성할 수 있으며 통신하는데도 사용할 수 있다.
- text와 HTML을 다룰 수 있다
텍스트를 프로그램에 의해 뿌려줄 수도 있고, 간단한 HTML을 처리할 수 있기 때문에 브라우저가 없어도 어느 정도 포맷이 있는 모습으로 표현할 수 있다. URL 링크도 만들 수 있다.
- 기본적인 추상 개체를 지원한다
스칼라, 문자열, 시간, 배열에 필요한 여러 함수가 내장되어 있다.
- SSL을 지원한다
https로 웹 서버에 연결할 수 있다.
플래시 Vs. HTML/자바스크립트
HTML과 자바스크립트를 사용하면 어느 정도 인터렉티브한 클라이언트를 개발할 수 있다. 그러나 이것은 플래시와는 비교도 되지 않는다. HTML이나 자바스크립트가 할 수 있는 작업은 플래시로도 할 수 있다. 게다가 이러한 작업은 대부분 더 쉽고 효율적으로 할 수 있다.
HTML의 가장 큰 제약은 결국 문서라는 점이다. 무언가 변화가 있으려면 새로고침 또는 이동이 필요하다. 하지만 플래시에서는 그렇게 할 필요가 없다. 만약 새로고침이 빈번한 페이지라면 서버 부하의 차이는 바로 드러날 것이다. 게다가 플래시는 소켓통신도 지원한다.
HTML과 javascript로 약간 복잡한 애플리케이션이나 GUI를 구현하려 했다면 특히 더 플래시를 사용해 볼 것을 생각해 보아야 한다. 디버깅과 유지 보수에 들어가는 노력과 비용까지 생각할 때 플래시는 거의 유일한 대안이 되기 때문이다.
물론 플래시가 HTML보다 뭐든 다 잘하는 것은 아니다. 이에 대한 내용은 뒤에서 더 자세히 다루어 보기로 하자.
플래시 Vs. 자바 애플릿
앞에서도 잠깐 언급했지만 플래시는 자바 애플릿을 닮아가고 있다. 초기에는 자바 게임이 주류를 이루었지만 이제 자바 게임은 찾아보기 힘들어졌다. 자바를 생각해보면 플래시를 어디에 활용할 수 있는지 어렴풋이 감이 잡힐 것이다.
- 플래시는 할 수 있지만 애플릿은 할 수 없는 것!
여기서 "할 수 없다"라는 것은 자바 애플릿을 써서 아주 힘들게 할 수 있다는 정도가 아니라, 아예 불가능한 것들을 말한다. 자바는 마이크 입력과 디지털 캠코더를 사용할 수 없다. 애플릿만으로는 프린트를 할 수 없다. 그렇지만 플래시는 swf 파일을 독립적인 하나의 exe 파일로 만들 수 있다.
- 플래시는 잘 하지만, 애플릿은 잘 하지 못하는 것!
이 부분은 아주 많다. 애니메이션, 시각효과내기, 사운드 처리 등등 멀티미디어 쪽과 시각적 측면에서 품질은 플래시가 훨씬 더 뛰어나다. 자바는 고품질의 랜더링에 실패하는 경우가 많다. 무거운 자바 가상 머신의 잦은 예외발생으로 인해 그림이 깨지거나 아예 표시가 안되는 경우도 비일비재하다. 색을 처리하는 것은 플래시 쪽이 훨씬 보기 좋으며 소리 쪽도 상황은 비슷하다.
- 플래시도 못하고 애플릿도 못하는 것!
자신이 저장된 서버 이외의 서버와 통신할 수 없다. 당연히 P2P도 불가능하다. 하드웨어 3D가속 사용도 할 수 없다. 3D를 사용하고 싶다면 Director의 사용을 고려해 보자. 조이스틱같은 것도 사용할 수 없다.
- 애플릿은 잘하지만 플래시는 잘하지 못하는 것!
애플릿도 느리기는 하지만 복잡하고 많은 연산을 해야 할 경우엔 플래시보다 훨씬 빠르다. 플래시로는 3D 처럼 많은 양의 연산을 처리해야 하는 애플리케이션을 실행하기는 어렵다.
- 애플릿은 할 수 있지만 플래시는 할 수 없는 것!
플래시는 예외 처리를 하지 않는다. 따라서 버그는 더 잡기 어렵다. 플래시는 픽셀 단위의 점들을 처리할 수 없다. 즉 이미지 프로세싱 같은 것은 할 수 없다는 뜻이다. 또한 RMI 같은 개념도 없다(단 흉내를 낼 수는 있음).
자바, 액션스트립트와 다른 점은 아주 많다. 자바스크립트처럼 클래스를 지원하지 않으며 prototype을 사용하여 상속을 만든다.
다음기사 예고
「Flash MX - 클라이언트 애플리케이션 개발 도구 I」에서는 플래시의 정의를 이번 기사에서는 플래시의 기능을 살펴보았다. 다음 기사는 마지막으로 플래시의 활용분야와 한계에 대해 살펴보도록 하겠다.