맨위로가기

액션스크립트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

액션스크립트는 2000년 플래시 5에서 처음 도입된 객체 지향 프로그래밍 언어이다. 매크로미디어의 Flash 제작 도구를 위해 시작되었으며, 이후 어도비 시스템즈에서 어도비 플래시로 개발되었다. ActionScript는 Flash 4에서 스크립트 언어로 발전하여 변수, 연산자, 조건문, 루프 등의 기능을 지원했다. 2003년 ActionScript 2.0, 2006년 ActionScript 3.0으로 버전이 업데이트되었으며, ActionScript 3.0은 ECMAScript 4판을 기반으로 한다. 액션스크립트는 Flash Lite, AIR 등에서도 사용되었으며, 다양한 데이터 타입과 통합 개발 환경을 지원한다. SWF 파일의 코드 보호를 위한 난독화 도구도 존재한다.

더 읽어볼만한 페이지

  • 자바스크립트 프로그래밍 언어 계열 - 타입스크립트
    타입스크립트는 마이크로소프트에서 개발한 자바스크립트의 상위 집합으로, 정적 타입 지정, 타입 추론 등의 기능을 제공하여 코드의 안정성과 가독성을 높이는 언어이다.
  • 자바스크립트 프로그래밍 언어 계열 - 커피스크립트
    커피스크립트는 자바스크립트 작성을 간소화하기 위해 고안된, 간결하고 표현력이 풍부한 문법을 가진 프로그래밍 언어로서, 자바스크립트로 컴파일되며, 셀프 호스팅 컴파일러, 소스 맵, 문학적 프로그래밍을 지원한다.
  • 어도비 플래시 - 플래시 애니메이션
    플래시 애니메이션은 어도비 플래시 기술을 활용하여 제작되었으며, 1990년대 후반 웹에서 인기를 얻어 다양한 콘텐츠 제작에 활용되었고, 현재는 어도비 애니메이트로 이름이 변경되어 지속적인 지원을 받고 있다.
  • 어도비 플래시 - 플래시 비디오
    플래시 비디오는 어도비 플래시 환경에서 스크립트 처리 및 제어가 가능한 비디오 형식으로, FLV와 F4V 파일 형식이 있으며, 과거 유튜브 등에서 사용되어 인터넷 동영상 재생에 기여했으나 HTML5 등장 후 쇠퇴하였다.
  • 자유-오픈 소스 소프트웨어 - 마이크로소프트 코그니티브 툴킷
  • 자유-오픈 소스 소프트웨어 - ASP.NET
    ASP.NET은 .NET Framework 기반의 마이크로소프트 웹 애플리케이션 개발 플랫폼으로, ISAPI를 통해 동작하며 다양한 프로그래밍 모델과 개발 도구를 지원하고, 부트스트랩, OAuth 2.0, OData 등 최신 기술을 통합하여 강력한 웹 개발 환경을 제공한다.
액션스크립트 - [IT 관련 정보]에 관한 문서
개요
액션스크립트 아이콘
액션스크립트 아이콘
패러다임다중 패러다임: 객체 지향 (프로토타입 기반), 함수형, 명령형, 스크립팅
계열ECMAScript
발표 연도1998년
설계자게리 그로스먼
개발자매크로미디어 (현재는 어도비에 합병)
최신 릴리스 버전3.0
최신 릴리스 날짜2006년 6월 27일
타이핑강력한, 정적
구현체어도비 플래시 플레이어, 어도비 에어, 아파치 플렉스, 스케일폼 GFx
스코프어휘적
영향을 준 언어HyperTalk, JavaScript, Java
영향을 받은 언어Haxe, TypeScript
웹사이트어도비 액션스크립트
파일 형식 정보
파일 확장자.as
MIME 형식application/ecmascript

2. 역사

2000년 Flash 5에서 처음으로 "ActionScript"라는 이름으로 불리게 되었다.[12]

2003년 Flash MX 2004와 함께 출시된 액션스크립트 2.0에서는 객체 지향을 문법적으로 점차 지원하기 시작했다. 하지만 protected, internal 같은 접근제어자는 지원되지 않고, 패키지 문법은 따로 없어서 클래스 이름에 전부 쓰고, 사용자 정의 네임스페이스를 만들 수 없으며, 한 클래스가 구현 가능한 인터페이스는 하나 밖에 없었다.[12]

