ActionScript3.0 소개

ActionScript

ActionScript는 Adobe® Flash® Player 및 Adobe® AIR™ 런타임 환경의 프로그래밍 언어입니다. 이를 사용하여 Flash, Flex 및 AIR 내용과 응용 프로그램에서 대화형 작업, 데이터 처리 등 보다 다양한 작업을 수행할 수 있습니다.

ActionScript는 Flash Player 및 AIR에 내장되어 있는 AVM(ActionScript Virtual Machine)에 의해 실행됩니다. ActionScript 코드는 일반적으로 컴파일러에 의해 바이트코드 형식으로 변환됩니다. 바이트코드는 컴퓨터에서 작성 및 이해되는 프로그래밍 언어의 형식 중 하나입니다. 컴파일러에는 Adobe® Flash® Professional에 내장된 컴파일러 및 Adobe® Flash® Builder™에 내장되어 있으며 Adobe® Flex™ SDK에서 사용 가능한 컴파일러가 있습니다. 바이트코드는 SWF 파일에 포함되며 Flash Player 및 AIR에서 실행됩니다.

ActionScript 3.0에서는 객체 지향 프로그래밍에 대한 기본적인 지식만을 가진 개발자도 손쉽게 사용할 수 있는 강력한 프로그래밍 모델을 제공합니다. 이전 버전의 ActionScript보다 향상된 ActionScript 3.0의 주요 기능을 몇 가지 소개하면 다음과 같습니다.

  • 새 바이트코드 명령어 집합을 사용하고 성능이 크게 향상된 새로운 AVM(ActionScript Virtual Machine)인 AVM2

  • 이전 버전의 컴파일러보다 심도 있는 최적화를 수행하는 최신 컴파일러 코드 베이스

  • 객체에 대한 저수준 제어 및 진정한 객체 지향 모델을 사용하여 확장되고 향상된 API(Application Programming Interface)

  • E4X(ECMAScript for XML) 사양(ECMA-357 edition 2)을 기반으로 한 XML API. E4X는 언어의 기본 데이터 유형으로 XML이 추가된 ECMAScript의 언어 확장입니다.

  • DOM(Document Object Model) 레벨 3 이벤트 사양을 기반으로 하는 이벤트 모델

ActionScript 3.0의 장점

ActionScript 3.0은 이전 버전의 ActionScript를 능가하는 스크립팅 기능을 가지고 있습니다. 대용량 데이터 세트 및 재사용 가능한 객체 지향 코드 베이스를 통해 매우 복잡한 응용 프로그램을 쉽게 만들 수 있습니다. Adobe Flash Player에서 내용을 실행하는 데 ActionScript 3.0이 반드시 필요한 것은 아닙니다. 그러나 ActionScript 3.0 가상 컴퓨터인 AVM2의 향상된 기능을 활용하려면 ActionScript 3.0을 사용해야 합니다. ActionScript 3.0 코드는 이전 ActionScript 코드보다 실행 속도가 최고 10배 향상되었습니다.

이전 버전의 AVM, 즉 AVM1에서는 ActionScript 1.0 및 ActionScript 2.0 코드를 실행합니다. Flash Player 9 및 10에서는 이전 버전과의 호환성을 위해 AVM1을 지원합니다.

ActionScript 3.0의 새로운 기능

ActionScript 3.0에 ActionScript 1.0 및 2.0과 유사한 여러 가지 클래스와 기능이 포함되어 있지만 ActionScript 3.0은 이전 버전의 ActionScript와 구조적 및 개념적인 면에서 다릅니다. ActionScript 3.0의 향상된 기능에는 객체에 대한 저수준 제어를 강화한 API 및 기본 언어의 새로운 기능이 포함됩니다.

기본 언어 기능

기본 언어에는 명령문, 표현식, 조건문, 반복문 및 유형과 같은 프로그래밍 언어의 기본적인 구성 단위가 정의되어 있습니다. ActionScript 3.0에는 개발 작업의 속도를 향상시킬 수 있는 여러 가지 기능이 포함되어 있습니다.

런타임 예외

ActionScript 3.0에서는 이전 버전의 ActionScript보다 많은 오류 상황을 보고합니다. 일반적인 오류 상황에 런타임 예외가 사용되면서 디버깅이 편리해지고 오류를 철저히 처리하는 응용 프로그램을 개발할 수 있게 되었습니다. 런타임 오류를 통해 소스 파일 및 줄 번호 정보가 포함된 스택 추적을 확인하여 오류를 빠르고 정확하게 찾아낼 수 있습니다.

런타임 유형

