This page was saved using jaction on 09/04/06 8:33:20.
Address: http://flexdocs.kr/docs/flex2/langref/statements.html
Title: 명령문(statement), 키워드, 지시문 (Flex™ 2 레퍼런스 가이드)  •  Size: 181562

명령문(statement)란, 실행시의 액션을 실행 또는 지정하는 언어 엘리먼트입니다. 예를 들어,return 명령문(statement)는, 실행된 함수의 결과의 값을 돌려줍니다. if 명령문(statement)는, 조건을 평가해, 다음에 실시해야 할 처리를 판정합니다. switch 명령문(statement)는, ActionScript 명령문(statement)의 분기 구조를 작성합니다.

속성 키워드는 정의의 의미를 변경합니다. 또, 클래스, 변수, 함수, 및 namespace의 정의에 적용할 수 있습니다. 정의 키워드는, 변수, 함수, 클래스, 및 인터페이스등의 엔티티를 정의하는 경우에 사용합니다. 프라이머리식의 키워드는 리터럴치를 나타냅니다. 예약어(reserved word)의 리스트에 대해서는, 「ActionScript 3.0 의 프로그래밍」을 참조해 주세요.

지시문에는 명령문(statement)와 정의가 포함되어 컴파일시 또는 실행시에 적용할 수 있습니다. 다음의 겉(표)에서는, 명령문(statement) 및 정의 이외의 지시문은, 지시문으로서 label 되고 있습니다.

See also

문장구조법

 명령문(statement) 일람
 break 루프 (for,for..in,for each..in,do..while, 또는 while)로 사용합니다. 또는,switch 명령문(statement)내의 특정의 케이스로 관련하는 명령문(statement)의 블록내에서도 사용합니다.
 case switch 명령문(statement)의 점프 타겟을 정의합니다.
 continue 루프의 마지막까지 제어가 통과했는지와 같이, 가장 안쪽의 루프내의 나머지의 명령문(statement)를 모두 스킵 해, 루프의 다음의 반복을 개시합니다.
 default switch 명령문(statement)의 디폴트 케이스를 정의합니다.
 do..while while 루프를 닮아 있습니다만, 조건의 최초의 평가에 앞서 명령문(statement)가 실행되는 점이 다릅니다.
 else if 명령문(statement)의 조건이 false 를 돌려주었을 때에 실행하는 명령문(statement)를 지정합니다.
 for init (초기화) 식을 1 회만 평가하고 나서, 루프 순차 순서를 개시합니다.
 for..in object의 동적 property 또는 배열의 엘리먼트에 대해서 반복 처리를 실시해, 각 property 또는 엘리먼트에 대해서 statement 를 실행합니다.
 for each..in 콜렉션의 아이템에 대해서 반복 처리를 실시해, 각 아이템에 대해서 statement 를 실행합니다.
 if 조건을 평가해, 다음의 명령문(statement)를 실행할지 어떨지를 판정합니다.
 label 명령문(statement)를 break 또는 continue 로 참조 가능한 식별자와 관련짓습니다.
 return 실행을 호출해 원의 함수에 즉시 돌려줍니다.
 super Methods나 constructor    의 Super 클래스 또는 친버젼을 호출합니다.
 switch 식의 값에 응해, 명령문(statement)에의 전송을 제어합니다.
 throw catch 코드 블록에 의해 처리 (캐치)할 수 있는 에러를 생성 (슬로우)합니다.
 try..catch..finally 에러가 발생할 가능성이 있는 코드 블록을 둘러싸, 그 에러에 대처합니다.
 while 조건을 평가해, 조건의 평가 결과가 true 가 되는 경우는 명령문(statement)를 실행합니다. 그 후, 루프의 선두로 돌아가, 다시 조건을 평가합니다.
 with 명령문(statement)의 실행에 사용하는 디폴트의 object를 설정합니다. 기술하는 코드의 양을 줄일 수가 있습니다.
 속성 키워드 일람
 dynamic 실행시에 추가된 dynamic property를 클래스의 인스턴스로 보유하도록 지정합니다.
 final Methods의 재정의(override) 또는 클래스의 확장을 제한합니다.
 internal 클래스, 변수, 정수, 또는 함수에 같은 패키지내의 모든 호출원으로부터 액세스 할 수 있도록지정합니다.
 native Flash Player 가 native code로 함수 또는 Methods를 Implements하도록 지정합니다.
 override Methods로 Inheritance한 Methods를 옮겨놓도록 지정합니다.
 private 변수, 정수, Methods, 또는 namespace를 정의한 클래스로부터로만 액세스 할 수 있도록 지정합니다.
 protected 변수, 정수, Methods, 또는 namespace를 정의한 클래스와 그 서브 클래스로부터로만 액세스 할 수 있도록 지정합니다.
 public 클래스, 변수, 정수, 또는 Methods에 모든 호출원으로부터 액세스 할 수 있도록 지정합니다.
 static 변수, 정수, 또는 Methods가 클래스의 인스턴스는 아니고 클래스에 속하도록 지정합니다.
 정의 키워드 일람
 ... (rest) parameter 함수가 임의의 수의 칸마 단락의 인수를 취하도록(듯이) 지정합니다.
 class 독자로 정의한 Methods와 property를 공유하는 object를 인스턴스화할 수 있는 클래스를 정의합니다.
 const 정수 (값을 1 회만 할당할 수가 있는 변수)를 지정합니다.
 extends 다른 클래스의 서브 클래스로 하는 클래스를 정의합니다.
 function 특정의 태스크를 실행하도록(듯이) 정의한 일련의 명령문(statement)로 구성됩니다.
 get property와 같이 읽어내 가능한 Methods인 getter 를 정의합니다.
 implements 클래스에서 인터페이스를 Implements할지 어떨지를 지정합니다.
 interface 인터페이스를 정의합니다.
 namespace 정의의 가시성을 제어할 수 있습니다.
 package 다른 스크립트로부터 읽어들인 개별의 그룹에 코드를 분류할 수 있습니다.
 set Public 인터페이스로 property로서 표시되는 Methods인 setter 를 정의합니다.
 var 변수를 지정합니다.
 지시문 일람
 default xml namespace default xml namespace 지시문은, XML object에 사용하는 디폴트의 namespace를 설정합니다.
 import 외부에서 정의된 클래스 및 패키지를 코드로 사용할 수 있도록(듯이) 합니다.
 include 지정한 파일내의 커멘드를 호출해 원의 스크립트에 인클루드 해, 그 스크립트의 일부인것 같이 취급합니다.
 use namespace 지정한 namespace를 개방적인 namespace세트에 추가합니다.
 namespace 일람
 AS3 prototype property 대신에 고정 property로서 사용하는, ActionScript 코어 클래스의 Methods 및 property를 정의합니다.
 flash_proxy Proxy 클래스의 Methods를 정의합니다.
 object_proxy ObjectProxy 클래스의 Methods를 정의합니다.
 프라이머리식의 키워드 일람
 false false 를 나타내는 불리언 값입니다.
 null 변수에 할당할 수가 있는 특별한 값, 또는 데이터가 없는 경우에 함수로부터 돌려주어지는 특수한 값입니다.
 this Methods에 포함되는 object에의 참조입니다.
 true true 를 나타내는 불리언 값입니다.
명령문(statement), 키워드, 지시문의 상세
... (rest) parameterdefinition keyword
사용법
function functionName(parameter0, parameter1, ...rest){ 
	// 명령문(statement)
} 

함수가 임의의 수의 칸마 단락의 인수를 취하도록(듯이) 지정합니다. 인수의 리스트는 배열이 되어, 함수 본체를 개입시켜 액세스 할 수 있습니다. 배열의 이름을 Parameters 선언에 있다 ... 캐릭터의 뒤로 지정합니다. Parameters에는, 예약어(reserved word)가 아닌 이름을 지정할 수가 있습니다.

다른 Parameters와 함께 사용하는 경우는, 마지막 Parameters로서 ... (rest) Parameters 선언을 지정할 필요가 있습니다. ... (rest) Parameters 배열은, 함수에게 건네진 인수의 수가 다른 Parameters의 수보다 많은 경우만 작성됩니다.

칸마 단락 리스트의 인수는, 각각 배열의 엘리먼트로서 배치됩니다. Array 클래스의 인스턴스를 건네주는 경우는, 배열 전체가 ... (rest) Parameters 배열의 1 개의 엘리먼트에 배치됩니다.

이 Parameters를 사용하면,arguments object에 액세스 할 수 없게 됩니다. ... (rest) Parameters에는 arguments 배열 및 arguments.length property와 같은 기능이 있습니다만,arguments.callee 와 같은 기능은 없습니다. ... (rest) Parameters를 사용하기 전에,arguments.callee 를 사용할 필요는 없습니다.

Parameters
rest:* — 함수에게 건네지는 인수의 배열명을 나타내는 식별자입니다. 이 Parameters의 이름을 rest 로 할 필요는 없습니다. 키워드 이외의 임의의 이름을 붙일 수가 있습니다. ... (rest) Parameters의 데이터형을 Array 와 지정할 수 있습니다만, 혼란의 원인이 되는 경우가 있습니다. Parameters는 칸마 단락의 값의 리스트를 받아들입니다만, Array 클래스의 인스턴스와는 다릅니다.

Example
다음의 예에서는,...(rest) Parameters를 2 개가 다른 함수로 사용합니다. 최초의 함수 traceParams 는,rest 배열에 있는 각 인수에 대해 trace() 함수를 호출합니다. 다음의 함수 average() 는 인수의 리스트를 취득해, 그 평균을 돌려줍니다. 2 번째의 함수의 Parameters에는 다른 이름 args 를 사용하고 있습니다.
package {
    import flash.display.MovieClip;
    
    public class RestParamExample extends MovieClip {
        public function RestParamExample() {
            traceParams(100, 130, "two"); // Output: 100,130, two
            trace(average(4, 7, 13));     // Output: 8
        }
    }
}


function traceParams(... rest) {
     trace(rest);
 }
 
function average(... args) : Number{
    var sum:Number = 0;
    for (var i:uint = 0; i < args.length; i++) {
        sum += args[i];
    }
    return (sum / args.length);
}

See also

AS3namespace 

prototype property 대신에 고정 property로서 사용하는, ActionScript 코어 클래스의 Methods 및 property를 정의합니다. "-as3" 컴파일러 옵션을 true (Flex Builder 2 에서는 디폴트의 설정) 로 설정하면, AS3 namespace은 자동적으로 모든 코어 클래스에 대해서 오픈이 됩니다. 즉, 코어 클래스의 인스턴스에서는, 클래스의 prototype object에 할당할 수 있던 같은 property 및 Methods의 버젼 대신에, 고정 property 및 Methods를 사용합니다. 고정 property를 사용하면 퍼포먼스가 향상합니다만, ECMAScript Edition 3 언어 사양 (ECMA-262)과의 후방 호환성이 없어집니다.

See also

breakstatement 
사용법

break [label]

루프 (for,for..in,for each..in,do..while, 또는 while)로 사용합니다. 또는,switch 명령문(statement)내의 특정의 케이스로 관련하는 명령문(statement)의 블록내에서도 사용합니다. break 명령문(statement)를 루프내에서 사용하면, 루프 본체의 나머지의 부분을 스킵 해, 반복 처리를 정지해, 루프 명령문(statement)의 다음의 명령문(statement)를 실행합니다. break 명령문(statement)를 switch 내에서 사용하면,case 블록내의 나머지의 명령문(statement)를 스킵 해, 둘러싸고 있는 switch 명령문(statement)에 계속되는 최초의 명령문(statement)에 점프 합니다.

네스트 되고 있는 루프내에서는,break 는, 그 루프의 나머지의 부분을 스킵 하는 것만으로, 네스트 되고 있는 일련의 루프는 종료하지 않습니다. 네스트 되고 있는 일련의 루프를 종료하려면 ,label 또는 try..catch..finally 를 사용합니다.