2007년 액션스크립트 3.0[26]이 나왔으며, ECMA 스크립트 4판[27]을 기반으로 한다. ActionScript는 처음에는 어도비 플래시(구 매크로미디어 Flash)에서 제작된 간단한 2차원 벡터 그래픽 애니메이션을 제어하기 위해 설계되었다. 초기에는 애니메이션에 초점을 맞추어, Flash 콘텐츠의 초기 버전은 대화형 기능이 거의 없어 스크립팅 기능이 매우 제한적이었다. 이후 버전에서는 스트리밍 미디어(예: 비디오 및 오디오)를 사용하여 웹 기반 게임과 리치 웹 애플리케이션을 만들 수 있는 기능이 추가되었다. 오늘날 ActionScript는 어도비 AIR를 통해 데스크톱 및 모바일 개발에 적합하며, 일부 데이터베이스 애플리케이션과 Make Controller Kit와 같은 기본적인 로봇 공학에도 사용된다.

Flash MX 2004는 Flash 애플리케이션 개발에 더 적합한 스크립팅 언어인 ActionScript 2.0을 도입했다. 애니메이션을 만드는 것보다 스크립팅을 하는 것이 시간 절약에 도움이 되며, 일반적으로 편집 시 더 높은 수준의 유연성을 제공한다.

Flash Player 9 알파(2006년)의 출현 이후, 새로운 버전의 ActionScript인 ActionScript 3.0이 출시되었다. 이 언어 버전은 이전에 ActionScript Virtual Machine 2로 불렸던 Tamarin (소프트웨어) 가상 머신(AVM2)의 버전에서 컴파일 및 실행되도록 설계되었으며, 이 또한 완전히 다시 작성되었다.[5] 이로 인해 ActionScript 3.0으로 작성된 코드는 일반적으로 Flash Player 9 이상을 대상으로 하며 이전 버전에서는 작동하지 않는다. 동시에, ActionScript 3.0은 JIT 컴파일 향상으로 인해 기존 ActionScript 코드보다 최대 10배 더 빠르게 실행된다.[6]

ActionScript는 매크로미디어의 Flash 제작 도구를 위해 객체 지향 프로그래밍 언어로 시작되었으며, 이후 어도비 시스템즈에서 Adobe Flash로 개발되었다.

2. 1. ActionScript 이전

1996년 Flash 1 출시 당시에는 스크립트 기능이 없었다.[7]

연도제품비고
1997년Flash 2버튼 기능과 함께 "버튼 액션", "프레임 액션"이 탑재되어, `getURL()`, `gotoAndPlay()`등이 가능해지고 프레임 간 이동이 가능해졌다.
1998년Flash 3`loadMovie()`, `fscommand()`등 여러 스크립트 작성이 가능해졌다.
1999년Flash 4변수, 사칙 연산, 문자열 처리, 조건 분기 등 "액션" 기능이 대폭 고도화되었다. 함수 호출에 해당하는 것은 프레임 이동인 `call()`이었다.


2. 2. ActionScript 1.0

2000년 Flash 5에서 처음으로 "ActionScript"라는 이름으로 불리게 되었으며, ECMAScript 기반으로 함수를 만들 수 있게 되었다.[12] 2002년 Flash MX에서는 "이벤트 핸들러 메서드"가 탑재되고, `instanceof`와 `===` 연산자가 도입되어 ECMAScript 준거성이 강화되었다.

처리계는 ActionScript Virtual Machine 1이다.

공개일제품비고
2000년Flash 5ECMAScript 기반으로 함수를 만들 수 있게 됨.
2002년Flash MX"이벤트 핸들러 메서드" 탑재. `instanceof` 와 `===` 가 도입되어 더욱 ECMAScript 준거가 됨.


2. 3. ActionScript 2.0

액션스크립트 2.0은 2003년 9월 Flash Player 7과 함께 Flash MX 2004가 출시되면서 소개된 액션스크립트 언어의 주요 개정판이다. 더 크고 복잡한 응용 프로그램 개발에 적합하도록 컴파일 시 타입 검사 및 `class` 및 `extends`와 같은 클래스 기반 문법을 도입했다.[12] 이를 통해 개발자는 변수에 유형 주석을 추가하여 특정 유형으로 제한하고, 컴파일 시점에 유형 불일치 오류를 확인할 수 있었다. 또한, JavaC++와 같이 클래스와 인터페이스를 만들 수 있는 클래스 기반 상속 구문을 도입했다. 이 버전은 ECMAScript 네 번째 에디션 초안 사양을 부분적으로 준수했다.[12]