ActionScript 3.0에서는 유형 정보가 런타임에 보존됩니다. 이 정보는 런타임에 유형을 확인하여 시스템의 유형 안전을 향상시키는 데 사용됩니다. 또한 유형 정보는 변수를 기본 시스템 표현으로 나타내는 데 사용되므로 성능을 향상시키고 메모리 사용량을 줄여 줍니다. 이에 비해 ActionScript 2.0에서 유형 약어는 주로 개발자가 참조하는 데 사용되며 모든 값의 유형은 런타임에 동적으로 지정됩니다.

봉인 클래스

ActionScript 3.0에서는 봉인 클래스 개념이 도입되었습니다. 봉인 클래스에는 컴파일 타임에 정의된 속성 및 메서드의 고정된 집합만 있으며 속성 및 메서드를 더 이상 추가할 수 없습니다. 런타임에 클래스를 변경할 수 없도록 함으로써 컴파일 타임에 보다 엄격한 확인 절차가 수행되어 더욱 견고한 프로그램을 만들 수 있게 됩니다. 또한 각 객체 인스턴스에 내부 해시 테이블이 필요하지 않으므로 사용 가능한 메모리가 증가합니다. dynamic 키워드를 사용하여 동적 클래스를 정의할 수도 있습니다. ActionScript 3.0의 모든 클래스는 기본적으로 봉인되지만 dynamic 키워드를 사용하여 동적으로 선언할 수 있습니다.

메서드 클로저

ActionScript 3.0에서는 메서드 클로저를 원본 객체 인스턴스에 바인딩할 수 있습니다. 이 기능은 이벤트 처리에 유용합니다. ActionScript 2.0에서는 메서드 클로저가 어떠한 객체 인스턴스에서 추출되었는지 기억하지 못하기 때문에 메서드 클로저가 호출되면 예기치 못한 비헤이비어가 발생합니다.

E4X(ECMAScript for XML)

ActionScript 3.0은 최근 ECMA-357로 표준화된 E4X(ECMAScript for XML)를 구현합니다. E4X는 XML을 조작하기 위한 자연스럽고 쉬운 언어 구문 집합을 제공합니다. 기존 XML 구문 분석 API와 달리 E4X에서의 XML은 언어의 기본 데이터 유형처럼 동작합니다. E4X는 필요한 코드 양을 현저하게 줄여 XML을 조작하는 응용 프로그램을 효율적으로 개발할 수 있습니다.

ECMA E4X 사양을 보려면 www.ecma-international.org를 방문하십시오.

일반 표현식

ActionScript 3.0에는 일반 표현식에 대해 기본적인 지원이 포함되어 있어 문자열을 빠르게 검색하고 조작할 수 있습니다. ActionScript 3.0은 ECMAScript(ECMA-262) Edition 3 언어 사양에 정의되어 있는 일반 표현식을 지원합니다.

네임스페이스

네임스페이스는 선언의 가시성을 제어하는 데 사용되는 기존 액세스 지정자(public, private, protected)와 유사합니다. 네임스페이스는 사용자 정의 액세스 지정자로 작동하며 네임스페이스의 이름은 임의로 지정할 수 있습니다. 네임스페이스는 충돌을 방지하기 위해 URI(Universal Resource Identifier)와 함께 사용되며 E4X를 사용하여 작업하는 경우 XML 네임스페이스를 나타내는 데 사용될 수도 있습니다.

새 프리미티브 유형

ActionScript 3.0에는 숫자 유형으로 Number, int 및 uint 세 가지가 있습니다. Number는 배정밀도, 부동 소수점 숫자를 나타냅니다. int 유형은 ActionScript 코드에서 CPU의 신속한 정수 계산 기능을 이용할 수 있는 부호 있는 32비트 정수입니다. int 유형은 정수가 사용되는 루프 카운터 및 변수에 적합합니다. uint 유형은 RGB 색상 값, 바이트 수 등에 적합한 부호 없는 32비트 정수 유형입니다. 이에 비해 ActionScript 2.0에는 숫자 유형으로 Number 하나만 있습니다.

API 기능

ActionScript 3.0의 API에는 저수준에서 객체를 제어할 수 있는 여러 가지 클래스가 포함되어 있습니다. 언어의 구조는 이전 버전보다 직관적으로 설계되었습니다. 클래스가 너무 많아 여기에서 모두를 자세하게 다룰 수 없지만 클래스 간의 중요한 차이점에 대해서는 알고 있는 것이 좋습니다.

DOM3 이벤트 모델

