구문

언어의 구문에는 실행 코드를 작성할 때 따라야 하는 규칙 집합이 정의되어 있습니다.

대/소문자 구분

ActionScript 3.0에서는 대/소문자를 구분합니다. 대/소문자만 다르고 이름이 같은 식별자는 서로 다른 식별자로 간주합니다. 예를 들어 다음 코드에서는 두 개의 서로 다른 변수를 만듭니다.

var num1:int; 
var Num1:int;

도트 구문

도트 연산자(.)는 객체의 속성 및 메서드에 액세스하는 방법을 제공합니다. 도트 구문을 사용하면 도트 연산자 및 속성 또는 메서드 이름 앞에 인스턴스 이름을 사용하여 클래스 속성 또는 메서드를 참조할 수 있습니다. 예를 들어 다음과 같은 클래스 정의를 생각해 봅시다.

class DotExample 
{ 
    public var prop1:String; 
    public function method1():void {} 
}

도트 구문을 사용하면 다음 코드에서 만든 인스턴스 이름을 사용하여 prop1 속성 및 method1() 메서드에 액세스할 수 있습니다.

var myDotEx:DotExample = new DotExample(); 
myDotEx.prop1 = "hello"; 
myDotEx.method1();

패키지를 정의할 때 도트 구문을 사용할 수 있습니다. 도트 연산자를 사용하여 중첩된 패키지를 참조합니다. 예를 들어 플래시 패키지 내에 중첩된 이벤트 패키지에 EventDispatcher 클래스가 있습니다. 다음 표현식을 사용하여 이벤트 패키지를 참조할 수 있습니다.

flash.events

이 표현식을 사용하여 EventDispatcher 클래스를 참조할 수도 있습니다.

flash.events.EventDispatcher

슬래시 구문

ActionScript 3.0에서는 슬래시 구문을 지원하지 않습니다. 슬래시 구문은 동영상 클립의 경로 또는 변수를 나타내기 위해 이전 버전의 ActionScript에서 사용되었습니다.

리터럴

리터럴은 코드에 직접 나타나는 값으로, 다음 예는 모두 리터럴입니다.

17 
"hello" 
-3 
9.4 
null 
undefined 
true 
false

리터럴을 묶어 복합 리터럴을 만들 수도 있습니다. 배열 리터럴은 대괄호([])로 묶이며 쉼표를 사용하여 배열 요소를 구분합니다.

배열 리터럴은 배열을 초기화할 때 사용할 수 있습니다. 다음 예제는 배열 리터럴을 사용하여 초기화된 두 개의 배열을 보여 줍니다. new 문을 사용하고 복합 리터럴을 Array 클래스 생성자에 매개 변수로 전달할 수 있지만 Object, Array, String, Number, int, uint, XML, XMLList, Boolean 등의 ActionScript 기본 클래스의 인스턴스를 인스턴스화할 때 직접 리터럴 값을 지정할 수도 있습니다.

// Use new statement. 
var myStrings:Array = new Array(["alpha", "beta", "gamma"]); 
var myNums:Array = new Array([1,2,3,5,8]); 
 
// Assign literal directly. 
var myStrings:Array = ["alpha", "beta", "gamma"]; 
var myNums:Array = [1,2,3,5,8];

리터럴을 사용하여 일반 객체를 초기화할 수도 있습니다. 일반 객체는 Object 클래스의 인스턴스입니다. 객체 리터럴은 중괄호({})로 묶이며 쉼표를 사용하여 객체 속성을 구분합니다. 각 속성은 콜론(:)으로 선언되며 이는 속성 이름과 속성 값을 구분합니다.

new 문을 사용하여 일반 객체를 만들고 객체 리터럴을 Object 클래스 생성자에 매개 변수로 전달할 수도 있고, 선언할 인스턴스에 직접 객체 리터럴을 지정할 수 있습니다. 다음 예제에서는 새 일반 객체를 만든 다음 세 가지 속성(propA, propBpropC)을 사용하여 객체를 초기화하는 두 가지 방법을 보여 줍니다. 여기서 속성 값은 각각 1, 2, 3으로 설정됩니다.

// Use new statement and add properties. 
var myObject:Object = new Object(); 
myObject.propA = 1; 
myObject.propB = 2; 
myObject.propC = 3; 
 
// Assign literal directly. 
var myObject:Object = {propA:1, propB:2, propC:3};

세미콜론

세미콜론(;)을 사용하여 명령문을 종결할 수 있습니다. 또는 세미콜론을 생략할 수도 있으며 이 경우 컴파일러에서 각 코드 행을 단일 명령문으로 간주합니다. 많은 프로그래머가 세미콜론을 사용하여 명령문을 끝내는 것에 익숙하기 때문에 명령문을 종결할 때 세미콜론을 사용하면 보다 쉽게 코드를 읽을 수 있습니다.

세미콜론을 사용하여 명령문을 종결할 경우 한 행에 여러 개의 명령문을 배치할 수 있지만 그럴 경우 코드를 읽기가 어려워질 수 있습니다.

괄호

ActionScript 3.0에서는 괄호(())를 세 가지 방식으로 사용할 수 있습니다. 첫 번째, 괄호를 사용하여 표현식에서 연산 순서를 변경할 수 있습니다. 괄호 안에 그룹화되어 있는 연산이 항상 가장 먼저 실행됩니다. 예를 들어 다음 코드에서는 괄호를 사용하여 연산 순서를 변경합니다.

trace(2 + 3 * 4); // 14 
trace((2 + 3) * 4); // 20