액션스크립트 2.0 코드는 액션스크립트 1.0 바이트코드로 컴파일되어 이전 Flash Player 6에서도 실행할 수 있었다. 즉, 클래스 기반 상속 구문은 기존 프로토타입 기반 시스템 위에 얹어진 형태였다.[12]

다음 코드는 호환되는 모든 플레이어에서 작동하며, 화면의 깊이 0, 위치 (0, 0) (픽셀 단위)에 너비와 높이가 각각 100 픽셀인 텍스트 필드를 생성한다. 그런 다음 `text` 매개변수를 "" 문자열로 설정하고, 플레이어에 자동으로 표시된다.

```actionscript

createTextField("greet", 0, 0, 0, 100, 100);

greet.text = "Hello, world";

```

외부 ActionScript 2.0 클래스 파일을 작성할 때 위 예제는 `Greeter.as`라는 파일에 다음과 같이 작성할 수 있다.

```actionscript

class com.example.Greeter extends MovieClip

{

public function Greeter()

{

var txtHello: TextField = this.createTextField("txtHello", 0, 0, 0, 100, 100);

txtHello.text = "Hello, world";

}

}

```

공개일제품비고
2003년플래시 MX 2004클래스 기반의 객체 지향이 도입됨. 예외 처리가 추가됨.
2005년플래시 8


2. 4. ActionScript 3.0

2006년 6월, 어도비 플렉스 2.0과 이에 상응하는 플레이어인 플래시 플레이어 9와 함께 액션스크립트 3.0이 출시되었다.[26] 액션스크립트 3.0은 언어의 근본적인 재구성이 이루어졌으며, 이로 인해 완전히 다른 가상 머신을 사용하게 되었다. 플래시 플레이어 9는 두 개의 가상 머신을 포함하고 있는데, 액션스크립트 1.0과 2.0으로 작성된 코드를 위한 AVM1과 액션스크립트 3.0으로 작성된 콘텐츠를 위한 AVM2(Tamarin (소프트웨어))가 그것이다.[5] 이로 인해 ActionScript 3.0으로 작성된 코드는 일반적으로 Flash Player 9 이상을 대상으로 하며 이전 버전에서는 작동하지 않는다. 동시에, ActionScript 3.0은 JIT 컴파일 향상으로 인해 기존 ActionScript 코드보다 최대 10배 더 빠르게 실행된다.[6]

액션스크립트 3.0은 하드웨어 가속 (DirectX, OpenGL)에 대한 제한적인 지원을 추가했다.

언어 업데이트를 통해 몇 가지 새로운 기능이 도입되었다.

  • 컴파일 시간 및 런타임 유형 검사 — 유형 정보는 컴파일 시간과 런타임 모두에 존재한다.
  • 프로토타입 기반 상속 시스템과 분리된 클래스 기반 상속 시스템으로 성능이 향상되었다.
  • 패키지, 네임스페이스, 정규 표현식 지원.
  • 액션스크립트 1.0 및 2.0 바이트코드와 호환되지 않는 완전히 새로운 유형의 바이트코드로 컴파일된다.
  • API가 개정되었으며, 패키지로 구성되어 있다.
  • DOM 이벤트 처리 표준을 기반으로 하는 통합된 이벤트 처리 시스템.
  • XML 처리를 위해 ECMAScript for XML (E4X) 통합.
  • 런타임에 표시되는 내용을 완벽하게 제어하기 위해 플래시 런타임 시스템 디스플레이 목록에 직접 접근 가능.
  • ECMAScript 4판 초안 사양을 완전히 준수하는 구현.[27]
  • 동적 3D 객체에 대한 제한적인 지원.(X, Y, Z 회전 및 텍스처 매핑)


ActionScript 3.0은 ActionScript 2.0과 유사한 구문을 가지고 있지만, 객체 생성을 위한 다른 API 집합을 가지고 있다.

처리계는 ActionScript Virtual Machine 2가 되었다. 프레임워크도 전면적으로 개편되어 입체, 투시의 구현과 새로운 디스플레이 객체와 디스플레이 객체 컨테이너 체제가 도입되었다.

공개일제품비고
2006년 7월 28일Flex 2.0
2007년 3월 27일Flash CS3
2008년 2월 25일Flex 3.0
2008년 2월 25일AIR 1.0
2008년 12월 19일Flash CS4


2. 5. Flash Lite