break 명령문(statement)에는 옵션의 label를 지정할 수 있습니다만, 이 label는 외측의 명령문(statement)의 label와 일치하고 있을 필요가 있습니다. 외측의 명령문(statement)의 label와 일치하지 않는 label를 사용하면, 문장구조법 에러가 발생합니다. label 첨부의 break 명령문(statement)를 사용하면, 네스트 된 루프 명령문(statement),switch 명령문(statement), 또는 block 명령문(statement)의 복수의 레벨을 종료할 수 있습니다. 예에 대해서는,label 명령문(statement)의 항목을 참조해 주세요.

Parameters
label:* — 명령문(statement)와 관련지을 수 있었던 label의 이름입니다.

Example
다음의 예에서는,break 를 사용해 엔들레스 루프로부터 빠져 나갑니다.
var i:int = 0;
while (true) { 
    trace(i); 
    if (i >= 10) { 
        break; // this will terminate/exit the loop 
    } 
    i++; 
} 
/* output:
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10*/

See also

casestatement 
사용법
case jumpTarget:statements

switch 명령문(statement)의 점프 타겟을 정의합니다. jumpTarget Parameters와 엄밀한 등가 (===)를 사용하고 있는 switch 명령문(statement)의 expression Parameters가 동일한 경우,break 명령문(statement)가 발견되는지, 또는 switch 명령문(statement)의 끝나에 도달할 때까지,statements Parameters내의 명령문(statement)가 실행됩니다.

case 명령문(statement)를 switch 명령문(statement)의 외측에서 사용하면, 에러가 발생해, 스크립트는 컴파일 되지 않습니다.

메모 : statements Parameters는, 반드시 break 명령문(statement)로 종료합니다. statements Parameters의 break 명령문(statement)를 생략 하면,switch 명령문(statement)가 종료하지 않고 , 다음의 case 명령문(statement)가 실행됩니다.

Parameters
jumpTarget:* — 임의의 식입니다.
statements:* jumpTargetswitch 명령문(statement)의 조건식에 일치했을 경우에 실행되는 명령문(statement)입니다.

Example
다음의 예에서는,switch 명령문(statement)의 thisMonth 의 점프 타겟을 정의하고 있습니다. thisMonthcase 명령문(statement)내의 식과 동일한 경우는, 명령문(statement)가 실행됩니다.
var thisMonth:int = new Date(). getMonth(); 
switch (thisMonth) { 
    case 0 : 
        trace("January"); 
        break; 
    case 1 : 
        trace("February"); 
        break; 
    case 5 : 
    case 6 : 
    case 7 : 
        trace("Some summer month"); 
        break; 
    case 8 : 
        trace("September"); 
        break; 
    default : 
        trace("some other month"); 
}

See also

classdefinition keyword 
사용법
[dynamic] [public | internal] [final] class className [ extends superClass ] [ implements interfaceName[, interfaceName... ] ] { 
	// 여기에 클래스 정의를 기술
}

클래스를 정의합니다. 독자로 정의한 Methods와 property를 공유하는 object를 인스턴스화할 수 있습니다. 예를 들어, 운송장 추적 시스템을 작성하는 경우에, 운송장 클래스를 정의해, 각 운송장으로 필요하게 되는 모든 Methods와 property를 정의합니다. 그 후,new Invoice() 커멘드를 사용해, 운송장 object를 작성합니다.

ActionScript 원시 파일 마다 Public 클래스를 1 개 지정할 수 있습니다. 같은 파일에 Public 클래스 이외의 클래스를 포함하는 경우, Public 클래스는 다른 모든 클래스아래에 배치할 필요가 있습니다. 파일내의 마지막 클래스의 이름은, 그 클래스를 포함한 ActionScript 원시 파일의 이름과 일치할 필요가 있습니다. 원시 파일의 이름은, 클래스명에 파일 확장자(extension) . as 를 붙인 이름일 필요가 있습니다. 예를 들어, 어느 클래스에 Student 라는 이름을 붙이는 경우, 이 클래스를 정의하는 파일의 이름은 Student.as 가 됩니다.

클래스 정의는 네스트 할 수 없습니다. 즉, 클래스 정의내에 다른 클래스를 정의할 수 없습니다.

실행시에 object가 다이나믹 property를 추가하거나 다이나믹 property에 액세스 하거나 할 수 있도록(듯이) 하는 경우는, 클래스 명령문(statement)의 전에 dynamic 키워드를 부가합니다. 인터페이스를 Implements하는 클래스를 선언하려면 ,implements 키워드를 사용합니다. 클래스의 서브 클래스를 작성하려면 ,extends 키워드를 사용합니다. 클래스는 1 개 밖에 확장할 수 없습니다만, 인터페이스는 복수 Implements할 수가 있습니다. implements 키워드와 extends 키워드는, 1 개의 명령문(statement)로 함께 사용할 수 있습니다. 다음의 예에서는,implements 키워드와 extends 키워드의 일반적인 사용법을 나타냅니다.

class C implements Interface_i, Interface_j // OK 
class C extends Class_d implements Interface_i, Interface_j // OK 
class C extends Class_d, Class_e // not OK 

Parameters
className:Class — 클래스의 완전 수식명입니다.

Example
다음의 예에서는, Plant 라는 이름의 클래스를 작성합니다. Plant constructor    은 2 개의 Parameters를 받습니다.
// Filename Plant.as 
package {
  public class Plant { 
    // Define property names and types 
    private var _leafType:String; 
    private var _bloomSeason:String; 
    // Following line is constructor 
    // because it has the same name as the class 
    public function Plant(param_leafType:String, param_bloomSeason:String) { 
        // Assign passed values to properties when new Plant object is created 
        _leafType = param_leafType; 
        _bloomSeason = param_bloomSeason; 
    } 
    // Create methods to return property values, because best practice 
    // recommends against directly referencing a property of a class 
    public function get leafType() :String { 
        return _leafType; 
    } 
    public function get bloomSeason() :String { 
        return _bloomSeason; 
    } 
  }
}
스크립트로,new 연산자를 사용해 Plant object를 작성합니다.
var pineTree:Plant = new Plant("Evergreen", "N/A"); 
// Confirm parameters were passed correctly 
trace(pineTree.leafType); 
trace(pineTree.bloomSeason); 

See also

constdefinition keyword 
사용법
const identifier = value 

정수 (값을 1 회만 할당할 수가 있는 변수)를 지정합니다.

데이터형의 뒤에 구두점 (:)을 붙여, 엄밀하게 정수를 형태 지정할 수 있습니다.

Parameters
identifier:* — 정수의 식별자입니다.

Example
다음의 예에서는, 값을 여러 차례 정수에 할당하려고 하면, 에러가 발생하는 것을 나타내고 있습니다.
const MIN_AGE:int = 21;
MIN_AGE = 18; // error
다음의 예에서는, 정수가 배열인 경우는,Array.push() 를 포함한 Array 클래스 Methods를 호출할 수가 있는 것을 나타내고 있습니다. 다만, 새로운 배열 리터럴을 할당할 수 없습니다.
const product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); 
product_array.push("Flex"); // array operations are allowed
product_array = ["Other"];  // assignment is an error
trace(product_array); 

See also

continuestatement 
사용법
continue [label]

루프의 마지막까지 제어가 통과했는지와 같이, 가장 안쪽의 루프내의 나머지의 명령문(statement)를 모두 스킵 해, 루프의 다음의 반복을 개시합니다. continue 명령문(statement)는 루프의 외부에서는 작용하지 않습니다. 네스트 된 루프에서는, 옵션의 label Parameters를 사용하면, 가장 안쪽의 루프 이외도 스킵 할 수 있습니다.

continue 명령문(statement)에는, 옵션의 label를 지정할 수 있습니다만, 이 label는 외측의 명령문(statement)의 label와 일치하고 있을 필요가 있습니다. 외측의 명령문(statement)의 label와 일치하지 않는 label를 사용하면, 문장구조법 에러가 발생합니다. label 첨부의 continue 명령문(statement)를 사용하면, 네스트 된 루프 명령문(statement)의 복수의 레벨을 스킵 할 수 있습니다.


Example
다음의 while 루프에서는,continue 명령문(statement)를 사용해, 3 의 배수가 검출되었을 때에 루프 본체의 나머지를 스킵 해, 루프의 상단에 점프 해, 조건을 재차 평가합니다.
var i:int = 0; 
while (i < 10) { 
    if (i % 3 == 0) { 
        i++; 
        continue; 
    } 
    trace(i); 
    i++; 
}

for 루프에서는,continue 명령문(statement)를 사용해, 루프 본체의 나머지를 스킵 할 수 있습니다. 다음의 예에서는,i % 3 으로 0 이 동일한 경우,trace(i) 명령문(statement)는 스킵 됩니다.

 
for (var i:int = 0; i < 10; i++) { 
    if (i % 3 == 0) { 
        continue; 
    } 
    trace(i); 
}

See also

defaultstatement 
사용법
default:statements 

switch 명령문(statement)의 디폴트 케이스를 정의합니다. 이 명령문(statement)가 실행되는 것은,switch 명령문(statement)의 expression Parameters가, 소정의 switch 명령문(statement)의 case 키워드에 계속되는 expression Parameters와 동일하지 않은 경우입니다 (엄밀한 등가 [===] 를 사용).

switch 명령문(statement)에 default 케이스 명령문(statement)는 필수가 아닙니다. default 케이스 명령문(statement)는, 리스트의 마지막에 둘 필요는 없습니다. default 명령문(statement)를 switch 명령문(statement)의 외측에서 사용하면, 에러가 발생해, 스크립트는 컴파일 되지 않습니다.

Parameters
statements:* — 임의의 명령문(statement)입니다.

Example
다음의 예에서는, 요일이 토요일 또는 일요일의 경우, 모든 case 명령문(statement)가 적용되지 않고,default 명령문(statement)가 실행됩니다.
var dayOfWeek:int = new Date(). getDay(); 
switch (dayOfWeek) { 
    case 1 : 
        trace("Monday"); 
        break; 
    case 2 : 
        trace("Tuesday"); 
        break; 
    case 3 : 
        trace("Wednesday"); 
        break; 
    case 4 : 
        trace("Thursday"); 
        break; 
    case 5 : 
        trace("Friday"); 
        break; 
    default : 
        trace("Weekend"); 
}

See also

default xml namespacedirective 
사용법

default xml namespace = ns

default xml namespace 지시문은, XML object에 사용하는 디폴트의 namespace를 설정합니다.

default xml namespace 를 설정하지 않는 경우, 디폴트의 namespace은 이름이 없는 namespace가 되어, empty의 string로 설정된 URI 가 설정됩니다. default xml namespace 선언의 범위(scope)는, 변수의 범위(scope)와 같이 함수 블록내입니다.


Example
다음의 예에서는,default xml namespace 의 범위(scope)가 함수 블록인 것을 나타내고 있습니다.
var nsDefault1:Namespace = new Namespace("http://www.example.com/namespaces/");
default xml namespace = nsDefault1;
        
var x1:XML = <test1 />;
trace("x1 ns: " + x1.namespace());
            
scopeCheck();    

var x2:XML = <test2 />;
trace("x2 ns: " + x2.namespace());
        
function scopeCheck(): void {
    
    var x3:XML = <test3 />;
    trace("x3 ns: " + x3.namespace());
                
    var nsDefault2:Namespace = new Namespace("http://schemas.xmlsoap.org/soap/envelope/");
    default xml namespace = nsDefault2;
            
    var x4:XML = <test4 />;
    trace("x4 ns: " + x4.namespace());

}

이 예의 trace() 출력은 다음과 같이 됩니다.

x1 ns: http://www.example.com/namespaces/
x3 ns: 
x4 ns: http://schemas.xmlsoap.org/soap/envelope/
x2 ns: http://www.example.com/namespaces/
다음의 예에서는,default xml namespace 를 사용해, 디폴트의 namespace를 할당하고 있습니다. 2 번째의 XML object (x2)는,x2 로 자신의 디폴트의 namespace를 정의하고 있기 (위해)때문에, 이 설정을 사용하지 않습니다.
var nsDefault:Namespace = new Namespace("http://www.example.com/namespaces/");
default xml namespace = nsDefault;
            
var x1:XML = <test1 />;

trace(x1.namespace());
    // http://www.example.com/namespaces/

var x2:XML = <test2 xmlns = "http://www.w3.org/1999/XSL/Transform/" />;
trace(x2.namespace());
    // http://www.w3.org/1999/XSL/Transform/

