메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

액션스크립트 2.0 미리보기(1)

한빛미디어

|

2005-04-21

|

by HANBIT

11,762

출처: 콜린 무크의 Flash ActionScript 2.0 (콜린 무크 저 / 양주일 역) Chapter 1 중에서



액션스크립트 2.0의 특징

플래시 MX 2004와 플래시 MX 프로페셔널 2004 버전에서 새롭게 소개된 액션스크립트 2.0은 플래시 5와 플래시 MX 버전에서 사용하던 액션스크립트(새로운 버전과 구별하기 위해 액션스크립트 1.0이라 부른다)를 문법적으로 완전히 수정한 것이다. 액션스크립트 2.0은 기존의 프로그래밍 언어에 몇 가지 새로운 기능이 추가된 것이 아니라 객체지향 개발 언어로 개선된 프로그램인 것이다. 이제 플래시에서도 완전한 객체지향 프로그래밍(Object-Oriented Programming, 이하 OOP) 문법과 방법론을 사용하여 플래시 무비를 짜임새 있게 제작하게 되었다.

액션스크립트 1.0에서도 객체지향 방식으로 프로그램을 제작할 수는 있었지만 그것은 전통적인 의미의 객체지향 프로그램들이 클래스와 오브젝트를 생성하는 것과는 다른 것이었다. 반면 액션스크립트 2.0에는 객체지향 언어의 특징을 모두 살린 문법 구조가 추가되었다. 액션스크립트 1.0에서 지원되지 않았던 키워드를 하나 예로 들면 클래스를 작성하기 위해 class 키워드를 제공하고, 클래스를 상속받아 확장하기 위해 extends 키워드를 지원한다(액션스크립트 1.0에서도 오브젝트의 프로토타입을 생성하여 클래스처럼 사용할 수 있었지만 2.0에서는 구체적인 문법으로 지원하게 된 것이다). 액션스크립트 2.0의 객체지향 문법 구조는 자바나 C++의 구조와 비슷하기 때문에 이들 언어 개발자들에게도 매우 친숙한 언어로 인식될 것이다.

[ 참고 ]
액션스크립트 2.0의 새로운 OOP 문법의 대부분은 ECMAScript 4 표준을 따르고 있다. 자세한 내용은 http://www.mozilla.org/js/language/es4를 참고하기 바란다.


다음은 액션스크립트 2.0의 주요 특징을 요약한 것이다. 자세한 내용은 이 책의 뒷부분에서 모두 살펴볼 것이기 때문에 다소 생소하게 느껴지는 부분이 있더라도 걱정할 필요는 없다.

▶ 클래스를 제작하기 위해 class 문을 사용한다. 클래스를 제작하는 것에 대해서는 4장에서 살펴볼 것이다.

▶ 상속을 위해 extends 키워드를 사용한다. 액션스크립트 1.0에서는 __proto__ 속성 또는 prototype 속성을 이용하여 클래스의 상속을 구현하였다. 상속에 대해서는 6장에서 배우게 될 것이다.

▶ 자바에서 사용하는 인터페이스(즉, 추상 데이터타입)를 구현하기 위해 interface 문을 사용한다. 클래스는 implements 키워드를 이용하여 인터페이스의 구현을 담당한다. 액션스크립트 1.0에서는 인터페이스를 지원하지 않는다. 인터페이스에 대해서는 8장에서 다룬다.

▶ 클래스 파일의 확장자는 .as를 사용한다. 이전에는 클래스를 타임라인 또는 외부 .as 파일에 제작할 수 있었지만, 액션스크립트 2.0에서는 외부 클래스 파일로 제작해야 한다. 클래스 파일은 플래시 MX 프로페셔널 2004의 스크립트 에디터 또는 외부 텍스트 에디터에서 편집할 수 있다.

▶ 클래스에서 인스턴스 메소드와 클래스 메소드를 생성하는 구체적인 메소드 정의 방법을 제공한다. 액션스크립트 1.0에서는 메소드를 클래스 생성자의 prototype 속성을 통해서 제작할 수 있었다. 이에 대한 자세한 내용은 4장을 참고하기 바란다.

▶ 속성의 읽기와 쓰기를 제어하는 공식적인 getter, setter 메소드를 지원한다. 액션스크립트 1.0에서는 Object.addProperty() 메소드를 사용하여 제어하였다. 4장에서 좀더 자세한 내용을 살펴볼 수 있다.