Flash Lite영어는 휴대폰 및 소비자 가전 기기를 위해 특별히 개발된 Flash영어 기술의 경량 버전이다.

  • '''Flash Lite영어 1.0''' 및 '''Flash Lite영어 1.1''': Flash영어 4 ActionScript영어를 지원한다.[9]
  • '''Flash Lite영어 2.0''' 및 '''Flash Lite영어 2.1''': Flash영어 7 ActionScript영어 2.0을 지원한다.[9]
  • '''Flash Lite영어 3''': Flash영어 8 ActionScript영어 2.0 및 FLV 비디오 재생을 지원한다.[9]
  • '''Flash Lite영어 4''': 브라우저 플러그인으로 Flash영어 10 ActionScript영어 3.0 및 하드웨어 그래픽 가속을 지원한다.[9]

2. 6. AIR (Adobe Integrated Runtime)

어도비 AIR어도비가 개발한 Stage3D 엔진과 같은 일부 확장 콘텐츠 외에도 액션스크립트를 지원한다. 액션스크립트 3.0에서 사용할 수 있는 API(애플리케이션 프로그래밍 인터페이스)의 수도 크게 증가하였다.

3. 문법

ActionScript는 ECMAScript에서 파생된 자유 형식이므로, 개발자는 원하는 공백과 스타일을 사용하여 코드를 작성할 수 있다. 기본적인 구문은 ECMAScript에서 파생되었다.

ActionScript 1.0은 문법이 자바스크립트와 유사했지만, ActionScript 2.0부터는 클래스 기반의 객체 지향 언어가 되어 자바와 유사한 특징을 가지게 되었다. ActionScript에서는 모든 데이터를 객체로 간주한다. Flash에서는 프로그래밍 코드를 작성하는 장소가 여러 곳 있으며, 타임라인의 프레임 위에 작성한 경우와 클래스로서 외부 파일에 작성한 경우의 기술 방식이 약간 다르다. ActionScript 2.0 (Flash 8)까지는 무비 클립 또는 버튼 위에 프로그래밍 코드를 작성할 수 있었지만, ActionScript 3.0 (Flash CS3)에서 폐지되었다.

3. 1. ActionScript 2.0 문법

액션스크립트 2.0은 2003년 9월 Flash Player 7과 함께 Flash MX 2004가 출시되면서 등장한 액션스크립트 언어의 주요 개정판이다. 더 크고 복잡한 응용 프로그램에 적합한 언어를 원했던 사용자들의 요구에 따라, 액션스크립트 2.0은 컴파일 시 타입 검사 및 `class` 및 `extends`와 같은 클래스 기반 문법을 도입했다. 이를 통해 개발자들은 JavaC++와 같이 클래스와 인터페이스를 만들 수 있게 되어, 더 구조화된 객체 지향 프로그래밍 방식을 사용할 수 있게 되었다.[12]

액션스크립트 2.0 코드는 자유 형식이므로, 작성자가 원하는 만큼 공백이나 스타일을 사용하여 코드를 작성할 수 있다. 기본적인 구문은 ECMAScript에서 파생되었다.

다음은 ActionScript 2.0의 코드 예시이다.



class com.example.Greeter extends MovieClip

{

public function Greeter()

{

var txtHello:TextField = this.createTextField("txtHello", 0, 0, 0, 100, 100);

txtHello.text = "Hello, world";

}

}



이 코드는 화면에 "Hello, world"라는 텍스트를 표시하는 간단한 예시이다.

ActionScript 1.0은 문법이 자바스크립트와 유사했지만, ActionScript 2.0부터는 클래스 기반의 객체 지향 언어가 되어 자바와 유사한 특징을 가지게 되었다.

3. 2. ActionScript 3.0 문법

actionscript

var 변수명: 변수형

```

예:

```actionscript

var num: int;

```

함수 선언은 다음과 같은 형식으로 기술한다.

```actionscript

function 함수명(인수1: 인수1의 형, 인수2: 인수2의 형, ...): 반환값의 형 {

실행할 코드1

실행할 코드2

...

}

```

예:

```actionscript

function sum(a: Number, b: Number): Number {

return a + b;

}