var x3:XML = <test3 xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" />;
trace(x3.namespace());
    // http://www.example.com/namespaces/

See also

do..whilestatement 
사용법
do { statement(s) } while (condition)

while 루프를 닮아 있습니다만, 조건의 최초의 평가에 앞서 명령문(statement)가 실행되는 점이 다릅니다. 그 후, 명령문(statement)는, 조건이 true 라고 평가되었을 경우에게만 실행됩니다.

do..while 루프의 경우, 루프내의 코드는 적어도 1 회는 반드시 실행됩니다. while 루프를 사용해, 실행하는 명령문(statement)의 복사를 while 루프의 개시전에 배치하는 것으로 같은 조작을 실현할 수 있습니다만, 많은 프로그래머는 do..while 루프가 읽기 쉽다고 생각하고 있습니다.

조건이 항상 true 라고 평가되면,do..while 루프는 엔들레스 루프가 됩니다. 엔들레스 루프에 빠지면, Flash Player 에 문제가 발생해, 경고 메세지가 출력되거나 플레이어가 크래쉬 하는 일이 있습니다. 루프의 회수를 알 수 있고 있는 경우는, 할 수 있는 한 for 루프를 사용해 주세요. for 루프는 읽기 쉽게 디버그도 간단합니다만, 모든 상황으로 do..while 루프의 대신으로서 사용할 수 있는 것은 아닙니다.

Parameters
condition:Boolean — 평가하는 조건입니다. 코드의 do 블록내의 statement(s) 는,condition Parameters의 평가가 true 인 한 실행됩니다.

Example
다음의 예에서는,do..while 루프를 사용해 조건이 true 화도인지를 평가해,myVar 가 5 이상이 될 때까지 myVar 를 트레이스 합니다. myVar 가 5 이상이 되면, 루프는 종료합니다.
var myVar:Number = 0; 
do { 
    trace(myVar); 
    myVar++; 
} 
while (myVar < 5); 
/* output: 
0 
1 
2 
3 
4
*/

See also