DOM3(Document Object Model Level 3) 이벤트 모델에서는 이벤트 메시지를 생성하고 처리하는 표준 방식을 제공합니다. 이 이벤트 모델은 응용 프로그램 내에서 객체 간 상호 작용 및 통신을 허용하고, 객체의 상태를 유지하고, 변경 사항에 대응하도록 설계되어 있습니다. ActionScript 3.0 이벤트 모델은 World Wide Web Consortium DOM 레벨 3 이벤트 사양을 기반으로 하며 이전 버전의 ActionScript에서 제공되는 이벤트 시스템보다 명확하고 효율적인 메커니즘을 제공합니다.

이벤트 및 오류 이벤트는 flash.events 패키지에 있습니다. Flash Professional 구성 요소와 Flex 프레임워크에 동일한 이벤트 모델이 사용되므로 전체 Flash 플랫폼에서 일관된 이벤트 시스템이 구현됩니다.

표시 목록 API

표시 목록, 즉 응용 프로그램의 시각적인 요소가 모두 포함되어 있는 트리에 액세스하는 데 사용할 수 있는 API는 시각적인 프리미티브 값을 처리하는 클래스로 구성되어 있습니다.

Sprite 클래스는 사용자 인터페이스 구성 요소 같은 시각적 요소의 기본 클래스로 설계된 경량 구성 단위입니다. Shape 클래스는 벡터의 모양을 그대로 나타냅니다. 이러한 클래스는 new 연산자를 사용하여 무리 없이 인스턴스화될 수 있으며 언제든지 동적으로 다른 클래스의 하위 클래스가 될 수 있습니다.

이 경우 수준 관리는 자동으로 이루어집니다. 객체의 쌓이는 순서를 지정하고 관리할 수 있는 메서드가 제공됩니다.

동적 데이터 및 내용 처리

ActionScript 3.0에는 응용 프로그램에서 에셋 및 데이터를 로드하고 처리할 수 있는 메커니즘이 포함되어 있습니다. 이 메커니즘은 직관적이며 API 전체에서 일관성을 유지합니다. Loader 클래스는 SWF 파일과 이미지 에셋을 로드할 수 있는 단일 메커니즘 및 로드된 내용에 대한 세부 정보에 액세스할 수 있는 방법을 제공합니다. URLLoader 클래스는 데이터 기반 응용 프로그램에서 텍스트와 이진 데이터를 로드할 수 있는 별도의 메커니즘을 제공합니다. Socket 클래스는 포맷에 관계없이 서버 소켓에서 이진 데이터를 읽고 쓸 수 있는 방법을 제공합니다.

저수준 데이터 액세스

다양한 API에서 데이터에 대한 저수준 액세스를 제공합니다. URLStream 클래스는 데이터를 다운로드하는 동안 해당 데이터를 원시 이진 데이터로 액세스할 수 있게 합니다. ByteArray 클래스를 사용하면 이진 데이터에 대한 읽기, 쓰기 및 작업 기능을 최적화할 수 있습니다. 사운드 API의 SoundChannel 및 SoundMixer 클래스를 통해 사운드를 보다 정밀하게 제어할 수 있습니다. 보안 API에서는 보안 오류를 해결할 수 있도록 SWF 파일 또는 로드된 내용의 보안 권한에 대한 정보를 제공합니다.

텍스트를 사용한 작업

ActionScript 3.0에는 모든 텍스트 관련 API를 묶은 flash.text 패키지가 포함되어 있습니다. ActionScript 2.0의 TextFormat.getTextExtent() 메서드를 대체하는 TextLineMetrics 클래스는 텍스트 필드 내의 텍스트 행에 대한 자세한 메트릭을 제공합니다. TextField 클래스에는 텍스트 필드에 있는 텍스트 행 또는 단일 문자에 대한 특정 정보를 제공하는 저수준 메서드가 여러 개 포함되어 있습니다. 예를 들어 getCharBoundaries() 메서드는 문자의 테두리 상자를 나타내는 사각형을 반환합니다. getCharIndexAtPoint() 메서드는 지정된 위치에 있는 문자의 인덱스를 반환하고, getFirstCharInParagraph() 메서드는 단락에서 첫 번째 문자의 인덱스를 반환합니다. 행 수준의 메서드에는 지정된 텍스트 행의 문자 수를 반환하는 getLineLength() 및 지정된 줄의 텍스트를 반환하는 getLineText()가 있습니다. Font 클래스는 SWF 파일에 포함된 글꼴을 관리하는 방법을 제공합니다.

텍스트에 대한 보다 저수준의 제어를 위해 flash.text.engine 패키지의 여러 클래스는 Flash 텍스트 엔진을 구성합니다. 이 클래스 집합은 텍스트에 대한 저수준 제어를 제공하며 텍스트 프레임워크 및 구성 요소를 만드는 데 사용하기 위해 설계되었습니다.