```

반환값이 없는 경우에는 반환값의 형을 `void`로 한다[18]。`void`로 선언한 경우, 반환값은 `undefined`가 된다.

클래스 구문은 Java나 C#과 유사하다. 클래스의 접근 레벨은 패키지 외부에서도 접근할 수 있는 `public`과 패키지 내에서만 접근할 수 있는 `internal` 두 종류가 있으며, 생략할 경우 `internal`이 된다. 생성자, 메서드, 필드(멤버 변수, 멤버 상수)의 접근 레벨은 `public`, `internal`, `protected`, `private` 네 종류가 있으며, 생략할 경우 `internal`이 된다. 생성자는 생략 가능하며, 생략할 경우 기본 생성자가 자동으로 정의된다. 소스 파일 외부에 공개되는 클래스 이름은 해당 클래스를 포함하는 소스 파일 이름과 일치해야 한다[19]。소스 파일 이름은 "클래스이름.as"로 하며, 패키지와 같은 디렉터리에 위치해야 한다.

```actionscript

package 패키지명 {

public class 클래스명 {

// 생성자

public function 클래스명() {

}

}

}

4. 데이터 타입

ActionScript는 기본 데이터 타입과 복합 데이터 타입으로 구성된다.

ActionScript에서 모든 변수는 참조 유형이지만, `Boolean`, `Number`, `int`, `uint`, `String`을 포함하는 기본 데이터 타입에 속하는 객체는 변경 불가능하다.[14]

정수와 같은 가상 기본 유형의 변수가 함수에 전달되면 함수 내부에서 해당 변수를 변경해도 새 `int` 객체가 함수 내에서 생성되므로 원래 변수는 변경되지 않는다. 반면 `XML`과 같은 다른 (기본이 아닌) 데이터 유형의 변수가 함수에 전달되면 새 `XML` 객체가 생성되지 않으므로, 함수 내부에서 해당 변수를 변경하면 원래 변수도 변경된다.

일부 데이터 유형은 리터럴로 값을 할당할 수 있다. 다음은 그 예시이다.

```actionscript

var item1: String = "ABC";

var item2: Boolean = true;

var item3: Number = 12;

var item4: Array = ["a", "b", "c"];

var item5: Object = { name: "Actionscript", version: "3.0" };

var item6: XML = ; // 기본 XML은 따옴표로 묶이지 않는다.

```

ActionScript의 참조는 클래스의 인스턴스를 가리키는 포인터이며, 객체의 메모리 주소를 저장한다. 참조에 대한 연산은 객체의 메모리 주소에 대한 참조 값을 따르고 해당 객체에 대해 연산을 수행한다. ActionScript의 모든 객체는 직접 액세스하는 대신 참조를 통해 액세스된다.

```actionscript

var item1: XML = new XML("");

var item2: XML = item1;

item2.firstChild.attributes.value = 13;

// item1은 item2가 item1이 가리키는 것을 가리키기 때문에 item2와 같다.

// 둘 다 이제 이다.

```

`delete` 키워드를 사용하여 객체에 대한 참조만 제거할 수 있다. 실제 객체 및 데이터 제거는 Flash Player 가비지 수집기에 의해 수행되며, Flash 메모리 공간에서 기존 참조를 확인한다. 찾은 것이 없으면 (고아가 된 객체에 대한 다른 참조가 없음) 메모리에서 제거된다. 따라서 ActionScript의 메모리 관리는 신중한 애플리케이션 개발 계획이 필요하다.