dynamicattribute keyword 
사용법
dynamic class className { // 여기에 클래스 정의를 기술 }

실행시에 추가된 dynamic property를 클래스의 인스턴스로 보유하도록(듯이) 지정합니다. 클래스에서 dynamic 속성을 사용하는 경우는, 실행시에 클래스의 인스턴스에 property를 추가할 수 있습니다. dynamic 와 지정되어 있지 않은 클래스는 sealed 라고 보여집니다. sealed 클래스의 인스턴스에는, property를 추가할 수 없습니다.

클래스가 dynamic 는 아니고 sealed 의 경우, 클래스 인스턴스로 property를 취득 또는 설정하려고 하면, 결과는 에러가 됩니다. 컴파일러를 strict 모드로 설정해, 인스턴스를 작성할 경우에 데이터형을 지정하는 경우는, property를 sealed object에 추가하려고 하면, 컴파일러 에러 또는 런타임 에러가 발생합니다.

dynamic 속성은 서브 클래스에 Inheritance되지 않습니다. dynamic 클래스를 확장했을 경우는, 서브 클래스에서 dynamic 속성을 선언했을 경우에게만 서브 클래스가 dynamic 가 됩니다.

메모 : 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.


Example
다음의 예에서는, 2 개의 클래스를 작성합니다. 1 개은 Expando 라는 이름의 dynamic 클래스에서, 이제(벌써) 1 개은 Sealed 라는 이름의 sealed 클래스입니다. 이러한 클래스는 후의 예에서도 사용합니다.
package {

    dynamic class Expando  {
    }
    
    class Sealed {
    }
}
다음의 코드는, Expando 클래스의 인스턴스를 작성해, 이 인스턴스에 property를 추가할 수 있는 것을 나타내고 있습니다.
var myExpando:Expando = new Expando();
myExpando.prop1 = "new";
trace(myExpando.prop1); // output: new
다음의 코드는, Sealed 클래스의 인스턴스를 작성해, property를 추가하려고 하면, 결과가 에러가 되는 것을 나타내고 있습니다.
var mySealed:Sealed = new Sealed();
mySealed.prop1 = "newer"; // error

See also

elsestatement 
사용법
if (condition) { 
	// 명령문(statement)
} 
else {
	// 명령문(statement)
}

if 명령문(statement)의 조건이 false 를 돌려주었을 때에 실행하는 명령문(statement)를 지정합니다. 실행하는 명령문(statement)가 1 개 밖에 없는 경우,else 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.

Parameters
condition:Boolean — 평가 결과가 true 또는 false 가 되는 식입니다.

Example
다음의 예에서는,else 조건을 사용해,age_txt 변수가 18 보다 큰가 또는 작은가를 판정하고 있습니다.
if (age_txt.text>=18) { 
    trace("welcome, user"); 
} 
else { 
    trace("sorry, junior"); 
    userObject.minor = true; 
    userObject.accessAllowed = false;
}
다음의 예에서는,else 명령문(statement)에 계속되는 명령문(statement)가 1 개 뿐이므로, 안괄호 ({})는 필요 없습니다.
if (age_txt.text>18) { 
    trace("welcome, user");
} 
else trace("sorry, junior");
다음의 예에서는,ifelse 명령문(statement)를 조합해 사용해,score_txt 가 지정된 값과 비교하고 있습니다.

if (score_txt.text>90) { 
    trace("A"); 
} 
else if (score_txt.text>75) { 
    trace("B"); 
} 
else if (score_txt.text>60) { 
    trace("C"); 
} 
else { 
    trace("F"); 
}

See also

extendsdefinition keyword 
사용법
class className extends otherClassName {}
interface interfaceName extends otherInterfaceName {} 

다른 클래스의 서브 클래스로 하는 클래스를 정의합니다. 서브 클래스는, Super 클래스에서 정의되고 있는 Methods, property, 함수등을 모두 Inheritance합니다. final 와 마크 된 클래스는 확장할 수 없습니다.

extends 키워드를 사용해, 인터페이스를 확장할 수도 있습니다. 다른 인터페이스를 확장한 인터페이스에는, 원의 인터페이스의 Methods 선언이 모두 포함됩니다.

메모 : 이 키워드를 사용하려면 , FLA 파일의 [Publish 설정] 다이알로그 박스의 [Flash] 탭으로, ActionScript 2.0 및 Flash Player 6 이후를 지정할 필요가 있습니다. 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

Parameters
className:Class — 정의하는 클래스의 이름입니다.

Example
다음의 예의 Car 클래스는 Vehicle 클래스를 확장하고 있으므로, Vehicle 클래스의 모든 Methods, property, 및 함수를 Inheritance합니다. 스크립트로 Car object를 인스턴스화하면, Car 클래스의 Methods와 Vehicle 클래스의 Methods의 양쪽 모두를 사용할 수 있습니다.

다음의 예에서는, Vehicle 클래스를 정의하고 있는 "Vehicle.as" 파일의 내용을 나타냅니다.

package {
    class Vehicle { 
        var numDoors:Number; 
        var color:String; 
        public function Vehicle(param_numDoors:Number = 2, param_color:String = null) { 
            numDoors = param_numDoors; 
            color = param_color; 
        } 
        public function start() :void { 
            trace("[Vehicle] start"); 
        } 
        public function stop() :void { 
            trace("[Vehicle] stop"); 
        } 
        public function reverse() :void { 
            trace("[Vehicle] reverse"); 
        } 
    }    
}
다음의 예에서는, 같은 디렉토리내에 있는 2 번째의 ActionScript 파일 "Car.as" 의 내용을 나타냅니다. 이 클래스는 Vehicle 클래스를 확장한 클래스에서, 다음과 같은 3 개의 변경을 실시하고 있습니다. Car 클래스에서는, 최초로 차object에 풀 크기의 스페어 타이어가 장착되고 있는지 어떤지를 추적하기 위한 변수 fullSizeSpare 를 추가하고 있습니다. 2 번째에, 차의 도난 방지 알람을 액티브하게 하는 activateCarAlarm() 를 차에 고유의 새로운 Methods로서 추가하고 있습니다. 3 번째에, Car 클래스에서는 정차 시에 안티록 브레이크 시스템을 사용하는 것을 나타내기 위해서(때문에),stop() 함수가 덧쓰기되고 있습니다.
package {

    public class Car extends Vehicle { 
        var fullSizeSpare:Boolean; 
        public function Car(param_numDoors:Number, param_color:String, param_fullSizeSpare:Boolean) { 
            numDoors = param_numDoors; 
            color = param_color; 
            fullSizeSpare = param_fullSizeSpare; 
        } 
        public function activateCarAlarm() :void { 
            trace("[Car] activateCarAlarm"); 
        } 
        public override function stop() :void { 
            trace("[Car] stop with antilock brakes"); 
        } 
    }
}
다음의 예에서는, Car object를 인스턴스화해, Vehicle 클래스에 정의되고 있는 Methods (start())를 호출합니다. 다음에 Car 클래스에서 재정의(override) 된 Methods (stop())를 호출해, 마지막에 Car 클래스의 Methods (activateCarAlarm())를 호출합니다.
var myNewCar:Car = new Car(2, "Red", true); 
myNewCar.start(); // output: [Vehicle] start 
myNewCar.stop(); // output: [Car] stop with anti-lock brakes 
myNewCar.activateCarAlarm(); // output: [Car] activateCarAlarm

서브 클래스가 Super 클래스의 constructor    에의 액세스에 사용하는 super 명령문(statement)를 사용해, Vehicle 클래스의 서브 클래스를 기술할 수도 있습니다. 다음의 예에서는, 같은 디렉토리내에 있는 3 번째의 ActionScript 파일 "Truck.as" 의 내용을 나타냅니다. Truck 클래스는, constructor    및 재정의(override) 된 reverse() Methods로 super 를 사용합니다.

package {
    class Truck extends Vehicle {
        var numWheels:Number;
        public function Truck(param_numDoors:Number, param_color:String, param_numWheels:Number) { 
            super(param_numDoors, param_color); 
            numWheels = param_numWheels; 
        } 
        public override function reverse() :void { 
            beep();
            super.reverse();
        } 
        public function beep() :void { 
            trace("[Truck] make beeping sound"); 
        } 
    }
}
다음의 예에서는, Truck object를 인스턴스화해, Truck 클래스에서 재정의(override) 된 Methods (reverse())를 호출하고 나서, Vehicle 클래스에서 정의되고 있는 Methods (stop())를 호출하고 있습니다.
var myTruck:Truck = new Truck(2, "White", 18); 
myTruck.reverse(); // output: [Truck] make beeping sound [Vehicle] reverse 
myTruck.stop(); // output: [Vehicle] stop

See also

falseprimary expression keyword 
사용법
false

false 를 나타내는 불리언 값입니다. 불리언 값은 true 또는 false 의 머지않아인가입니다. false 의 반대는 true 입니다.

자동적인 형태 지정에 의해 false 를 수치로 변환하면, 그 결과는 0 이 됩니다. false 를 string로 변환하면, 그 결과는 "false" 가 됩니다.

메모 : string "false" 는 불리언 값 true 에 변환됩니다.


Example
다음의 예에서는, 자동적인 형태 지정에 의해 false 가 어떠한 수치나 string에 변환되는지를 나타냅니다.
var bool1:Boolean = Boolean(false);

// converts it to the number 0
trace(1 + bool1); // outputs 1

// converts it to a string
trace("String: " + bool1); // outputs String: false

다음의 예에서는, string "false" 가 불리언 값 true 에 변환되는 것을 나타냅니다.

trace(Boolean("false")); // output: true

if ("false") {
    trace("condition expression evaluated to true");
}
else {
    trace("condition expression evaluated to false");
}
// output: condition expression evaluated to true

See also

finalattribute keyword 
사용법
final function methodName() { 
	// 여기에 명령문(statement)를 기술
}
final class className {}

Methods의 재정의(override) 또는 클래스의 확장을 제한합니다. final 와 지정된 Methods의 재정의(override)나, 클래스의 확장을 시행하면, 결과는 에러가 됩니다.

Parameters
methodName:Function — 재정의(override)를 제한하는 Methods의 이름입니다.
className:Class — 확장을 제한하는 클래스의 이름입니다.

See also

flash_proxynamespace 

Proxy 클래스의 Methods를 정의합니다. Proxy 클래스 Methods는 자신의 namespace내에 있어, Proxy 클래스 Methods명으로 일치하는 인스턴스 Methods명이 Proxy 서브 클래스에 포함되는 경우에, 이름이 경합 하지 않게 되어 있습니다.

See also

forstatement 
사용법
for ([init]; [condition]; [next]) { 
	// 명령문(statement)
}

init (초기화) 식을 1 회만 평가하고 나서, 루프 순차 순서를 개시합니다. 루프 순차 순서는,condition 식을 평가하는 것으로 개시됩니다. condition 식의 평가 결과가 true 의 경우는,statement 가 실행되어next 가 평가됩니다. 그 후,condition 식의 평가로부터 루프 순차 순서가 다시 개시됩니다.

실행하는 명령문(statement)가 1 개 밖에 없는 경우,for 명령문(statement)로 실행하는 명령문(statement) 블록을 둘러싸는 중 괄호 ({})는 필요 없습니다.

Parameters
init — 루프의 개시전에 평가되는 임의의 식입니다. 통상은 대입식입니다. 이 Parameters에 대해서,var 명령문(statement)를 실행할 수도 있습니다.
condition — 루프의 개시전에 평가되는 임의의 식입니다. 통상은 비교식입니다. 식의 평가 결과가 true 의 경우,for 명령문(statement)에 관련지을 수 있고 있는 명령문(statement)가 실행됩니다.
next — 루프 순차 순서의 뒤에 평가되는 임의의 식입니다. 통상은 인크리먼트(increment)식 또는 감소식입니다.

Example
다음의 예에서는,for 를 사용해 배열의 엘리먼트를 추가합니다.
var my_array:Array = new Array(); 
for (var i:Number = 0; i < 10; i++) { 
    my_array[i] = (i + 5) * 10;  
} 
trace(my_array); // output: 50,60,70,80,90,100,110,120,130,140 
다음의 예에서는,for 를 사용해 같은 액션을 반복해 실행합니다. 다음의 코드에서는,for 루프에 의해 1 에서 100 의 수치를 가산합니다.
var sum:Number = 0; 
for (var i:Number = 1; i <= 100; i++) { 
    sum += i; 
} 
trace(sum); // output: 5050
다음의 예에서는, 실행하는 명령문(statement)가 1 개 밖에 없는 경우는, 안괄호 ({})를 붙일 필요가 없는 것을 나타내고 있습니다.
var sum:Number = 0; 
for (var i:Number = 1; i <= 100; i++) 
    sum += i; 
trace(sum); // output: 5050

See also

for..instatement 
사용법
for (variableIterant:String in object){ 
	// 명령문(statement)
} 

object의 동적 property 또는 배열의 엘리먼트에 대해서 반복 처리를 실시해, 각 property 또는 엘리먼트에 대해서 statement 를 실행합니다. for..in 명령문(statement)에서는, 클래스에 정의된 변수나 Methods등의 고정 property는 열거되지 않습니다. 고정 property의 리스트를 취득하려면 , flash.utils 패키지에 있는 describeType() 함수를 사용합니다.

Parameters
variableIterant:String — 반복자로서 동작해, object의 property 또는 배열내의 엘리먼트를 참조하는 변수의 이름입니다.

Example
다음의 예에서는,for..in 를 사용해 object의 property에 대해서 반복 처리를 실시합니다.
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for (var prop in myObject) { 
    trace("myObject. "+prop+" = "+myObject[prop]); 
} 
/* output:
myObject.firstName = Tara 
myObject.age = 27 
myObject.city = San Francisco
*/
다음의 예에서는,for..intypeof 연산자를 사용해, 특정의 형태의 아이에 대해서 반복 처리를 실시합니다.
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for (var name in myObject) { 
    if (typeof (myObject[name]) == "string") { 
        trace("I have a string property named "+name); 
    } 
}
/* output:
I have a string property named city
I have a string property named firstName
*/

See also

for each..instatement 
사용법
for each (variableIterant in object){ 
	// 명령문(statement)
} 

콜렉션의 아이템에 대해서 반복 처리를 실시해, 각 아이템에 대해서 statement 를 실행합니다. E4X 의 언어 확장의 일부로서 도입된 for each..in 명령문(statement)는, XML object 뿐만이 아니라 object나 배열에도 사용할 수 있습니다. for each..in 명령문(statement)는, 고정 property는 아니고 object의 동적 property (을) 통한 보고 반복 처리를 실시합니다. 고정 property는, 클래스 정의의 일부로서 정의되는 property입니다. 유저 정의 클래스의 인스턴스로 for each..in 명령문(statement)를 사용하려면 , 클래스의 속성을 dynamic 라고 선언할 필요가 있습니다.

for..in 명령문(statement)와 달리,for each..in 명령문(statement)는, property명은 아니고 object의 property의 값에 대해서 반복 처리를 실시합니다.

Parameters
variableIterant:* — 반복자로서 동작해, 콜렉션의 아이템을 참조하는 변수의 이름입니다.
object:Object — 반복 처리를 실시하는 콜렉션의 이름입니다. 콜렉션은, XML object, 범용 object, 또는 배열로 할 수가 있습니다.

Example
다음의 예에서는,for each..in 를 사용해, object의 property로 보관 유지되는 값에 대해서 반복 처리를 실시합니다.
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for each (var item in myObject) { 
    trace(item); 
} 
/* output:
Tara
27
San Francisco
*/
다음의 예에서는,for each..in 를 사용해, 배열의 엘리먼트에 대해서 반복 처리를 실시합니다.
var myArray:Array = new Array("one", "two", "three"); 
for each(var item in myArray) 
    trace(item); 
/* output: 
one
two
three
*/
다음의 예에서는,for each..inis 연산자를 사용해, 특정의 형태의 아이에 대해서 반복 처리를 실시합니다.
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for each (var item in myObject) { 
    if (item is String) {  
        trace("I have a string property with value " + item); 
    } 
}

/* output:
I have a string property with value Tara
I have a string property with value San Francisco
*/
다음의 예에서는,for each..in 를 사용해, XMLList object의 property (doc.p)에 대해서 반복 처리를 실시합니다.
var doc:XML = 
        <body>
            <p>Hello</p>
            <p>Hola</p>
            <hr />
            <p>Bonjour</p>
        </body>;
for each (var item in doc.p) {
    trace(item);
}

/* output:
Hello
Hola
Bonjour
*/

See also

functiondefinition keyword 
사용법
function functionName([parameter0, parameter1,...parameterN]) :returnType{ 
	// 명령문(statement)
} 
var functionName:Function = function ([parameter0, parameter1,...parameterN]) :returnType{ 
	// 명령문(statement)
} 

특정의 태스크를 실행하도록(듯이) 정의한 일련의 명령문(statement)로 구성됩니다. 어느 위치에서 함수를 정의해, SWF 파일이 다른 스크립트로부터 그 함수를호출하는일이 생깁니다. 함수를 정의하는 경우, 그 함수의 Parameters도 지정할 수 있습니다. Parameters는, 함수가 처리하는 값의 플레이스홀더-입니다. 함수를 호출할 때마다 다른 Parameters를 건네줄 수가 있습니다. 이것에 의해, 1 개의 함수를 다른 상황으로 재이용할 수 있습니다.

함수로 값을 생성한다, 즉 값을돌려주려면 , 함수의 statement(s) 블록으로 return 명령문(statement)를 사용합니다.

문장구조법 1 : function 키워드를 사용해, 함수명, Parameters, 및 명령문(statement)를 지정한 함수를 정의할 수 있습니다. 스크립트에 의해 함수가 불려 가면, 함수 정의내의 명령문(statement)가 실행됩니다. 함수는 전방 참조가 용서됩니다. 즉, 같은 스크립트내에서는, 함수를 호출하는 개소보다 후에 함수를 선언할 수 있습니다. 함수 정의는, 같은 함수의 이전의 정의를 옮겨놓습니다. 명령문(statement)가 용서되고 있는 장소이면, 어디에서라도 이 문장구조법을 사용할 수 있습니다.

문장구조법 2 : function 를 사용해, 익명 함수를 작성해, 이 함수에의 참조를 돌려줄 수도 있습니다. 이 문장구조법은 식 중(안)에서 사용되어 특히 object내에 Methods를 짜넣는 경우에 편리합니다.

게다가 함수 정의내에서 arguments object를 사용할 수가 있습니다. 일반적으로,arguments object는, 가변수의 Parameters를 받는 함수나 재귀적인 익명 함수를 작성하는 경우에 사용합니다.

Parameters
functionName:Function — 새로운 함수의 이름입니다.
returnType:* — 반환값의 데이터형입니다.

Example
다음의 예에서는, 평방수의 값을 돌려주는 함수 sqr 를 정의합니다.
function sqr(xNum:Number) { 
    return Math.pow(xNum, 2); 
} 
var yNum:Number = sqr(3); 
trace(yNum); // output: 9
같은 스크립트내에서 함수를 정의해 사용하는 경우는, 함수의 사용 개소의 뒤에 함수 정의를 기술할 수가 있습니다.
var yNum:Number = sqr(3); 
trace(yNum); // output: 9 
function sqr(xNum:Number) { 
    return Math.pow(xNum, 2); 
}

See also

getdefinition keyword 
사용법
function get property() :returnType{ 
	// 여기에 명령문(statement)를 기술
}

property와 같이 읽어내 가능한 Methods인 getter 를 정의합니다. getter 는 특별한 함수로,var 또는 const 키워드로 선언된 property의 값을 돌려줍니다. 다른 Methods와는 달라, getter 의 호출에는 괄호 (())를 사용하지 않기 때문에, 변수와 같이 보입니다.

getter 에서는, 프라이빗 property에 Public 인터페이스를 작성해, 비표시의 정보의 규칙을 적용할 수 있습니다. 정보를 비표시로 하면, 기본으로 되는 프라이빗 property의 Implements이 변경되었을 경우에서도, Public 인터페이스를 변경할 필요가 없다고 하는 메리트가 있습니다.

getter 에는, 서브 클래스내에서 재정의(override) 할 수 있다고 하는 메리트도 있습니다. var 또는 const 로 선언된 property는 재정의(override) 할 수 없습니다.

getter 는, setter 와 조합해, 읽어내 / 기입해 가능한 property를 작성할 수 있습니다. 읽기 전용(read-only) property를 작성하려면 , 대응하는 setter 없음으로 getter 를 작성합니다. 기입 전용 property를 작성하려면 , 대응하는 getter 없음으로 setter 를 작성합니다.

메모 : 이 키워드를 사용하려면 , FLA 파일의 [Publish 설정] 다이알로그 박스의 [Flash] 탭으로, ActionScript 2.0 및 Flash Player 6 이후를 지정할 필요가 있습니다. 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

Parameters
property:* get 가 액세스 하는 property의 식별자입니다. 이 값은 대응하는 set 커멘드로 사용되는 값과 같은 필요가 있습니다.
returnType:* — 반환값의 데이터형입니다.

Example
다음의 예에서는,Team 클래스를 정의하고 있습니다. Team 클래스에는, 클래스내의 property를 취득 및 설정하기 위한 getter 및 setter Methods가 있습니다.
package {
    public class Team { 
        var teamName:String; 
        var teamCode:String; 
        var teamPlayers:Array = new Array(); 
        public function Team(param_name:String, param_code:String) { 
            teamName = param_name; 
            teamCode = param_code; 
        } 
        public function get name() :String { 
            return teamName; 
        } 
        public function set name(param_name:String) :void { 
            teamName = param_name; 
        }
    } 
}
스크립트에 다음의 코드를 입력합니다.
var giants:Team = new Team("San Fran", "SFO"); 
trace(giants.name); 
giants.name = "San Francisco"; 
trace(giants.name); 
/* output: 
San Fran San Francisco */

giants.name 를 트레이스 할 때에, getter Methods를 사용해 property의 값을 돌려주고 있습니다.

See also

ifstatement 
사용법
if (condition) {
	// 명령문(statement)
}

조건을 평가해, 다음의 명령문(statement)를 실행할지 어떨지를 판정합니다. 조건이 true 의 경우는, 조건에 계속되는 중 괄호 ({}) 내의 명령문(statement)가 실행됩니다. 조건이 false 의 경우는, 안괄호내의 명령문(statement)를 스킵 해, 안괄호의 뒤의 명령문(statement)가 실행됩니다. 스크립트내에 분기 처리를 작성하려면 ,if 명령문(statement)와 else 명령문(statement)를 조합합니다.

실행하는 명령문(statement)가 1 개 밖에 없는 경우,if 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.

Parameters
condition:Boolean — 평가 결과가 true 또는 false 가 되는 식입니다.

See also

implementsdefinition keyword 
사용법
myClass implements interface01 [, interface02 , ...] 

클래스에서 인터페이스를 Implements할지 어떨지를 지정합니다. 클래스에서 인터페이스를 Implements하는 경우, 인터페이스로 선언 떠날 수 있어 모든 Methods를 클래스에서 정의할 필요가 있습니다. 인터페이스를 Implements하는 클래스의 인스턴스는, 인터페이스가 정의하는 데이터형의 멤버라고 보여집니다. 이 때문에,is 연산자는, 최초의 오퍼랜드가 클래스 인스턴스로, 다음의 오퍼랜드가 인터페이스가 되고 있어 게다가 데이터형의 강제형 변환이 인터페이스 조작으로 정의되고 있는 경우에 true 를 돌려줍니다.

메모 : 이 키워드를 사용하려면 , FLA 파일의 [Publish 설정] 다이알로그 박스의 [Flash] 탭으로, ActionScript 2.0 및 Flash Player 6 이후를 지정할 필요가 있습니다. 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

See also

importdirective 
사용법
import packageName.className 
import packageName. *

외부에서 정의된 클래스 및 패키지를 코드로 사용할 수 있도록(듯이) 합니다. 예를 들어, 스크립트로 flash.display.Sprite 클래스를 사용하는 경우는, 이것을 읽어들일 필요가 있습니다. import 지시문은 옵션이었기 때문에, 이 요건은 이전의 버젼의 ActionScript 와는 다릅니다.

import 지시문을 사용한 후는, 패키지명을 포함한 완전한 클래스명이나 클래스명만의 어느쪽이든을 사용할 수 있습니다.

 
import flash.display.Sprite; 

// name of class only
var mySprite:Sprite = new Sprite();

// full class name
var mySprite:flash.display.Sprite = new flash.display.Sprite();

액세스 대상의 클래스가 패키지내에 복수 존재하는 경우는, 다음의 예와 같이, 1 개의 명령문(statement)로 모든 클래스를 읽어들일 수가 있습니다.

import flash.display. *;

import 지시문은, 읽어들인 패키지의 최상정도 레벨에 있는 클래스, 함수, 및 변수만을 읽어들입니다. 네스트 된 패키지는 명시적으로 읽어들일 필요가 있습니다.

읽어들인 클래스를 스크립트내에서 사용하지 않는 경우, 그 클래스는 SWF 파일에는 출력되지 않습니다. 따라서, SWF 파일의 크기를 신경쓰는 일 없이, 큰 패키지를 읽어들일 수가 있습니다. 클래스에 관련지을 수 있었던 바이트 코드는, 실제로 사용되었을 경우만, SWF 파일에 포함할 수 있습니다. 필요가 없는 클래스를 읽어들이면, 이름의 경합이 일어나기 쉬워진다고 하는 디메리트가 있습니다.

import 지시문은, 그것을 호출하고 있는 현재의 스크립트 (프레임 또는 object)에게만 적용됩니다. 예를 들어, adobe.example 패키지의 모든 클래스를 Flash 문서의 프레임 1 에 읽어들였다고 가정합니다. 그 프레임에서는, 그 패키지내의 클래스를 간단한 이름으로 참조할 수 있습니다.

// FLA 의 프레임 1 :  
import adobe.example. *; 
var myFoo:foo = new foo();

다만, 다른 프레임의 스크립트에서는, 그 패키지의 클래스를 완전 수식명 (var myFoo:foo = new adobe.example.foo();)로 참조하는지, 그 패키지의 클래스를 읽어들이는 다른 프레임에 import 지시문을 추가할 필요가 있습니다.

Parameters
packageName:* — 다른 클래스 파일로 정의한 패키지의 이름입니다.
className:Class — 다른 클래스 파일로 정의한 클래스의 이름입니다.

See also

includedirective 
사용법
include "[path]filename.as"

지정한 파일내의 커멘드를 호출해 원의 스크립트에 인클루드 해, 그 스크립트의 일부인것 같이 취급합니다. include 지시문은, 컴파일시에 불려 갑니다. 이 때문에, 인클루드 파일에 어떠한 변경을 실시했을 경우는, 파일을 보존해, 파일을 사용하는 SWF 파일을 재컴파일 할 필요가 있습니다.

See also

interfacedefinition keyword 
사용법
 interface InterfaceName [extends InterfaceName ] {}

인터페이스를 정의합니다. 인터페이스란, Methods세트를 정의하는 데이터형입니다. 이 Methods는, 인터페이스를 Implements하는 모든 클래스에서 정의될 필요가 있습니다.

인터페이스는 클래스를 닮아 있습니다만, 다음에 나타내는 중요한 차이가 있습니다.

ActionScript 2.0 과는 달리, ActionScript 3.0 에서는 인터페이스 정의로 getter 및 setter Methods를 사용할 수 있습니다.

메모 : 이 키워드를 사용하려면 , FLA 파일의 [Publish 설정] 다이알로그 박스의 [Flash] 탭으로, ActionScript 2.0 및 Flash Player 6 이후를 지정할 필요가 있습니다. 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

See also

internalattribute keyword 
사용법
[internal] var varName
[internal] const kName
[internal] function functionName()  { 
	// 여기에 명령문(statement)를 기술
}
[internal] class className{
	// 여기에 명령문(statement)를 기술
}
[internal] namespace nsName

클래스, 변수, 정수, 또는 함수에 같은 패키지내의 모든 호출원으로부터 액세스 할 수 있도록(듯이) 지정합니다. 디폴트에서는, 클래스, property, 및 Methods는 internal namespace에 속합니다.

Parameters
className:Class — internal 로서 지정하는 클래스의 이름입니다.
varName:* — internal 로서 지정하는 변수의 이름입니다. internal 속성은, 변수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
kName:* — internal 로서 지정하는 정수의 이름입니다. internal 속성은, 정수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
functionName:Function — internal 로서 지정하는 함수 또는 Methods의 이름입니다. internal 속성은, 함수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
nsName:Namespace — internal 로서 지정하는 namespace의 이름입니다. internal 속성은, namespace가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.

See also

labelstatement 
사용법
label:statement
label: {
statements
}

명령문(statement)를 break 또는 continue 로 참조 가능한 식별자와 관련짓습니다. 네스트 된 루프에서는, label를 참조하지 않는 break 또는 continue 명령문(statement)는, 그 루프의 나머지의 부분만 스킵 해, 일련의 루프는 스킵 하지 않습니다. 다만, 일련의 루프를 정의하는 명령문(statement)에 관련지을 수 있었던 label가 있는 경우,break 또는 continue 명령문(statement)는 이 label를 참조하는 것으로써, 일련의 루프를 스킵 할 수 있습니다.

또, label에 의해 블록 명령문(statement)를 종료할 수도 있습니다. 블록 명령문(statement)가 루프의 일부인 경우 이외는, label를 참조하지 않는 break 명령문(statement)를 블록 명령문(statement)내에 배치할 수 없습니다. 블록 명령문(statement)에 관련지을 수 있었던 label가 있는 경우는, 이 label를 참조하는 break 명령문(statement)를 블록 명령문(statement)내에 배치할 수 있습니다.

Parameters
label:* — 명령문(statement)에 관련짓는 유효한 식별자입니다.
statements:* — label에 관련짓는 명령문(statement)입니다.

Example
다음의 예에서는, 네스트 된 루프로 label를 사용해, 일련의 루프를 종료하는 방법을 나타냅니다. 코드는, 네스트 된 루프를 사용해, 0 에서 99 까지의 수치의 리스트를 생성합니다. break 명령문(statement)는 카운트가 80 에 도달하기 직전에 발생합니다. break 명령문(statement)로 outerLoop label가 사용되지 않았던 경우는, 그 루프의 나머지의 부분만 스킵 해, 계속 90 에서 99 까지의 수치를 출력합니다. 다만,outerLoop label가 사용되었을 경우,break 명령문(statement)는 일련의 루프를 스킵 해, 마지막에 출력되는 수치는 79 가 됩니다.
outerLoop: for (var i:int = 0; i < 10; i++) {
    for (var j:int = 0; j < 10; j++) {
        if ( (i == 8) && (j == 0)) {
            break outerLoop;
        }
        trace(10 * i + j);
    }
}
/* output:
1
2
...
79
*/

다음의 예에서는, 블록 명령문(statement)에서의 label의 사용 방법을 나타냅니다. 블록 명령문(statement)에는 foo label를 붙일 수 있어break 명령문(statement)는 블록내의 마지막 명령문(statement)를 스킵 할 수 있습니다.

foo: {
    trace("a");
    break foo;
    trace("b");
}
// output: a

See also

namespacedefinition keyword 
사용법
namespace name [= uri]

정의의 가시성을 제어할 수 있습니다. 정의 끝난 namespace에는,public,private,protected, 및 internal 가 있습니다.

다음에, namespace를 작성, 적용, 참조하는 순서를 나타냅니다.

Parameters
name:Namespace — namespace의 이름입니다. 유효한 식별자를 사용할 수 있습니다.
uri:String — namespace의 URI 입니다. 이 Parameters는 옵션입니다.

See also

nativeattribute keyword 
사용법
native function functionName();
class className { 
	native function methodName();
}

Flash Player 가 native code로 함수 또는 Methods를 Implements하도록(듯이) 지정합니다. Flash Player 에서는,native 키워드를 내부적으로 사용해, ActionScript 어플리케이션 프로그래밍 인터페이스 (API)로 함수 및 Methods를 선언합니다. 이 키워드는, 독자적으로 작성하는 코드에서는 사용할 수 없습니다.  

nullprimary expression keyword 
사용법
null

변수에 할당할 수가 있는 특별한 값, 또는 데이터가 없는 경우에 함수로부터 돌려주어지는 특수한 값입니다. null 는, 존재하지 않는, 또는 정의되어 있지 않은 데이터형을 나타내는 값으로 해서 사용됩니다.

null 값는 특수한 값 undefined 와 혼동 하지 않게 해 주세요. nullundefined 를 등가 연산자 (==)로 비교하면, 결과는 true 가 됩니다. 다만,nullundefined 를 엄밀한 등가 연산자 (===)로 비교하면, 결과는 false 가 됩니다.


Example
다음의 예에서는, 인덱스가 붙은 배열의 최초의 6 개의 값을 체크해, 값이 지정되어 있지 않은 (value == null) 경우는, 메세지를 출력합니다.

var testArray:Array = new Array();
testArray[0] = "fee";
testArray[1] = "fi";
testArray[4] = "foo";

for (i = 0; i < 6; i++) {
    if (testArray[i] == null) {
        trace("testArray[" + i + "] == null");
    }
}

/* output: 
testArray[2] == null
testArray[3] == null
testArray[5] == null
*/

See also

object_proxynamespace 

ObjectProxy 클래스의 Methods를 정의합니다. ObjectProxy 클래스 Methods는 자신의 namespace내에 있어, Proxy 클래스 Methods명으로 일치하는 인스턴스 Methods명이 Proxy 서브 클래스에 포함되는 경우에, 이름이 경합 하지 않게 되어 있습니다.

overrideattribute keyword 
사용법
override function name() { 
	// 여기에 명령문(statement)를 기술
}

Methods로 Inheritance한 Methods를 옮겨놓도록(듯이) 지정합니다. Inheritance한 Methods를 재정의(override) 하려면 ,override 속성을 사용할 필요가 있습니다. 이름, 수치, Parameters의 형태, 및 반환값의 형태는 완전하게 일치할 필요가 있습니다. override 속성을 사용하지 않고 Methods를 재정의(override) 하려고 하면 에러가 발생합니다. 같이 Methods에 일치하는 Inheritance된 Methods가 없는 경우에,override 속성을 사용하면 에러가 발생합니다.

다음의 장소에서 override 속성을 사용할 수 없습니다.

var 또는 const 로 선언된 property를 재정의(override) 할 수 없습니다만, 기본 클래스의 property를 getter-setter 로 해,getset 로 정의된 Methods를 재정의(override) 하는 것으로, 같은 기능을 실현할 수가 있습니다.

Parameters
name:Function — 재정의(override) 하는 Methods의 이름입니다.

See also

packagedefinition keyword 
사용법
package packageName {
class someClassName { 
    } 
}

다른 스크립트로부터 읽어들인 개별의 그룹에 코드를 분류할 수 있습니다. 클래스가 패키지의 멤버인 것을 나타내려면 ,package 키워드를 사용할 필요가 있습니다.

Parameters
packageName:* — 패키지의 이름입니다.

See also

privateattribute keyword 
사용법
class className{ 
	private var varName;
	private const kName;
	private function methodName() { 
		// 여기에 명령문(statement)를 기술
	}
	private namespace nsName;
}

변수, 정수, 또는 Methods를 선언 또는 정의한 클래스로부터로만 액세스 할 수 있도록 지정합니다. ActionScript 2.0 과는 달리, ActionScript 3.0 의 private 에서는 서브 클래스에의 액세스도 제한됩니다. 게다가private 에서는 컴파일시 및 실행시의 양쪽 모두로 액세스가 제한됩니다. 디폴트에서는, 같은 패키지에 있는 호출원래는 변수 또는 함수에 액세스 할 수 있습니다. 이 키워드는, 변수나 함수에의 액세스를 제한하는 경우에 사용합니다.

이 키워드는, 클래스 정의에서만 사용할 수 있습니다. 인터페이스 정의에서는 사용할 수 없습니다. private 는, 클래스 또는 그 외의 모든 패키지 레벨의 정의에는 적용할 수 없습니다.

Parameters
varName:* — private 로서 지정하는 변수의 이름입니다. private 속성은, 변수가 클래스내에 있는 경우만 적용할 수 있습니다.
kName:* — private 로서 지정하는 정수의 이름입니다. private 속성은, 정수가 클래스내에 있는 경우만 적용할 수 있습니다.
methodName:Function — private 로서 지정하는 Methods의 이름입니다. private 속성은, Methods가 클래스내에 있는 경우만 적용할 수 있습니다.
nsName:Namespace — private 로서 지정하는 namespace의 이름입니다. private 속성은, namespace가 클래스내에 있는 경우만 적용할 수 있습니다.

Example
다음의 예에서는,private 키워드를 사용해, 클래스내의 특정의 property를 비표시로 하는 방법에 대해 설명합니다.
class A { 
  private var alpha:String = "visible only inside class A"; 
  public var beta:String = "visible everywhere"; 
}
    
class B extends A {
  function B() {
    alpha = "Access attempt from subclass"; // error
  }
}

alpha 는 프라이빗 변수이기 (위해)때문에, A 클래스의 외부나 서브 클래스 B 로부터도 액세스 할 수 없습니다. 프라이빗 변수에 액세스 하려고 하면, 에러가 발생합니다.

See also

protectedattribute keyword 
사용법
class className{ 
	protected var varName;
	protected const kName;
	protected function methodName() { 
		// 여기에 명령문(statement)를 기술
	}
	protected namespace nsName;
}

변수, 정수, Methods, 또는 namespace를 정의한 클래스와 그 서브 클래스로부터만 액세스 할 수 있도록 지정합니다. ActionScript 3.0 의 protected 의 정의는, ActionScript 2.0 의 private 와 닮아 있습니다만,protected 에서는 컴파일시 및 실행시의 양쪽 모두로 액세스가 제한되는 점이 다릅니다. 디폴트에서는, 같은 패키지에 있는 호출원래는 변수 또는 함수에 액세스 할 수 있습니다. 이 키워드는, 변수나 함수에의 액세스를 제한하는 경우에 사용합니다.

이 키워드는, 클래스 정의에서만 사용할 수 있습니다. 인터페이스 정의에서는 사용할 수 없습니다. private 는, 클래스 또는 다른 모든 패키지 레벨의 정의에는 적용할 수 없습니다.

ActionScript 3.0 의 protected 의 정의에는, Java 프로그램 언어의 protected 보다 많은 제한이 있습니다. ActionScript 3.0 의 protected 에서는 서브 클래스에의 액세스가 엄밀하게 제한됩니다만, Java 의 protected 에서는 같은 패키지내의 모든 클래스에의 액세스가 허가됩니다. 예를 들어,Base 라는 이름의 클래스에 protected 와 지정된 property가 포함되는 경우, ActionScript 3.0 에서는 Base 의 확장 클래스만이 보호된 property에 액세스 할 수 있습니다. Java 에서는, Base 와 같은 패키지에 있는 모든 클래스가 보호된 property에 액세스 할 수 있어 Base 의 서브 클래스가 아닌 경우도 같습니다.

Parameters
varName:* — protected 로서 지정하는 변수의 이름입니다. protected 속성은, 변수가 클래스내에 있는 경우만 적용할 수 있습니다.
kName:* — protected 로서 지정하는 정수의 이름입니다. protected 속성은, 정수가 클래스내에 있는 경우만 적용할 수 있습니다.
methodName:Function — protected 로서 지정하는 Methods의 이름입니다. protected 속성은, Methods가 클래스내에 있는 경우만 적용할 수 있습니다.
nsName:Namespace — protected 로서 지정하는 namespace의 이름입니다. protected 속성은, namespace가 클래스내에 있는 경우만 적용할 수 있습니다.

Example
다음의 예에서는, 클래스 A 로 보호된 클래스 변수를 작성해, 클래스 A 의 서브 클래스인 클래스 B 로부터 그 변수에 정상적으로 액세스 하고 있습니다.
class A { 
  private var alpha:String = "visible only inside class A"; 
  protected var beta:String = "visible inside class A and its subclasses"; 
}
    
class B extends A {
  public function B() {
    beta = "Access attempt from subclass succeeded";
    trace(beta);  // output: Access attempt from subclass succeeded
  }
}

See also

publicattribute keyword 
사용법
public var varName
public const kName
public function functionName()  { 
	// 여기에 명령문(statement)를 기술
}
public class className {
	// 여기에 명령문(statement)를 기술
}
public namespace nsName

클래스, 변수, 정수, 또는 Methods에 모든 호출원으로부터 액세스 할 수 있도록(듯이) 지정합니다. 클래스, 변수, 및 Methods는 디폴트에서는 내부 클래스입니다. 즉, 현재의 패키지내에게만 표시됩니다. 클래스, 변수, 또는 Methods에 모든 호출원으로부터 액세스 할 수 있도록(듯이) 하려면 ,public 속성을 사용할 필요가 있습니다.

Parameters
className:Class — public 로서 지정하는 클래스의 이름입니다.
varName:* — public 로서 지정하는 변수의 이름입니다. public 속성은, 변수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
kName:* — public 로서 지정하는 정수의 이름입니다. public 속성은, 정수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
functionName:Function — public 로서 지정하는 함수 또는 Methods의 이름입니다. public 속성은, 함수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
nsName:Namespace — public 로서 지정하는 namespace의 이름입니다. public 속성은, namespace가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.

Example
다음의 예에서는, 클래스 파일로 Public 변수를 사용하는 방법을 나타냅니다.
class User { 
    public var age:Number; 
    public var fname:String; 
} // end of class User definition
 
var jimmy:User = new User(); 
jimmy.age = 27; 
jimmy.fname = "jimmy";
trace(jimmy.age, jimmy.fname); // output: 27 jimmy

User 클래스의 몇개의 Public 변수를 프라이빗 변수로 변경했을 경우, User 클래스의 밖으로부터 변수에 액세스 하려고 하면, 컴파일시 에러가 생성됩니다.

See also

returnstatement 
사용법
function functionName () {
	return [expression]
}

실행을 호출해 원의 함수에 즉시 돌려줍니다. return 명령문(statement)의 뒤에 식이 계속되는 경우는, 식이 평가되어 결과가 돌려주어집니다.

함수의 정의에 반환값의 형태가 포함되어 있는 경우는,return 명령문(statement)의 뒤에 식을 계속할 필요가 있습니다. 반환값의 형태가 지정되지 않고,return 명령문(statement)가 단독으로 사용되고 있는 경우는,undefined 를 돌려줍니다.

복수의 값을 취득할 수 없습니다. 복수의 값을 취득하려고 했을 경우는, 마지막 값만이 돌려주어집니다. 다음의 예에서는,c 가 돌려주어집니다.

return a, b, c ;

복수의 값을 취득할 필요가 있는 경우는, 대신에 배열 또는 object를 사용합니다.

Parameters
expression:* — 평가를 실시해 함수의 값으로 해서 돌려주는 식입니다. 이 Parameters는 옵션입니다.

결과
* expression Parameters의 평가 (지정되고 있는 경우)입니다.

Example
다음의 예에서는,sum() 함수의 본체내에서 return 명령문(statement)를 사용해, 3 개의 Parameters의 가산 결과를 돌려줍니다. 코드의 2 행 째에 sum() 함수를 호출해, 반환값을 변수 newValue 에 할당합니다.
function sum(a:Number, b:Number, c:Number) :Number { 
    return (a + b + c); 
} 
var newValue:Number = sum(4, 32, 78); 
trace(newValue); // output: 114

See also

setdefinition keyword 
사용법
function set property(newValue:*) :void{ 
	// 여기에 명령문(statement)를 기술
}

Public 인터페이스로 property로서 표시되는 Methods인 setter 를 정의합니다. setter 는 특별한 Methods로,var 키워드로 선언된 property의 값을 설정합니다. 다른 Methods와는 달라, setter 의 호출에는 괄호 (())를 사용하지 않기 때문에, 변수와 같이 보입니다.

setter 에서는, 프라이빗 property에 Public 인터페이스를 작성해, 비표시의 정보의 규칙을 적용할 수 있습니다. 정보를 비표시로 하면, 기본으로 되는 프라이빗 property의 Implements이 변경되었을 경우에서도, Public 인터페이스를 변경할 필요가 없다고 하는 메리트가 있습니다.

setter 에는, 서브 클래스내에서 재정의(override) 할 수 있다고 하는 메리트도 있습니다. var 로 선언된 property는 재정의(override) 할 수 없습니다.

setter 의 반환값의 형태는,void 또는 지정 없음의 언젠가일 필요가 있습니다.

setter 는, getter 와 조합해, 읽어내 / 기입해 가능한 property를 작성할 수 있습니다. 읽기 전용(read-only) property를 작성하려면 , 대응하는 setter 없음으로 getter 를 작성합니다. 기입 전용 property를 작성하려면 , 대응하는 getter 없음으로 setter 를 작성합니다.

메모 : 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

Parameters
property:* set 가 수정하는 property의 식별자입니다. 이 값은 대응하는 get 커멘드로 사용되는 값과 같은 필요가 있습니다.
newValue:* — 할당하는 새로운 값입니다.

Example
다음의 예에서는, getter-setter 를 정의해,age 라는 이름의 읽어내 / 기입해 가능한 property를 작성합니다.
package {
    class User { 
        private var userAge:Number; 
        
        public function get age() :Number {
            return userAge;
        }
        
        public function set age(x:Number) :void {
            userAge = x;    
        }
    } 
} 
스크립트에 다음의 코드를 입력합니다.
var myUser:User = new User();
myUser.age = 25;
trace(myUser.age); // output: 25

See also

staticattribute keyword 
사용법
class someClassName{ 
	static var varName; 
	static const kName;
	static function methodName() { 
		// 여기에 명령문(statement)를 기술
	} 
}

변수, 정수, 또는 Methods가 클래스의 인스턴스는 아니고 클래스에 속하도록(듯이) 지정합니다.

정적 클래스 멤버에게 액세스 하려면 , 인스턴스명 대신에 클래스명을 사용합니다. 예를 들어, Date 클래스에 있는 parse() 라는 이름의 정적 Methods는, 다음의 문장구조법에서만 호출할 수가 있습니다.

Date.parse()

parse() Methods는, Date 클래스의 인스턴스로 호출할 수 없습니다. 예를 들어, 다음의 코드에서는 에러가 발생합니다.

var myDate:Date = new Date();
			myDate.parse("Jan 01 00:00:00 2006"); // error

static 는, 클래스 정의에서만 사용할 수 있습니다. 인터페이스 정의에서는 사용할 수 없습니다.

정적 클래스 멤버는 Inheritance되지 않습니다. Java 나 C++ 와 같이, 서브 클래스명을 사용해 정적 클래스 멤버를 참조할 수 없습니다. 다만, 수식자를 사용하지 않고 , 클래스 또는 서브 클래스내의 정적 변수 또는 Methods를 참조할 수 있습니다. 다음의 예를 참조해 주세요.

정적 Methods내에서는,super 명령문(statement) 또는 this 키워드는 사용할 수 없습니다.

메모 : 이 키워드는, 외부 스크립트 파일로 사용하는 경우에게만 지원(support)되어[액션] 패널에 기술하는 스크립트에서는 지원(support)되지 않습니다.

Parameters
varName:* — static 로서 지정하는 변수의 이름.
kName:* — static 로서 지정하는 정수의 이름입니다.
methodName:Function — static 로서 지정하는 Methods의 이름입니다.

Example
다음의 예에서는,static 키워드를 사용해, 작성된 클래스의 인스턴스수를 추적하는 카운터를 작성하는 방법을 나타냅니다. numInstances 는 정적 변수이므로, 개개의 인스턴스 마다 작성되는 것이 아니라, 클래스 전체로 1 회만 작성됩니다. "Users.as" 라고 하는 새로운 ActionScript 파일을 작성해, 다음의 코드를 입력합니다.
class Users { 
    private static var numInstances:Number = 0; 
    function Users() { 
        numInstances++; 
    } 
    static function get instances() :Number { 
        return numInstances; 
    } 
}
스크립트에 다음의 코드를 입력합니다.
trace(Users.instances); 
var user1:Users = new Users(); 
trace(Users.instances); 
var user2:Users = new Users(); 
trace(Users.instances); 
다음의 예에서는, Users 클래스를 확장해, 정적 변수 및 Methods는 Inheritance되지 않기는 하지만, 서브 클래스에서 참조할 수 있는 것을 나타내고 있습니다.
class PowerUsers extends Users{
    function PowerUsers() {
        instances++;  // unqualified reference to static property Users.instances is legal
    }
}

trace(PowerUsers.instances); // error, cannot access static property using PowerUsers class

See also

superstatement 
사용법
super([arg1, ..., argN])
super.method([arg1, ..., argN])

Methods나 constructor    의 Super 클래스 또는 친버젼을 호출합니다. 클래스 constructor    의 본체내에서 사용하는 경우,super() 명령문(statement)는 constructor    의 Super 클래스 버젼을 호출합니다. Super 클래스 constructor    의 호출에는, 올바른 수의 인수가 지정되고 있을 필요가 있습니다. Super 클래스 constructor    은, 명시적으로 호출할지 어떨지에 관련되지 않고, 반드시 불려 갑니다. 명시적으로 호출하지 않는 경우, 호출은 인수없이 서브 클래스의 constructor    본체의 최초의 명령문(statement)의 전에 자동적으로 삽입됩니다. 즉, 서브 클래스에서 constructor    함수를 정의해, Super 클래스 constructor    이 인수를 취하는 경우는, 올바른 수의 인수를 지정해 Super 클래스 constructor    을 명시적으로 호출할 필요가 있습니다. 그렇지 않은 경우는, 에러가 발생합니다. 다만, ActionScript 2.0 과는 달리, Super 클래스 constructor    에의 호출은, 서브 클래스 constructor    의 최초의 명령문(statement)일 필요는 없습니다.

인스턴스 Methods의 본체로 사용하는 경우는,super 를 닷 (. ) Parameters와 함께 사용해, Methods의 Super 클래스 버젼을 호출할 수가 있습니다. 또, 옵션으로서 Super 클래스 Methods에 인수 (arg1 ... argN) 를 건네줄 수도 있습니다. 이 스타일은, Super 클래스의 Methods에 행동을 추가할 뿐만 아니라, 그 Methods를 사용해 원의 행동을 실행하는 것 같은 서브 클래스 Methods를 작성하는 경우에 편리합니다.

정적 Methods로 super 명령문(statement)를 사용할 수 없습니다.

Parameters
method:Function — Super 클래스에서 호출하는 Methods입니다.
argN:* — Methods의 Super 클래스 버젼 또는 Super 클래스의 constructor    함수에 건네주는 옵션의 Parameters입니다.

See also

switchstatement 
사용법
switch (expression) {
	caseClause: 
	[defaultClause:] 
}

식의 값에 응해, 명령문(statement)에의 전송을 제어합니다. switch 명령문(statement)에는, 어느 case 명령문(statement)도 식에 일치하지 않는 경우에 실행하는 디폴트 케이스를 지정할 필요가 있습니다. 각각의 case 명령문(statement)는,break 명령문(statement)로 종료할 필요가 있습니다. 이것에 의해, 포르스르에라를 회피할 수 있습니다. 포르스르에라가 발생하면, 케이스가 테스트식에 일치하지 않는 경우에서도, 다음의 case 명령문(statement)의 코드가 실행됩니다.

Parameters
expression:* — 임의의 식입니다.

Example
다음의 예에서는, 디폴트 케이스에 포르스르 하는 switch 명령문(statement)를 정의합니다.

var switchExpression:int = 3;
        
switch (switchExpression) {
    case 0:
        trace(0);
        break;
    case 1:
        trace(1);
        break;
    case 2:
        trace(2);
        break;
    default:
        trace("Not 0, 1, or 2");
}

// output: Not 0, 1, or 2

See also

thisprimary expression keyword 
사용법
this

Methods에 포함되는 object에의 참조입니다. 스크립트의 실행시에는,this 키워드는 그 스크립트를 포함한 object를 참조합니다. Methods 본체내에서는,this 키워드는 불려 간 Methods를 포함한 클래스 인스턴스를 참조합니다.


Example
다이나믹 클래스에서 정의된 함수를 호출하려면 ,this 를 사용해 적절한 범위(scope)로 함수를 호출할 필요가 있습니다.
// incorrect version of Simple.as
/*
dynamic class Simple {
    function callfunc() {
        func();
    }
}
*/
// correct version of Simple.as
dynamic class Simple {
    function callfunc() {
        this.func();
    }
}
스크립트에 다음의 코드를 추가합니다.
var simpleObj:Simple = new Simple();
simpleObj.func = function() {
    trace("hello there");
}
simpleObj.callfunc();
상기의 코드는,callfunc() Methods로 this 를 사용했을 경우에 기능합니다. 다만, 부적절한 버젼의 "Simple.as" 를 사용하면 문장구조법 에러가 발생해, 상기의 예에서는 comment out 됩니다.

See also

throwstatement 
사용법
throw expression 

catch 코드 블록에 의해 처리 (캐치)할 수 있는 에러를 생성 (슬로우)합니다. catch 블록이 예외를 캐치 하지 않는 경우는, 슬로우 된 값의 string 표현이 [출력] 패널에 표시됩니다. catch 또는 finally 블록이 예외를 캐치 하지 않는 경우는, 슬로우 된 값의 string 표현이 로그 파일에 기록됩니다.

일반적으로는, Error 클래스 또는 그 서브 클래스의 인스턴스를 슬로우 합니다. 「예」를 참조해 주세요.

Parameters
expression:* — ActionScript 의 식 또는 object입니다.

Example
이 예의 checkEmail() 함수는, 받은 string가 올바른 형식의 전자메일 주소인가 어떤가를 확인합니다. string에 "@" 기호가 포함되지 않은 경우는, 에러를 슬로우 합니다.
function checkEmail(email:String) { 
    if (email.indexOf("@") == -1) { 
        throw new Error("Invalid email address"); 
    } 
} 
checkEmail("someuser_theirdomain.com");
다음에, 이하의 코드로 try 코드 블록내의 같은 checkEmail() 함수를 호출합니다. e-mail string에 유효한 전자메일 주소가 포함되지 않은 경우는,trace 명령문(statement)로 에러 메세지가 출력됩니다.
try { 
    checkEmail("Joe Smith"); 
} 
catch (e) { 
    trace(e); 
}
// output: Error: Invalid email address. 
다음의 예에서는, Error 클래스의 서브 클래스를 슬로우 합니다. checkEmail() 함수가 그 서브 클래스의 인스턴스를 슬로우 하도록(듯이) 수정합니다.
// Define Error subclass InvalidEmailError 
class InvalidEmailAddress extends Error { 
    public function InvalidEmailAddress() {
        message = "Invalid email address. "; 
    }
}
스크립트에 다음의 코드를 입력합니다.
import InvalidEmailAddress; 
function checkEmail(email:String) { 
    if (email.indexOf("@") == -1) { 
        throw new InvalidEmailAddress(); 
    } 
} 
try { 
    checkEmail("Joe Smith"); 
} 
catch (e) { 
    trace(e);
}
// output: Error: Invalid email address. 

See also

trueprimary expression keyword 
사용법
true

true 를 나타내는 불리언 값입니다. 불리언 값은 true 또는 false 의 머지않아인가입니다. true 의 반대는 false 입니다. 자동적인 형태 지정에 의해 true 를 수치로 변환하면, 그 결과는 1 이 됩니다. true 를 string로 변환하면, 그 결과는 "true" 가 됩니다.


Example
다음의 예에서는,if 명령문(statement)로 true 를 사용하고 있습니다.

var shouldExecute:Boolean;
// ...
// code that sets shouldExecute to either true or false goes here
// shouldExecute is set to true for this example:

shouldExecute = true;

if (shouldExecute == true) {
    trace("your statements here");
}

// true is also implied, so the if statement could also be written:
// if (shouldExecute) {
//         trace("your statements here");
// }

다음의 예에서는, 자동적인 형태 지정에 의해 true 를 수치 1 으로 변환하는 방법을 나타내고 있습니다.


var myNum:Number;
myNum = 1 + true;
trace(myNum); // output: 2

See also

try..catch..finallystatement 
사용법
try { 
// try 블록
} finally { 
// finally 블록
} 

try { 
// try 블록
} catch(error[:ErrorType1]) {
// catch 블록
} [catch(error[:ErrorTypeN]) { 
// catch 블록
}] [finally {
// finally 블록
}]

에러가 발생할 가능성이 있는 코드 블록을 둘러싸, 그 에러에 대처합니다. try..catch..finally 명령문(statement)를 사용해 Implements되는 예외 처리는, ActionScript 3.0 으로 런타임 에러의 조건 처리에 사용되는 주요한 메카니즘입니다. 런타임 에러가 발생하면, Flash Player 는 예외를 슬로우 해, 통상의 실행을 일시정지해,Error 형의 특수한 object를 작성합니다. 다음에, 최초로 액세스 가능한 catch 블록에 에러 object를 패스 (슬로우)합니다. 액세스 가능한 catch 블록이 없는 경우, 예외는 불명한 예외라고 보여집니다. 불명한 예외가 발생하면, 스크립트는 종료합니다.

throw 명령문(statement)를 사용해, 코드로 예외를 명시적으로 슬로우 할 수가 있습니다. 임의의 값을 슬로우 할 수 있습니다만, 유연성이 있어 Flash Player 의 행동에 일치하는 object를 슬로우 하는 것이 추천 됩니다.

예외를 캐치 하려면 , Flash Player 또는 작성한 코드로 슬로우 하는 것에 관계없이, 예외를 슬로우 하는 코드를 try 블록에 배치합니다. try 블록내의 코드가 예외를 슬로우 하면, 제어는 catch 블록이 있는 경우는 이것으로 이동해, 다음에 finally 블록이 있는 경우는 이것으로 이동합니다. finally 블록은, 예외가 슬로우 되었는지 어떠했는지에 관련되지 않고, 반드시 실행됩니다. try 블록내의 코드가 예외를 슬로우 하지 않았던 경우 (try 블록이 정상 종료했을 경우),catch 블록내의 코드는 무시됩니다만,finally 블록내의 코드는 실행됩니다. return 명령문(statement)를 사용해 try 블록을 종료했을 경우에서도,finally 블록은 실행됩니다.

try 블록의 뒤에는,catch 블록 또는 finally 블록, 또는 그 양쪽 모두를 계속할 필요가 있습니다. 1 개의 try 블록에 대해서 복수의 catch 블록을 지정할 수 있습니다만,finally 블록은 1 개 밖에 기술할 수 없습니다. try 블록은, 필요한 만큼 무엇 레벨에서도 네스트 할 수 있습니다.

catch 핸들러로 지정하는 error Parameters에는,e,theException, 또는 x 와 같이 단순한 식별자를 사용합니다. Parameters의 형태를 지정할 수도 있습니다. 복수의 catch 블록을 사용하는 경우는, 형태 지정한 Parameters를 사용하는 것으로, 1 개의 try 블록으로부터 슬로우 된 복수의 형태의 에러 object를 캐치 할 수 있습니다.

슬로우 한 예외가 object인 경우, 슬로우 한 object가 지정한 형태의 서브 클래스이면, 형태가 일치합니다. 특정의 형태의 에러가 슬로우 되었을 경우는, 대응하는 에러를 처리하는 catch 블록이 실행됩니다. 지정한 형태가 아닌 예외가 슬로우 되었을 경우,catch 블록은 실행되지 않고,try 블록으로부터 그 에러에 일치하는 catch 핸들러에 대해서 예외가 자동적으로 슬로우 됩니다.

함수의 내부에서 에러가 슬로우 되어 그 함수에 catch 핸들러가 포함되지 않은 경우, 그 함수는 종료합니다. catch 블록이 발견되지 않는 이상 호출원의 함수도 모두 종료합니다. 이 프로세스의 사이에, 모든 레벨의 finally 핸들러가 불려 갑니다.

Parameters
error:* throw 명령문(statement)로 슬로우 되는 식입니다. 통상은 Error 클래스 또는 그 서브 클래스의 인스턴스입니다.

Example
다음에,try..catch 명령문(statement)의 사용예를 나타냅니다. try 블록내의 코드로 무효인 조작이 지정되고 있습니다. 스프라이트는 자신을 아이로서 추가할 수 없습니다. 이 때문에, Flash Player 는 예외를 슬로우 해, ArgumentError 형의 object를 대응하는 catch 블록에 건네줍니다.
import flash.display.Sprite;

var spr:Sprite = new Sprite();
try {
    spr.addChild(spr);
}
catch (e:ArgumentError) {
    trace (e); // output: ArgumentError: Error #2024: An object may not be added as a child of itself.
}
다음의 예에서는, RecordSetException object와 MalformedRecord object는 Error 클래스의 서브 클래스입니다.
class RecordSetException extends Error { 
    public function RecordSetException () {
        message = "Record set exception occurred. "; 
    }
}

class MalformedRecord extends Error { 
    public function MalformedRecord {
        message = "Malformed record exception occurred. "; 
    }
}
RecordSet 클래스의 sortRows() Methods에서는, 발생한 예외의 형태에 응해, 이러한 정의가 끝난 object의 어느쪽이든을 슬로우 합니다. 다음에 예를 나타냅니다.
class RecordSet { 
    public function sortRows() { 
        var returnVal:Number = randomNum(); 
        if (returnVal == 1) { 
            throw new RecordSetException(); 
        } 
        else if (returnVal == 2) { 
            throw new MalformedRecord(); 
        } 
    }
    public function randomNum() :Number { 
        return Math.round(Math.random() * 10) % 3; 
    }
}
마지막으로, 다음의 코드에서는 RecordSet 클래스의 인스턴스로 sortRows() Methods를 호출합니다. 이 코드에서는,sortRows() 로 슬로우 되는 에러 object의 형태 마다,catch 블록을 정의하고 있습니다.
import RecordSet; 
var myRecordSet:RecordSet = new RecordSet();
try { 
    myRecordSet.sortRows(); 
    trace("everything is fine"); 
} 
catch (e:RecordSetException) { 
    trace(e.toString()); 
} 
catch (e:MalformedRecord) { 
    trace(e.toString()); 
}

See also

use namespacedirective 
사용법
use namespace ns1[, ns2, ...nsN]

지정한 namespace를 개방적인 namespace세트에 추가합니다. 지정한 namespace은, 현재의 코드 블록이 종료하면, 개방적인 namespace세트로부터 삭제됩니다. use namespace 지시문은, 프로그램, 패키지 정의, 또는 클래스 정의의 최상정도의 레벨에 표시할 수 있습니다.

Parameters
nsN:Namespace — 개방적인 namespace세트에 추가된 namespace입니다.

See also

vardefinition keyword 
사용법
var variableName [= value1][...,variableNameN[=valueN]] 

변수를 지정합니다. 함수내에서 변수를 선언했을 경우, 그 변수는 로컬입니다. 변수는 그 함수용으로 정의되어 함수 호출의 종료시에 범위(scope)로부터 빗나갑니다.

함수외에서 변수를 선언했을 경우, 그 변수는, 그 명령문(statement)가 포함되는 타임 라인 전체로 사용할 수 있습니다.

다른 object의 범위(scope)내의 변수를 로컬 변수로서 선언할 수 없습니다.

my_array.length = 25; // ok 
var my_array.length = 25; // 문장구조법 에러 

데이터형의 뒤에 구두점을 붙여, 변수에 데이터형을 할당할 수가 있습니다.

칸마로 선언을 단락짓는 것으로, 1 개의 명령문(statement)로 복수의 변수를 선언할 수 있습니다. 다만, 이 문장구조법을 사용하면, 코드가 읽기 어려워지는 경우가 있습니다.

var first:String = "Bart", middle:String = "J. ", last:String = "Bartleby";

Parameters
variableName:* — 식별자입니다.

Example
다음의 ActionScript 에서는, 제품명의 새로운 배열을 작성합니다. Array.push 를 사용해, 배열의 말미에 엘리먼트를 추가합니다.
var product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); 
product_array.push("Flex"); 
trace(product_array); 
// output: Studio, Dreamweaver, Flash, ColdFusion, Contribute, Breeze, Flex