▶ 속성을 정의하는 공식 문법을 지원한다. 클래스에서 인스턴스 속성과 클래스 속성을 정의할 수 있다. 액션스크립트 1.0에서는 속성을 제작하기 위해 클래스 생성자의 프로토타입 속성으로 정의하거나, 생성자 함수 내부에 속성을 작성하거나 또는 오브젝트에 직접 정의하는 등의 다양한 방법이 사용되었다. 게다가 액션스크립트 1.0에서는 클래스 속성은 클래스의 생성자 함수에 직접 정의하는 구조를 사용하였다. 이에 대한 자세한 내용은 4장을 참고한다.

▶ private와 public 키워드를 사용하여 클래스 외부에서 메소드와 속성에 대한 접근을 허용할지 여부를 결정한다.

▶ 정적인 데이터타입(static datatype)을 사용하여 변수, 속성, 파라미터와 반환값에 대해 사용할 데이터의 타입을 선언할 수 있다. 이것은 상황에 따라 잘못된 데이터타입을 사용하는 것에 대한 오류를 확실히 제거할 수 있는 방법에 해당한다. 3장에서 데이터타입을 잘못 사용할 때 발생하는 타입 미스매치 에러에 대해 자세히 다룬다.

▶ 타입 캐스팅(type casting)을 지원한다. 타입 캐스팅은 데이터의 형태가 다른 상황에서 하나의 데이터를 가진 변수나 오브젝트를 다른 데이터인 것처럼 사용할 수 있도록 데이터타입을 변경하는 과정이다. 정적인 데이터타입을 사용할 때, 종종 데이터타입의 변경이 요구된다. 이러한 타입 캐스팅에 대해서는 3장에서 자세히 살펴볼 수 있다.

▶ 액션스크립트 2.0에서는 각종 클래스를 저장해놓은 위치를 설정할 수 있는 클래스패스(classpath)를 사용할 수 있다. 클래스패스는 프로젝트를 진행하는 데 있어 클래스의 재사용성을 높이고 소스 코드를 관리하는 데 많은 도움을 준다. 이에 대해서는 9장을 참고한다.

▶ throw와 try/catch/finally 문을 사용하는 예외 처리(exception handling)는 프로그램의 오류를 좀더 손쉽게 다루기 위한 방법이다. 10장에서 살펴볼 것이다.

▶ 심볼 링키지 속성(Symbol linkage property)을 사용하여 좀더 손쉽게 무비클립에 액션스크립트 2.0의 클래스를 할당할 수 있다. 이것은 MovieClip 클래스를 상속받기 위해 액션스크립트 1.0에서 사용하던 #initclip과 Object.registerClass()를 쓰던 것보다 편리한 기능이다. 이에 관한 내용은 13장에서 살펴본다.


플래시 플레이어 7의 주요 기능

액션스크립트 2.0의 개선사항과 함께 플래시 플레이어 7 버전에서는 새로운 클래스와 사용 가능한 다양한 기능들이 도입되었다. 새로운 기능은 플래시 플레이어 7에서만 사용할 수 있기 때문에 플래시 무비의 형식을 플래시 플레이어 7 또는 그 이상 버전으로 설정하여야 한다(무비 출력 형식에 대해서는 이 장의 마지막 부분에서 설명할 “액션스크립트 버전과 플레이어 버전 설정”에서 자세히 다루고 있다). 이러한 기능들이 이 책의 핵심 주제는 아니지만 액션스크립트 2.0을 학습하는 데 필요한 부분이므로 간단히 살펴보자.

새로운 플래시 플레이어 7에 포함된 기능은 다음과 같다.

▶ 새로운 배열 정렬 방법이 추가되었다.

▶ 플래시 플레이어에서 마우스 오른쪽 버튼을 클릭(윈도우 운영체제)하거나, 컨트롤 키와 함께 클릭(애플 매킨토시 운영체제)할 때 나타나는 메뉴를 제작자가 원하는 것으로 변경할 수 있도록 ContextMenu와 ContextMenuItem 클래스가 새롭게 추가되었다.

▶ 다른 도메인에 존재하는 플래시 무비를 불러오거나 또는 데이터를 전송하는 것에 대한 크로스도메인 정책 파일의 사용을 강화하였다.

▶ MP3 파일을 플래시에서 동적으로 불러와 사용할 때 ID3 v2 태그를 사용할 수 있다.

▶ 텍스트 필드에서 휠마우스의 사용을 지원한다(윈도우 운영체제에서만 사용 가능).

▶ 무비클립의 뎁쓰를 관리하기 위한 향상된 메소드가 추가되었다.