```actionscript

var item1: XML = new XML("");

delete item1;

// 응용 프로그램의 다른 곳에 item1에 대한 다른 참조가 없으면

// 가비지 수집기의 다음 통과에서 제거된다.

4. 1. ActionScript 2.0 데이터 타입

ActionScript는 다른 데이터 유형을 만드는 데 사용되는 "기본" 또는 "단순" 데이터 유형으로 구성된다. 이러한 데이터 유형은 자바 데이터 유형과 매우 유사하다. ActionScript 3는 ActionScript 2를 완전히 다시 작성했기 때문에 데이터 유형과 상속이 변경되었다.[13]

'''ActionScript 2 최상위 데이터 유형'''

  • '''String''': "Hello World"와 같은 문자 목록
  • '''Number''': 임의의 숫자 값
  • '''Boolean''': "true" 또는 "false"만 가능한 단순한 이진 저장소
  • '''Object''': 객체는 모든 복잡한 데이터 유형이 상속하는 데이터 유형이다. 메서드, 함수, 매개 변수 및 기타 객체를 그룹화할 수 있다.


'''ActionScript 2 복합 데이터 유형'''

추가적인 "복합" 데이터 유형이 있다. 이러한 유형은 프로세서와 메모리를 더 많이 사용하며 많은 "단순" 데이터 유형으로 구성된다. AS2의 경우 이러한 데이터 유형 중 일부는 다음과 같다.

  • '''MovieClip''': 시각적 객체를 쉽게 사용할 수 있도록 하는 ActionScript 생성
  • '''TextField''': 단순한 동적 또는 입력 텍스트 필드이다. MovieClip 유형을 상속한다.
  • '''Button''': 4개의 프레임(상태)을 가진 단순한 버튼: Up, Over, Down 및 Hit. MovieClip 유형을 상속한다.
  • '''Date''': 특정 시점에 대한 정보에 액세스할 수 있다.
  • '''Array''': 데이터의 선형 저장을 허용한다.
  • '''XML''': XML 객체
  • '''XMLNode''': XML 노드
  • '''LoadVars''': Load Variables 객체는 HTTP POST 및 HTTP GET 변수를 저장하고 보낼 수 있다.
  • '''Sound'''
  • '''NetStream'''
  • '''NetConnection'''
  • '''MovieClipLoader'''
  • '''EventListener'''

4. 2. ActionScript 3.0 데이터 타입

액션스크립트 3.0은 다음과 같은 기본 데이터 타입을 제공한다.[13]

  • '''Boolean''': 부울 데이터 유형으로, `true` 또는 `false` (또는 1 또는 0) 값만 가질 수 있다. 다른 값은 허용되지 않는다.
  • '''int''': -2,147,483,648부터 2,147,483,647 사이의 32비트 정수이다.
  • '''Null''': `null` 값 하나만 포함한다. String 데이터 타입과 Object 클래스를 포함한 복잡한 데이터 타입을 정의하는 모든 클래스의 기본값이다.
  • '''Number''': 정수, 무부호 정수, 부동 소수점 숫자를 나타낼 수 있다. IEEE 부동 소수점 산술 표준(IEEE-754)에 지정된 64비트 배정밀도 형식을 사용한다. -9,007,199,254,740,992(-253)부터 9,007,199,254,740,992(253) 사이의 정수와 Number.MAX_VALUE(1.79769313486231e+308)부터 Number.MIN_VALUE(4.940656458412467e-324) 사이의 부동 소수점 값을 저장할 수 있다.
  • '''String''': 16비트 문자 시퀀스를 나타낸다. 문자열은 내부적으로 UTF-16 형식을 사용하여 유니코드 문자로 저장된다.
  • '''uint''': 0부터 4,294,967,295 사이의 32비트 무부호 정수이다.
  • '''void''': `undefined` 값 하나만 포함한다. ActionScript 3.0에서 Object 인스턴스의 기본값은 `null`이다.


ActionScript 3.0은 다음과 같은 복합 데이터 타입도 제공한다.[13]

  • '''Array''': 데이터 목록을 포함한다. ActionScript 3는 자료형을 명시하는 언어이지만, 배열의 내용은 모든 유형이 될 수 있으며, 값을 가져온 후 원래 유형으로 다시 형 변환해야 한다. (형식화된 Array 지원은 최근 Vector 클래스에 추가되었다.)
  • '''Date''': 날짜/시간 디지털 표현을 포함하는 날짜 객체이다.
  • '''Error''': 예외로 던져질 때 런타임 오류 보고를 허용하는 일반 오류 객체이다.
  • '''flash.display:Bitmap''': 애니메이션이 없는 비트맵 표시 객체이다.
  • '''flash.display:MovieClip''': 애니메이션 무비 클립 표시 객체이다. 기본적으로 Flash 타임라인은 MovieClip이다.
  • '''flash.display:Shape''': 애니메이션이 없는 벡터 모양 객체이다.
  • '''flash.display:SimpleButton''': "up", "over", "down" 상태와 임의의 히트 영역을 지원하는 간단한 대화형 버튼 유형이다.
  • '''flash.display:Sprite''': 타임라인이 없는 표시 객체 컨테이너이다.
  • '''flash.media:Video''': 직접(프로그레시브 다운로드) 또는 스트리밍(RTMP) 전송을 지원하는 비디오 재생 객체이다. Flash Player 버전 9.0.115.0부터 표준 Flash 비디오(FLV) 콘텐츠와 함께 H.264/MP4 고화질 비디오 형식도 지원된다.
  • '''flash.text:TextField''': 동적이고 선택적으로 대화형 텍스트 필드 객체이다.
  • '''flash.utils:ByteArray''': 바이너리 바이트 데이터의 배열을 포함한다.
  • '''flash.utils:Dictionary''': 사전은 모든 데이터 유형의 키를 포함할 수 있는 Object의 변형이다(Object는 항상 문자열을 키로 사용한다).
  • '''Function''': 모든 Flash 메서드 정의의 핵심 클래스이다.
  • '''Object''': Object 데이터 유형은 Object 클래스에 의해 정의된다. Object 클래스는 ActionScript의 모든 클래스 정의의 기본 클래스 역할을 한다. 기본 형태의 객체는 키-값 쌍을 포함하는 연관 배열로 사용할 수 있으며, 여기서 키는 문자열이고 값은 모든 유형일 수 있다.
  • '''RegExp''': 문자열에 대한 정규식 객체이다.
  • '''Vector''': Flash Player 10 이상에서 게시할 때 지원되는 배열의 변형이다. 벡터는 형식화된 밀집 Array(값은 정의되거나 `null`이어야 함)이며 고정 길이일 수 있으며, 값을 가져올 때 경계가 검사된다. 벡터는 Array보다 유형 안전성이 높을 뿐만 아니라 성능도 빠르다.
  • '''XML''': E4X(표준 ECMA-357)를 기반으로 한 수정된 XML 객체이다. 노드 및 속성은 ActionScript 2.0 객체와 다르게 액세스된다(XMLDocument라는 레거시 클래스는 이전 버전과의 호환성을 위해 제공된다).
  • '''XMLList''': XML 클래스의 다양한 콘텐츠 조회를 위한 배열 기반 객체이다.


ActionScript는 기본 유형과 참조 유형을 구분하지 않는다. ActionScript에서 모든 변수는 참조 유형이다. 그러나 Boolean, Number, int, uint, String을 포함하는 기본 데이터 유형에 속하는 객체는 변경 불가능하다.[14]

함수에 정수와 같은 가상 기본 유형의 변수가 전달되면 함수 내부에서 해당 변수를 변경해도 새 int 객체가 함수 내에서 생성되므로 원래 변수는 변경되지 않는다. XML과 같은 다른 (기본이 아닌) 데이터 유형의 변수가 함수에 전달되면 새 XML 객체가 생성되지 않으므로 함수 내부에서 해당 변수를 변경하면 원래 변수도 변경된다.

5. 코드 보호

Flash SWF 파일은 다른 바이트코드 파일 형식과 마찬가지로 디컴파일될 수 있다. 디컴파일을 방지하기 위해 ActionScript 난독화 도구를 사용하여 코드를 변환하여 디컴파일러의 출력을 깨뜨릴 수 있다.[15][16][17] 난독화 도구는 식별자 이름 변경, 제어 흐름 변환, 데이터 추상화 변환 등의 기법을 사용하여 디컴파일된 코드를 이해하기 어렵게 만든다.

6. 통합 개발 환경 (IDE)

액션스크립트는 주로 SWF 파일 개발용 소프트웨어인 어도비 플래시 및 어도비 플렉스에서 스크립트로 기술되었다.

어도비는 액션스크립트 편집을 위한 개발 환경을 제공했지만, 일반적인 IDE과는 다른 점이 많아 일부 프로그래머들에게는 평판이 좋지 않았다. 플렉스 빌더는 이클립스 플러그인 형태로 편집 환경을 제공하여, 다른 언어 숙련자들이 쉽게 개발할 수 있도록 지원했고, 플렉스 SDK는 어도비에서 무상으로 제공되었다.

어도비 외 회사에서도 ActionScript 개발을 위한 IDE를 제공했다. 무료 오픈 소스 제품도 출시되었으며, Motion-Twin ActionScript 2 Compiler[20]는 어도비 제품보다 컴파일 속도가 빠른 것으로 알려졌다.

제품명비고
LiveSwif[21]타임라인 방식. ActionScript 지원.
ParaFla!이벤트 방식. ActionScript 지원.
Suzuka[22]타임라인 방식. ActionScript 지원.
wonderfl브라우저에서 ActionScript 입력, 서버 측 컴파일, 무료 개발 가능.
CodeDrive[23]
ActionScript 3/Flash IDE
FlashDevelopAdobe AIR 기반 소프트웨어 및 Flash 콘텐츠 제작 가능, 무료 개발 환경


6. 1. 어도비 IDE

어도비는 SWF 파일 개발용 소프트웨어인 어도비 플래시 및 어도비 플렉스에서 스크립트로 기술되는 액션스크립트 편집을 위한 개발 환경을 제공했다. 어도비가 제공하는 애플리케이션들은 일반적인 통합 개발 환경과는 다른 점이 많아, 이에 익숙한 프로그래머들에게는 평판이 좋지 않은 경향이 있었다. 어도비 플렉스(Adobe Flex) 빌더는 이클립스(Eclipse) 플러그인 형태로 편집 환경을 제공하여, 다른 언어 숙련자들이 쉽게 개발할 수 있도록 지원했다. 또한 어도비 플렉스 SDK는 어도비에서 무상으로 제공되었다. 이 외의 통합 개발 환경으로는 플래시디벨롭(FlashDevelop) 등이 있다.

6. 2. 기타 IDE

어도비 외 회사에서 제공하는 IDE도 ActionScript 개발에 사용되었다. 무료 오픈 소스 제품도 출시되었으며, Motion-Twin ActionScript 2 Compiler[20]는 어도비 제품보다 컴파일 속도가 빠른 것으로 알려져 있다.

제품명비고
LiveSwif[21]타임라인 방식. ActionScript를 지원한다.
ParaFla!이벤트 방식. ActionScript를 지원한다.
Suzuka[22]타임라인 방식. ActionScript를 지원한다.
wonderfl브라우저에서 ActionScript를 입력하고, 서버 측에서 컴파일을 수행하여 무료로 개발할 수 있다.
CodeDrive[23]
ActionScript 3/Flash IDE
FlashDevelopAdobe AIR 기반 소프트웨어 및 Flash 콘텐츠를 제작할 수 있는 무료 개발 환경


참조

[1] 웹사이트 How ActionScript foreshadowed TypeScript https://javascript.p[...] 2022-07-09
[2] 간행물 RFC 4329
[3] 웹사이트 Apple's lost decade, HyperCard, and what might NOT have been if Apple then was like Apple is today https://web.archive.[...] 2014-12-04
[4] 웹사이트 ActionScript 3 Language Specification https://web.archive.[...] 2016-11-12
[5] 웹사이트 Six reasons to use ActionScript 3.0 https://www.adobe.co[...] Adobe Systems Incorporated 2010-06-18
[6] 웹사이트 ActionScript 3.0 overview https://www.adobe.co[...] Adobe Systems Incorporated 2010-06-18
[7] 웹사이트 Standard ECMA-262 http://www.ecma-inte[...] Ecma-international.org 2013-04-22
[8] 웹사이트 ECMAScript 4 Netscape Proposal https://web.archive.[...] Netscape 2019-04-11
[9] 웹사이트 Flash Player | Adobe Flash Player 11 | Overview https://www.adobe.co[...] Adobe.com 2013-04-22
[10] 웹사이트 Adobe Labs – Adobe Flash Player 10.1 http://labs.adobe.co[...] Labs.adobe.com 2009-12-17
[11] 웹사이트 Flash Player 11 and AIR 3 Release Notes for Adobe Labs https://web.archive.[...]
[12] 웹사이트 Flash Player 11, AIR 3 Release Notes https://helpx.adobe.[...] 2016-10-07
[13] 웹사이트 Data type descriptions + Flash CS3 Documentation http://livedocs.adob[...] 2007-07-13
[14] 웹사이트 Flex 3 – Function parameters https://web.archive.[...] Livedocs.adobe.com 2009-12-17
[15] 웹사이트 Third party review of another decompiler https://web.archive.[...] Flashmagazine.com 2013-04-22
[16] 웹사이트 Customer comments on one Flash decompiler http://www.topsharew[...] Topshareware.com 2013-04-22
[17] 웹사이트 Customer comments on another Flash product http://www.macupdate[...] 2006-08-18
[18] 문서 ActionScript 2.0에서는 Void。
[19] 웹사이트 스테ート먼트、키워드、디렉티브 - Adobe ActionScript® 3(AS3 )API 리ファレンス https://help.adobe.c[...]
[20] URL http://tech.motion-t[...]
[21] URL http://www.liveswif.[...]
[22] URL http://www.cty-net.n[...]
[23] URL http://www.codedrive[...]
[24] 간행물 RFC 4329
[25] 웹인용 Apple's lost decade, HyperCard, and what might NOT have been if Apple then was like Apple is today http://www.zdnet.com[...] 2011-04-17
[26] URL http://livedocs.macr[...]
[27] 웹인용 ECMAScript4 http://developer.moz[...] 2008-03-03



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com