See also

whilestatement 
사용법
while (condition) { 
	// 명령문(statement)
}

조건을 평가해, 조건의 평가 결과가 true 가 되는 경우는 명령문(statement)를 실행합니다. 그 후, 루프의 선두로 돌아가, 다시 조건을 평가합니다. 조건의 평가 결과가 false 가 되면, 명령문(statement)는 스킵 되어 루프는 종료합니다.

while 명령문(statement)는, 다음의 순서를 실행합니다. 순서 1 ~ 4 의 각 반복은 루프의반복으로 불립니다. 다음의 순서에 나타내도록(듯이), 조건은 각 반복의 초에 테스트됩니다.

  1. condition 가 평가됩니다.
  2. condition 의 평가가 true 인지, 불리언 값 true 에 변환되는 값 (제로 이외의 수치등)인 경우는, 순서 3 에 진행됩니다.
    그 이외의 경우는,while 명령문(statement)를 종료해,while 루프의 직후의 명령문(statement)로부터 실행이 재개됩니다.
  3. 명령문(statement) 블록 statement(s) 를 실행합니다. continue 명령문(statement)가 검출되었을 경우는, 나머지의 명령문(statement)를 스킵 해, 순서 1 에 진행됩니다. break 명령문(statement)가 검출되었을 경우는,while 명령문(statement)를 종료해,while 루프의 직후의 명령문(statement)로부터 실행이 재개됩니다.
  4. 순서 1 에 진행됩니다.