두 번째, 쉼표 연산자(,)가 포함된 괄호를 사용하여 다음 예제와 같이 일련의 표현식을 평가하고 최종 표현식의 결과를 반환합니다.

var a:int = 2; 
var b:int = 3; 
trace((a++, b++, a+b)); // 7

세 번째, 괄호를 사용하여 다음 예제와 같이 함수 또는 메서드에 하나 이상의 매개 변수를 전달할 수 있습니다. 다음 예제에서는 String 값을 trace() 함수에 전달합니다.

trace("hello"); // hello

주석

ActionScript 3.0 코드에 두 가지 유형의 주석, 즉 한 줄 주석 및 여러 줄 주석을 사용할 수 있습니다. 이러한 주석 처리 메커니즘은 C++ 및 Java에서의 주석 처리 메커니즘과 유사합니다. 컴파일러는 주석으로 표시된 텍스트를 무시합니다.

한 줄 주석은 두 개의 슬래시(//)로 시작하고 줄이 끝날 때까지 계속됩니다. 예를 들어 다음 코드에 한 줄 주석이 포함되어 있습니다.

var someNumber:Number = 3; // a single line comment

여러 줄 주석은 슬래시와 별표(/*)로 시작하고 별표와 슬래시(*/)로 끝납니다.

/* This is multiline comment that can span 
more than one line of code. */

키워드 및 예약어

예약어는 ActionScript에서 사용하도록 예약된 단어이기 때문에 코드에서 식별자로 사용할 수 없는 단어입니다. 예약어에는 컴파일러에 의해 프로그램 네임스페이스에서 제거된 사전식 키워드가 포함됩니다. 사전식 키워드를 식별자로 사용하면 컴파일러에서 오류를 보고합니다. 다음 표에 ActionScript 3.0의 사전식 키워드가 나와 있습니다.

as

break

case

catch

class

const

continue

default

delete

do

else

extends

false

finally

for

function

if

implements

import

in

instanceof

interface

internal

is

native

new

null

package

private

protected

public

return

super

switch

this

throw

to

true

try

typeof

use

var

void

while

with

     

식별자로 사용할 수 있지만 특정 컨텍스트에서 특별한 의미를 나타내는 구문 키워드라는 작은 키워드 집합이 있습니다. 다음 표에 ActionScript 3.0의 구문 키워드가 나와 있습니다.

each

get

set

namespace

include

dynamic

final

native

override

static

   

나중에 사용할 수 있는 예약어라고도 하는 식별자가 몇 가지 있습니다. 이러한 식별자 중 일부는 ActionScript 3.0을 통합하는 소프트웨어에서 키워드로 간주될 수 있지만 ActionScript 3.0에서는 예약어가 아닙니다. 코드에 이러한 여러 식별자를 사용할 수 있지만 후속 언어 버전에서 이들이 키워드로 표시될 수 있으므로 사용하지 않는 것이 좋습니다.

abstract

boolean

byte

cast

char

debugger

double

enum

export

float

goto

intrinsic

long

prototype

short

synchronized

throws

to

transient

type

virtual

volatile

   

상수

ActionScript 3.0에서는 상수를 만드는 데 사용할 수 있는 const 문을 지원합니다. 상수는 변경할 수 없는 고정된 값을 갖는 속성입니다. 상수에는 값을 한 번만 지정할 수 있으며 상수의 선언과 아주 근접한 위치에서 값을 지정해야 합니다. 예를 들어 상수를 클래스의 멤버로 선언하는 경우 선언의 일부로서 해당 상수에 값을 지정하거나 클래스 생성자 내에서 값을 지정할 수 있습니다.

다음 코드에서는 두 개의 상수를 선언합니다. 첫 번째 상수 MINIMUM은 선언문의 일부로 값이 지정됩니다. 두 번째 상수 MAXIMUM은 생성자에서 값이 지정됩니다. 엄격 모드에서는 초기화 시에만 상수 값을 지정할 수 있으므로 이 예제는 표준 모드에서만 컴파일됩니다.

class A 
{ 
    public const MINIMUM:int = 0; 
    public const MAXIMUM:int; 
 
    public function A() 
    { 
        MAXIMUM = 10; 
    } 
} 
 
var a:A = new A(); 
trace(a.MINIMUM); // 0 
trace(a.MAXIMUM); // 10

다른 방법으로 초기 값을 상수에 지정하려고 하면 오류가 발생합니다. 예를 들어 클래스 외부에서 MAXIMUM의 초기 값을 설정하려고 하면 런타임 오류가 발생합니다.

class A 
{ 
public const MINIMUM:int = 0; 
public const MAXIMUM:int; 
} 
 
var a:A = new A(); 
a["MAXIMUM"] = 10; // run-time error

ActionScript 3.0에는 사용자를 위해 다양한 상수가 정의되어 있습니다. 규칙에 따라 ActionScript의 상수에는 밑줄(_)로 구분된 단어와 함께 모든 대문자를 사용할 수 있습니다. 예를 들어 MouseEvent 클래스 정의에서는 이 이름 지정 규칙을 사용하여 상수를 정의하며, 각 상수는 마우스 입력과 연관된 이벤트를 나타냅니다.

package flash.events 
{ 
    public class MouseEvent extends Event 
    { 
    public static const CLICK:String = "click"; 
    public static const DOUBLE_CLICK:String = "doubleClick"; 
    public static const MOUSE_DOWN:String = "mouseDown"; 
    public static const MOUSE_MOVE:String = "mouseMove"; 
    ... 
    } 
}