▶ 무비클립과 이미지를 로드하기 위해 MovieClipLoader 클래스가 추가되었다.

▶ 이전보다 향상된 인쇄 기능 관리를 위해 PrintJob 클래스를 사용한다.

▶ 텍스트 필드에서 텍스트 주변에 이미지를 배치할 수 있다.

▶ 텍스트의 정확한 측정값을 구할 수 있도록 텍스트 필드 클래스의 getTextExtend() 메소드가 향상되었다. 이것은 플래시 플레이어 6보다 정확한 값을 계산할 수 있다.

▶ 텍스트 필드에 캐스케이딩 스타일 시트(CSS)를 사용할 수 있다. 이것은 표준화된 CSS 제작 방법으로 텍스트를 표시할 수 있는 구조화된 방법을 지원하는 것이다.

▶ 액션스크립트를 실행하는 속도가 많이 개선되었다.

▶ 대소문자 사용 규칙이 엄격해졌다.

이 책의 핵심 내용은 액션스크립트 2.0에 대한 것이다. 따라서 플래시 플레이어의 주요 기능에 대해서는 상세하게 다루지 않겠다. 플래시 플레이어 7에 대한 자세한 정보는 플래시의 온라인 도움말 기능을 참고하기 바란다. Help→ActionScript Reference Guide→What’s New in Flash MX 2004 ActionScript 메뉴를 선택하면 자세한 내용을 살펴볼 수 있다.


플래시 MX 2004 버전 2 컴포넌트

플래시 MX에서는 사용성이 높은 인터페이스를 갖추고, 코드를 쉽게 적용할 수 있기 때문에 필요한 기능을 바로 사용할 수 있는 컴포넌트(component)가 처음 등장했다. 플래시의 내장 컴포넌트를 사용하면 윈도우 스타일의 플래시 애플리케이션을 손쉽게 제작할 수 있다. 플래시 MX 2004에서는 새로운 v2(버전 2) 컴포넌트가 등장했다. 이것은 이전 버전에 비해 더욱 다양한 기능들을 제공할 수 있도록 매크로미디어 컴포넌트 아키텍처를 기반으로 액션스크립트 2.0 문법을 사용하여 완전히 다시 제작된 것이다. 새로운 아키텍처는 컴포넌트를 사용하는 데 있어서 새로운 제작방법을 요구한다(12장의 “액션스크립트 2.0을 이용한 컴포넌트의 사용”을 참고하기 바란다). 공식적으로 v2 컴포넌트는 플래시 플레이어 6.0.79.0 또는 좀더 최신 버전에서 동작한다. 그러나 테스트한 결과에 따르면 v2 컴포넌트의 상당수가 이전에 배포된 플래시 플레이어 6에서도 동작한다(정확히 말하면 6.0.40.0 버전 또는 최신). 만일 여러분이 v2 컴포넌트를 플래시 플레이어 6.0.79.0 이전 버전에서 사용하려면 제작한 애플리케이션을 꼼꼼히 테스트하기 바란다.

플래시 MX 2004 또는 플래시 MX 프로페셔널 2004에서 만든 하나의 애플리케이션에서 v2 컴포넌트 또는 플래시 MX의 v1 컴포넌트를 동시에 사용할 수 있다. 새로운 v2 컴포넌트의 등장과 함께 이전의 플래시 MX에서 소개된 컴포넌트를 v1 컴포넌트라고 부릅니다.

v1과 v2 컴포넌트를 구분하는 것은 컴포넌트에 사용된 액션스크립트 버전의 차이는 아니다. v2 컴포넌트가 액션스크립트 2.0으로 제작되었으며, 액션스크립트 1.0을 사용한 v2 컴포넌트가 없는 것은 확실하다. 그렇지만 v1 컴포넌트를 액션스크립트 1.0으로 제작했었던 것을 액션스크립트 2.0으로 다시 제작하여 업데이트된 버전들은 구할 수 있다.