일반적으로 루프 처리는, 카운터 변수가 지정치보다 작은 동안은 액션을 실행한다고 하는 경우에 사용합니다. 각 루프의 최후로, 지정된 값에 이를 때까지 카운터가 인크리먼트(increment) 됩니다. 지정된 값에 이르면,conditiontrue 가 아니게 되어, 루프는 종료합니다.

실행하는 명령문(statement)가 1 개 밖에 없는 경우,while 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.

Parameters
condition:Boolean — 평가 결과가 true 또는 false 가 되는 식입니다.

Example
다음의 예에서는,while 명령문(statement)를 사용해 식을 테스트합니다. i 의 값이 20 미만의 경우에,i 의 값이 트레이스 됩니다. 조건이 true 가 아니게 되면, 루프는 종료합니다.
var i:Number = 0; 
while (i < 20) { 
    trace(i); 
    i += 3; 
}
/* output:
0 
3 
6 
9 
12
15 
18
*/

See also

withstatement 
사용법
with (object:Object) { 
	// 명령문(statement)
}

명령문(statement)의 실행에 사용하는 디폴트의 object를 설정합니다. 기술하는 코드의 양을 줄일 수가 있습니다.

object Parameters는,statement(s) Parameters의 property, 변수, 및 함수를 읽어낼 때의 문맥이 됩니다. 예를 들어,objectmy_array 이며, 지정된 property 가운데 2 개가 lengthconcat 인 경우, 이러한 property는 my_array.lengthmy_array.concat 로서 자동적으로 읽어내집니다. 다른 예로,objectstate.california 인 경우,with 명령문(statement)내의 액션 또는 명령문(statement)는 california 인스턴스내로부터 불려 갑니다.

