액션스크립트 2.0에서 바뀐 점
플래시 액션스크립트 2.0에서 바뀐 점.
기능적으로는 기존의 액션스크립트 1.0에 더 추가된 부분이 거의 없느나, 문법적으로 좀 더 객체지향프로그래밍 분야의 용어들을 많이 차용해 구현해 두었다. 기존에도 객체지향프로그래밍이 불가능 한 것은 아니었지만, 그 용어나 쓰임새에 있어서 기존의 객체지향프로그래밍 언어인 자바나 C++와는 많이 달랐다. 게다가 객체지향프로그래밍에 있어서 가장 중요하다 할 수 있는 클래스의 개념이 존재하지 않음으로 인해서, 기존의 객체지향 프로그래밍은 그냥 주먹구구식의 끼워 맞춘 느낌을 많이 준 것 또한 사실이다. 이에 액션스크립트 2.0이 발표되면서, 기존의 그러한 객체지향프로그래밍의 형식적이고 문법적인 면이 많이 보강되었고, 명실상부 객체지향프로그래밍 언어로 표방할 수 있게 되었다. 물론 아직은 플래시에 종속적인 스크립트 언어로서의 그 태생적 한계로 인해 완전한 객체지향프로그래밍 언어라고 하기에는 부족한 점들이 있지만, 그런 점들은 프로그래밍 언어의 생산성이란 측면에서 다시 고려되어야 할 부분으로, 무조건 단점이라고 치부할 수는 없다.
아무튼, 이번 2.0으로 버전업 된 액션스크립트의 바뀐 부분들을 살펴보자.
- 클래스를 만들기 위해 class 명령문이 추가되었다. 1.0에도 사용자 데이터 타임으로서의 객체를 구현할 수 있었지만, 그 문법이 함수를 정의하는 것과 별반 다를 것이 없었다.
- 상속을 위한 extends라는 키워드가 추가 되었다. 1.0에서는 prototype속성을 이용하여 상속을 구현할 수 있었지만, 이제는 기존의 객체지향프로그래밍 분야의 문법을 이용하여 상속을 구현할 수 있다.
- 자바의 인터페이스와 같은 자료구조를 생성할 수 있는 interface 명령문이 추가 되었다. 이는 기존에 없던 개념으로, 자바에서와 같이 implements로 이용할 수 있다.
- 클래스 정의는 외부 파일인 .as 파일을 이용해야 한다. 기존에는 메인 타임라인에 객체의 정의를 저장할 수 있었지만, 이제는 외부 파일인 .as 파일에 따로 저장해 두어야 한다.
- 클래스의 메소드에 대한 정의가 클래스 정의 안에 포함되게 되었다.
- 객체 내의 속성에 대한 접근을 위해 객체지향프로그래밍 분야의 getter와 setter를 이용한 문법을 구현하였다.
- 객체의 속성을 정의하는 문법이 기존의 객체지향프로그래밍 분야의 문법을 따른다.
- 객체의 캡슐화를 위한 접근 한정자인 public과 private 키워드를 차용하였다.
- 변수, 속성, 인자, 반환 값의 데이터 형을 정적 데이터 형으로 선언할 수 있다. 정적 데이터형은 하나의 데이터 형으로 선언되면 나중에 바뀔 수 없다는 것인데, 기존의 액션스크립트에서는 변수 하나에 정수형 데이터나 문자열 등을 번갈아가며 할당할 수 있었다.
- 데이터 형 변환 (type casting)을 위한 문법 추가. 정적 데이터 형을 이용할 경우, 필요에 따라 다른 데이터 형으로 형 변환을 할 필요가 있다.
- 클래스패스를 설정해 줄 수 있다. 외부 .as 파일로 저장되어 있는 클래스들을 가져다 쓰기 위해서는 그 클래스들이 어디에 정의되어 있는지 명시해야 할 필요가 있다. 이 때, 클래스패스를 해당 패스에 지정해 주면 그 패스에 있는 클래스들을 재사용할 수 있다.
- 예외 처리를 위한 throw, try/catch/finally 명령문을 추가하였다.
플래시 플레이어 7에서 추가된 점
- 배열의 정렬 알고리즘이 바뀌었다. 정말인가? 확인이 필요한 사항인 것 같다.
ContextMenu와 ContextMenuItem 클래스가 추가 되었다. 이 클래스들은 사용자가 마우스 오른쪽 버튼을 누르거나, 맥에서 Cmd + 클릭할 때 이용된다. - 다른 도메인의 파일을 열 수 있는 cross-domain policy 파일을 도입하였다.
mp3파일을 로드하였을 겨우 ID3 v2 태그 정보를 읽어올 수 있다. - 택스트필드에서 마우스 휠을 사용할 수 있다.
- 무비클립의 depth를 조절할 수 있는 함수들이 추가되었다.
- 무비클립이나 이미지를 로드하기 위한 MovieClipLoader 클래스가 추가되었다.
- 프린트 할 때 좀 더 세밀한 설정이 가능한 PrintJob 클래스가 추가되었다.
- 택스트필드에서 이미지를 사용할 수 있다.
- 택스트 메트릭 정보가 좀 더 향상되었다.
- 택스트필드에서 Cascading stylesheet를 사용할 수 있다.
- 액션스크립트의 수행성능이 향상되었다.
- 대소문자 구분이 엄격해졌다.
참고문헌
- Essential ActionScript 2.0, Colin Moock, O’Reilly, 2004