[ 참고 ]
v1 컴포넌트를 액션스크립트 2.0으로 업데이트한 것을 플래시 익스체인지 사이트(http:// www.macromedia.com/exchange/flash)의 User Interface 분류에서 구할 수 있다. 제목은 “Flash MX Components for Flash MX 2004”이다.


만일 동일한 플래시 무비에서 업데이트가 안 된 v1 컴포넌트(액션스크립트 1.0으로 제작된)와 함께 v2 컴포넌트를 사용한다면 컴포넌트가 사용된 부분에 따라서 컴파일타임 또는 런타임 에러가 발생할 수 있다.

[ 경고 ]
액션스크립트 2.0 코드와 액션스크립트 1.0을 사용한 OOP 제작 방법을 함께 사용하지 않는 것이 좋다. 만일 클래스와 상속, 그리고 다른 OOP 제작 방법을 사용한 코드가 있다면 컴파일 타임 에러나 런타임 에러가 발생할 수 있으므로 모두 액션스크립트 2.0 방식으로 변경하는 것이 좋다.


v2 컴포넌트의 새로운 주요 기능들은 다음과 같다.

▶ 컴포넌트 이벤트를 처리하는 새로운 이벤트 리스너 모델을 사용한다. 이것은 다수의 다른 오브젝트들이 컴포넌트의 이벤트를 전달받을 수 있도록 한다.

▶ 컴포넌트의 텍스트 속성을 손쉽게 변경할 수 있도록 CSS를 사용한 스타일시트를 지원한다.

▶ 탭 키를 이용한 유저 인터페이스 요소들의 이동, 선택을 관리하는 포커스 제어 기능을 지원한다.

▶ 컴포넌트들이 스크린에 나타나는 순서를 관리하는 뎁쓰 제어 기능이 있다.

▶ 풍부한 접근성을 지원한다(즉, 스크린 리더 프로그램이 잘 동작한다).

▶ 풍부한 스킨 관리 기능(그래픽 요소들을 손쉽게 바꾸는 기능)을 지원한다.

▶ 컴포넌트를 손쉽게 관리하고 공유하기 위해 컴포넌트에 사용된 심볼들을 하나의 파일로 제작하는 방법을 제공한다.

v1 컴포넌트에 비해 v2 컴포넌트는 비교적 용량이 크다. 만일 한두 개의 컴포넌트를 사용해야 하는 경우가 생겼을 때, v2 컴포넌트로 제작하면 파일 용량이 더 커지게 된다. v2 컴포넌트 아키텍처는 적어도 컴포넌트 3, 4개 정도를 사용하는 경우 가장 최적화된 애플리케이션을 제작할 수 있다. 그러므로 포커스 관리 기능 또는 풍부한 접근성(스크린 리더 기능)이 불필요하고, 단지 한두 개 정도의 컴포넌트를 써야 한다면, v1 컴포넌트를 사용하는 것이 빠른 다운로딩 속도를 얻을 수 있다.

한 가지 알아두어야 할 사실은 v2 컴포넌트의 기본 테마(“halo” 스킨)는 스크롤바 또는 버튼에 대해 사용자 정의 색상을 지원하지 않는다는 것이다. 다시 말해, 플래시 MX 2004 또는 플래시 MX 프로페셔널 2004의 v2 컴포넌트 기본 테마에서는 scrollTrackColor와 buttonColor 스타일 속성이 동작하지 않는다. v2 컴포넌트의 버튼이나 스크롤바의 색상을 변경하려면 새로운 테마를 문서에 적용한 후 색상을 수정해야 한다. 이것에 대해서는 플래시의 도움말(Help→Using Components→About Themes→Applying a Theme to a Document)을 살펴보기 바란다.

[표 1-1]은 플래시 MX 2004와 플래시 MX 프로페셔널 2004에서 사용 가능한 컴포넌트들을 표시한 것이다. 프로페셔널 컴포넌트는 플래시 MX 2004에서는 제공되지 않지만 사용할 수는 있다. 즉 어떤 .fla 파일에 프로페셔널 버전에서 제공하는 컴포넌트가 포함되어 있다면 플래시 MX 2004 버전에서도 아무런 제약 없이 사용할 수 있다. 매크로미디어의 플래시 MX 2004 사용자 라이선스 동의서에서는 프로페셔널 버전이 제공하는 컴포넌트의 사용을 제한하지는 않는다.


[표 1-1] v1과 v2 컴포넌트의 비교


a는 DRK3에서 제공하는 것과 비슷하다.
(http://www.macromedia.com/software/drk/productinfo/product_overview/volume3)

b는 DRK1에서 제공하는 것과 비슷하다.
(http://www.macromedia.com/software/drk/productinfo/product_overview/volume1/)

c는 플래시 익스체인지의 플래시 UI 컴포넌트 세트 2에서 유사한 것을 이용할 수 있다.
(http://www.macromedia.com/exchange/flash)

d는 DRK2에서 제공하는 것과 비슷하다.
(http://www.macromedia.com/software/drk/productinfo/product_overview/volume2/)
TAG :
댓글 입력
자료실