statement(s) Parameters로 식별자의 값을 검색하는 경우, ActionScript 는 object 로 지정된 범위(scope) 체인의 선두로부터 개시해, 특정의 순서로 범위(scope) 체인의 각 레벨로 식별자를 검색합니다.

식별자를 해결하기 위해서 with 명령문(statement)로 사용되는 범위(scope) 체인은, 다음의 리스트의 최초의 항목으로부터 시작되어, 마지막 항목까지 계속됩니다.

with 명령문(statement)내에 변수를 설정하려면 ,with 명령문(statement)의 외측에서 변수를 선언해 두는지, 변수를 설정하는 타임 라인에의 풀 패스를 입력할 필요가 있습니다. 변수를 선언하지 않고 with 명령문(statement)로 설정하면,with 명령문(statement)는 범위(scope) 체인에 따라 값을 검색합니다. 변수가 아직 존재하지 않는 경우,with 명령문(statement)가 불려 간 타임 라인상에 새로운 값이 설정됩니다.

Parameters
object:Object — ActionScript object 또는 무비 클립의 인스턴스입니다.

Example
다음의 예에서는,someOther_mc 인스턴스의 _x property와 _y property를 설정하고 나서, 프레임 3 에 진행되어 정지하도록(듯이) someOther_mc 에 지시합니다.
with (someOther_mc) { 
    _x = 50; 
    _y = 100; 
    gotoAndStop(3); 
}
다음의 코드예에서는,with 명령문(statement)를 사용하지 않고 , 상기의 코드를 기술하고 있습니다.
someOther_mc. _x = 50; 
someOther_mc. _y = 100; 
someOther_mc.gotoAndStop(3);

with 명령문(statement)는, 범위(scope) 체인 리스트내의 복수의 항목에 동시에 액세스 하는 경우에 편리합니다. 다음의 예에서는, 빌트인 의 Math object를 범위(scope) 체인의 전으로 설정합니다. Math 를 디폴트 object로서 설정하면,cos,sin,PI 의 각 식별자가 각각 Math.cos,Math.sin,Math.PI 에 해결됩니다. a,x,y,r 의 각 식별자는 Math object의 Methods나 property가 아닙니다만, 함수 polar() 의 object 액티베이션 범위(scope)내에 존재하므로, 각각 대응하는 로컬 변수로서 처리됩니다.

function polar(r:Number) :void { 
    var a:Number, x:Number, y:Number; 
    with (Math) { 
        a = PI * pow(r, 2); 
        x = r * cos(PI); 
        y = r * sin(PI / 2); 
    } 
    trace("area = " + a); 
    trace("x = " + x); 
    trace("y = " + y); 
} polar(3);
/* output: 
area = 28.2743338823081 
x = -3 
y = 3
*/



 

코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트

현재의 페이지: http://flexdocs.kr/docs/flex2/langref/statements.html