명령문(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 를 나타내는 불리언 값입니다. | |
| ... (rest) parameter | definition 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 를 사용할 필요는 없습니다.
rest:* —
함수에게 건네지는 인수의 배열명을 나타내는 식별자입니다. 이 Parameters의 이름을 rest 로 할 필요는 없습니다. 키워드 이외의 임의의 이름을 붙일 수가 있습니다. ... (rest) Parameters의 데이터형을 Array 와 지정할 수 있습니다만, 혼란의 원인이 되는 경우가 있습니다. Parameters는 칸마 단락의 값의 리스트를 받아들입니다만, Array 클래스의 인스턴스와는 다릅니다.
|
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
| AS3 | namespace |
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
| break | statement |
|
루프 (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)의 항목을 참조해 주세요.
label:* —
명령문(statement)와 관련지을 수 있었던 label의 이름입니다.
|
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
| case | statement |
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)가 실행됩니다.
jumpTarget:* —
임의의 식입니다.
|
|
statements:* —
jumpTarget 가 switch 명령문(statement)의 조건식에 일치했을 경우에 실행되는 명령문(statement)입니다.
|
switch 명령문(statement)의 thisMonth 의 점프 타겟을 정의하고 있습니다. thisMonth 가 case 명령문(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
| class | definition 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
className:Class —
클래스의 완전 수식명입니다.
|
// 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
| const | definition keyword |
const identifier = value |
정수 (값을 1 회만 할당할 수가 있는 변수)를 지정합니다.
데이터형의 뒤에 구두점 (:)을 붙여, 엄밀하게 정수를 형태 지정할 수 있습니다.
Parametersidentifier:* —
정수의 식별자입니다.
|
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
| continue | statement |
continue [label] |
루프의 마지막까지 제어가 통과했는지와 같이, 가장 안쪽의 루프내의 나머지의 명령문(statement)를 모두 스킵 해, 루프의 다음의 반복을 개시합니다. continue 명령문(statement)는 루프의 외부에서는 작용하지 않습니다. 네스트 된 루프에서는, 옵션의 label Parameters를 사용하면, 가장 안쪽의 루프 이외도 스킵 할 수 있습니다.
continue 명령문(statement)에는, 옵션의 label를 지정할 수 있습니다만, 이 label는 외측의 명령문(statement)의 label와 일치하고 있을 필요가 있습니다. 외측의 명령문(statement)의 label와 일치하지 않는 label를 사용하면, 문장구조법 에러가 발생합니다. label 첨부의 continue 명령문(statement)를 사용하면, 네스트 된 루프 명령문(statement)의 복수의 레벨을 스킵 할 수 있습니다.
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
| default | statement |
default:statements |
switch 명령문(statement)의 디폴트 케이스를 정의합니다. 이 명령문(statement)가 실행되는 것은,switch 명령문(statement)의 expression Parameters가, 소정의 switch 명령문(statement)의 case 키워드에 계속되는 expression Parameters와 동일하지 않은 경우입니다 (엄밀한 등가 [===] 를 사용).
switch 명령문(statement)에 default 케이스 명령문(statement)는 필수가 아닙니다. default 케이스 명령문(statement)는, 리스트의 마지막에 둘 필요는 없습니다. default 명령문(statement)를 switch 명령문(statement)의 외측에서 사용하면, 에러가 발생해, 스크립트는 컴파일 되지 않습니다.
statements:* —
임의의 명령문(statement)입니다.
|
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 namespace | directive |
|
default xml namespace 지시문은, XML object에 사용하는 디폴트의 namespace를 설정합니다.
default xml namespace 를 설정하지 않는 경우, 디폴트의 namespace은 이름이 없는 namespace가 되어, empty의 string로 설정된 URI 가 설정됩니다. default xml namespace 선언의 범위(scope)는, 변수의 범위(scope)와 같이 함수 블록내입니다.
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..while | statement |
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 루프의 대신으로서 사용할 수 있는 것은 아닙니다.
condition:Boolean —
평가하는 조건입니다. 코드의 do 블록내의 statement(s) 는,condition Parameters의 평가가 true 인 한 실행됩니다.
|
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
| dynamic | attribute keyword |
dynamic class className { // 여기에 클래스 정의를 기술 } |
실행시에 추가된 dynamic property를 클래스의 인스턴스로 보유하도록(듯이) 지정합니다. 클래스에서 dynamic 속성을 사용하는 경우는, 실행시에 클래스의 인스턴스에 property를 추가할 수 있습니다. dynamic 와 지정되어 있지 않은 클래스는 sealed 라고 보여집니다. sealed 클래스의 인스턴스에는, property를 추가할 수 없습니다.
클래스가 dynamic 는 아니고 sealed 의 경우, 클래스 인스턴스로 property를 취득 또는 설정하려고 하면, 결과는 에러가 됩니다. 컴파일러를 strict 모드로 설정해, 인스턴스를 작성할 경우에 데이터형을 지정하는 경우는, property를 sealed object에 추가하려고 하면, 컴파일러 에러 또는 런타임 에러가 발생합니다.
dynamic 속성은 서브 클래스에 Inheritance되지 않습니다. dynamic 클래스를 확장했을 경우는, 서브 클래스에서 dynamic 속성을 선언했을 경우에게만 서브 클래스가 dynamic 가 됩니다.
package {
dynamic class Expando {
}
class Sealed {
}
}
var myExpando:Expando = new Expando(); myExpando.prop1 = "new"; trace(myExpando.prop1); // output: new
var mySealed:Sealed = new Sealed(); mySealed.prop1 = "newer"; // error
See also
| else | statement |
if (condition) {
// 명령문(statement)
}
else {
// 명령문(statement)
} |
if 명령문(statement)의 조건이 false 를 돌려주었을 때에 실행하는 명령문(statement)를 지정합니다. 실행하는 명령문(statement)가 1 개 밖에 없는 경우,else 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.
condition:Boolean —
평가 결과가 true 또는 false 가 되는 식입니다.
|
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");if 및 else 명령문(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
| extends | definition keyword |
class className extends otherClassName {}
interface interfaceName extends otherInterfaceName {} |
다른 클래스의 서브 클래스로 하는 클래스를 정의합니다. 서브 클래스는, Super 클래스에서 정의되고 있는 Methods, property, 함수등을 모두 Inheritance합니다. final 와 마크 된 클래스는 확장할 수 없습니다.
extends 키워드를 사용해, 인터페이스를 확장할 수도 있습니다. 다른 인터페이스를 확장한 인터페이스에는, 원의 인터페이스의 Methods 선언이 모두 포함됩니다.
className:Class —
정의하는 클래스의 이름입니다.
|
다음의 예에서는, 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");
}
}
}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");
}
}
}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");
}
}
}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
| false | primary expression keyword |
false |
false 를 나타내는 불리언 값입니다. 불리언 값은 true 또는 false 의 머지않아인가입니다. false 의 반대는 true 입니다.
자동적인 형태 지정에 의해 false 를 수치로 변환하면, 그 결과는 0 이 됩니다. false 를 string로 변환하면, 그 결과는 "false" 가 됩니다.
메모 : string "false" 는 불리언 값 true 에 변환됩니다.
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
| final | attribute keyword |
final function methodName() {
// 여기에 명령문(statement)를 기술
}
final class className {} |
Methods의 재정의(override) 또는 클래스의 확장을 제한합니다. final 와 지정된 Methods의 재정의(override)나, 클래스의 확장을 시행하면, 결과는 에러가 됩니다.
methodName:Function —
재정의(override)를 제한하는 Methods의 이름입니다.
|
|
className:Class —
확장을 제한하는 클래스의 이름입니다.
|
See also
| flash_proxy | namespace |
Proxy 클래스의 Methods를 정의합니다. Proxy 클래스 Methods는 자신의 namespace내에 있어, Proxy 클래스 Methods명으로 일치하는 인스턴스 Methods명이 Proxy 서브 클래스에 포함되는 경우에, 이름이 경합 하지 않게 되어 있습니다.
See also
| for | statement |
for ([init]; [condition]; [next]) {
// 명령문(statement)
}
|
init (초기화) 식을 1 회만 평가하고 나서, 루프 순차 순서를 개시합니다. 루프 순차 순서는,condition 식을 평가하는 것으로 개시됩니다. condition 식의 평가 결과가 true 의 경우는,statement 가 실행되어next 가 평가됩니다. 그 후,condition 식의 평가로부터 루프 순차 순서가 다시 개시됩니다.
실행하는 명령문(statement)가 1 개 밖에 없는 경우,for 명령문(statement)로 실행하는 명령문(statement) 블록을 둘러싸는 중 괄호 ({})는 필요 없습니다.
init —
루프의 개시전에 평가되는 임의의 식입니다. 통상은 대입식입니다. 이 Parameters에 대해서,var 명령문(statement)를 실행할 수도 있습니다.
|
|
condition —
루프의 개시전에 평가되는 임의의 식입니다. 통상은 비교식입니다. 식의 평가 결과가 true 의 경우,for 명령문(statement)에 관련지을 수 있고 있는 명령문(statement)가 실행됩니다.
|
|
next —
루프 순차 순서의 뒤에 평가되는 임의의 식입니다. 통상은 인크리먼트(increment)식 또는 감소식입니다.
|
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{})를 붙일 필요가 없는 것을 나타내고 있습니다.
var sum:Number = 0;
for (var i:Number = 1; i <= 100; i++)
sum += i;
trace(sum); // output: 5050See also
| for..in | statement |
for (variableIterant:String in object){
// 명령문(statement)
} |
object의 동적 property 또는 배열의 엘리먼트에 대해서 반복 처리를 실시해, 각 property 또는 엘리먼트에 대해서 statement 를 실행합니다. for..in 명령문(statement)에서는, 클래스에 정의된 변수나 Methods등의 고정 property는 열거되지 않습니다. 고정 property의 리스트를 취득하려면 , flash.utils 패키지에 있는 describeType() 함수를 사용합니다.
variableIterant:String —
반복자로서 동작해, object의 property 또는 배열내의 엘리먼트를 참조하는 변수의 이름입니다.
|
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..in 로 typeof 연산자를 사용해, 특정의 형태의 아이에 대해서 반복 처리를 실시합니다.
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..in | statement |
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의 값에 대해서 반복 처리를 실시합니다.
variableIterant:* —
반복자로서 동작해, 콜렉션의 아이템을 참조하는 변수의 이름입니다.
|
|
object:Object —
반복 처리를 실시하는 콜렉션의 이름입니다. 콜렉션은, XML object, 범용 object, 또는 배열로 할 수가 있습니다.
|
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..in 로 is 연산자를 사용해, 특정의 형태의 아이에 대해서 반복 처리를 실시합니다.
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
| function | definition 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를 받는 함수나 재귀적인 익명 함수를 작성하는 경우에 사용합니다.
functionName:Function —
새로운 함수의 이름입니다.
|
|
returnType:* —
반환값의 데이터형입니다.
|
sqr 를 정의합니다.
function sqr(xNum:Number) {
return Math.pow(xNum, 2);
}
var yNum:Number = sqr(3);
trace(yNum); // output: 9var yNum:Number = sqr(3);
trace(yNum); // output: 9
function sqr(xNum:Number) {
return Math.pow(xNum, 2);
}See also
| get | definition 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 를 작성합니다.
property:* —
get 가 액세스 하는 property의 식별자입니다. 이 값은 대응하는 set 커멘드로 사용되는 값과 같은 필요가 있습니다.
|
|
returnType:* —
반환값의 데이터형입니다.
|
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
| if | statement |
if (condition) {
// 명령문(statement)
} |
조건을 평가해, 다음의 명령문(statement)를 실행할지 어떨지를 판정합니다. 조건이 true 의 경우는, 조건에 계속되는 중 괄호 ({}) 내의 명령문(statement)가 실행됩니다. 조건이 false 의 경우는, 안괄호내의 명령문(statement)를 스킵 해, 안괄호의 뒤의 명령문(statement)가 실행됩니다. 스크립트내에 분기 처리를 작성하려면 ,if 명령문(statement)와 else 명령문(statement)를 조합합니다.
실행하는 명령문(statement)가 1 개 밖에 없는 경우,if 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.
condition:Boolean —
평가 결과가 true 또는 false 가 되는 식입니다.
|
See also
| implements | definition keyword |
myClass implements interface01 [, interface02 , ...] |
클래스에서 인터페이스를 Implements할지 어떨지를 지정합니다. 클래스에서 인터페이스를 Implements하는 경우, 인터페이스로 선언 떠날 수 있어 모든 Methods를 클래스에서 정의할 필요가 있습니다. 인터페이스를 Implements하는 클래스의 인스턴스는, 인터페이스가 정의하는 데이터형의 멤버라고 보여집니다. 이 때문에,is 연산자는, 최초의 오퍼랜드가 클래스 인스턴스로, 다음의 오퍼랜드가 인터페이스가 되고 있어 게다가 데이터형의 강제형 변환이 인터페이스 조작으로 정의되고 있는 경우에 true 를 돌려줍니다.
See also
| import | directive |
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 지시문을 추가할 필요가 있습니다.
packageName:* —
다른 클래스 파일로 정의한 패키지의 이름입니다.
|
|
className:Class —
다른 클래스 파일로 정의한 클래스의 이름입니다.
|
See also
| include | directive |
include "[path]filename.as" |
지정한 파일내의 커멘드를 호출해 원의 스크립트에 인클루드 해, 그 스크립트의 일부인것 같이 취급합니다. include 지시문은, 컴파일시에 불려 갑니다. 이 때문에, 인클루드 파일에 어떠한 변경을 실시했을 경우는, 파일을 보존해, 파일을 사용하는 SWF 파일을 재컴파일 할 필요가 있습니다.
See also
| interface | definition keyword |
interface InterfaceName [extends InterfaceName ] {} |
인터페이스를 정의합니다. 인터페이스란, Methods세트를 정의하는 데이터형입니다. 이 Methods는, 인터페이스를 Implements하는 모든 클래스에서 정의될 필요가 있습니다.
인터페이스는 클래스를 닮아 있습니다만, 다음에 나타내는 중요한 차이가 있습니다.
public 또는 private 등의 속성을 지정할 수 없습니다만, Implements된 Methods는 인터페이스를 Implements하는 클래스의 정의로 public 와 지정할 필요가 있습니다. extends 명령문(statement) 또는 implements 명령문(statement)를 개입시킨 클래스를 사용해, 인터페이스로 복수의 인터페이스를 Inheritance할 수가 있습니다. ActionScript 2.0 과는 달리, ActionScript 3.0 에서는 인터페이스 정의로 getter 및 setter Methods를 사용할 수 있습니다.
See also
| internal | attribute keyword |
[internal] var varName
[internal] const kName
[internal] function functionName() {
// 여기에 명령문(statement)를 기술
}
[internal] class className{
// 여기에 명령문(statement)를 기술
}
[internal] namespace nsName
|
클래스, 변수, 정수, 또는 함수에 같은 패키지내의 모든 호출원으로부터 액세스 할 수 있도록(듯이) 지정합니다. 디폴트에서는, 클래스, property, 및 Methods는 internal namespace에 속합니다.
className:Class —
internal 로서 지정하는 클래스의 이름입니다.
|
|
varName:* —
internal 로서 지정하는 변수의 이름입니다. internal 속성은, 변수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
kName:* —
internal 로서 지정하는 정수의 이름입니다. internal 속성은, 정수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
functionName:Function —
internal 로서 지정하는 함수 또는 Methods의 이름입니다. internal 속성은, 함수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
nsName:Namespace —
internal 로서 지정하는 namespace의 이름입니다. internal 속성은, namespace가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
See also
| label | statement |
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)내에 배치할 수 있습니다.
label:* —
명령문(statement)에 관련짓는 유효한 식별자입니다.
|
|
statements:* —
label에 관련짓는 명령문(statement)입니다.
|
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
| namespace | definition keyword |
namespace name [= uri] |
정의의 가시성을 제어할 수 있습니다. 정의 끝난 namespace에는,public,private,protected, 및 internal 가 있습니다.
다음에, namespace를 작성, 적용, 참조하는 순서를 나타냅니다.
namespace 키워드를 사용해, custom namespace를 정의합니다. 예를 들어, 코드 namespace version1 에서는 version1 라는 namespace가 작성됩니다. version1 myProperty:String 에서는 version1 namespace에 속하는 myProperty 라는 이름의 property가 작성됩니다. use 키워드를 사용하는지, 접두사로서 식별자에 namespace를 붙여, namespace를 참조합니다. 예를 들어, 코드 use namespace version1; 에서는 이후의 코드행으로 version1 namespace가 참조됩니다. 코드 version1::myProperty 에서는 myProperty property에 대해서 version1 namespace가 참조됩니다. name:Namespace —
namespace의 이름입니다. 유효한 식별자를 사용할 수 있습니다.
|
|
uri:String —
namespace의 URI 입니다. 이 Parameters는 옵션입니다.
|
See also
| native | attribute keyword |
native function functionName();
class className {
native function methodName();
} |
Flash Player 가 native code로 함수 또는 Methods를 Implements하도록(듯이) 지정합니다. Flash Player 에서는,native 키워드를 내부적으로 사용해, ActionScript 어플리케이션 프로그래밍 인터페이스 (API)로 함수 및 Methods를 선언합니다. 이 키워드는, 독자적으로 작성하는 코드에서는 사용할 수 없습니다.
| null | primary expression keyword |
null |
변수에 할당할 수가 있는 특별한 값, 또는 데이터가 없는 경우에 함수로부터 돌려주어지는 특수한 값입니다. null 는, 존재하지 않는, 또는 정의되어 있지 않은 데이터형을 나타내는 값으로 해서 사용됩니다.
null 값는 특수한 값 undefined 와 혼동 하지 않게 해 주세요. null 와 undefined 를 등가 연산자 (==)로 비교하면, 결과는 true 가 됩니다. 다만,null 와 undefined 를 엄밀한 등가 연산자 (===)로 비교하면, 결과는 false 가 됩니다.
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_proxy | namespace |
ObjectProxy 클래스의 Methods를 정의합니다. ObjectProxy 클래스 Methods는 자신의 namespace내에 있어, Proxy 클래스 Methods명으로 일치하는 인스턴스 Methods명이 Proxy 서브 클래스에 포함되는 경우에, 이름이 경합 하지 않게 되어 있습니다.
| override | attribute keyword |
override function name() {
// 여기에 명령문(statement)를 기술
}
|
Methods로 Inheritance한 Methods를 옮겨놓도록(듯이) 지정합니다. Inheritance한 Methods를 재정의(override) 하려면 ,override 속성을 사용할 필요가 있습니다. 이름, 수치, Parameters의 형태, 및 반환값의 형태는 완전하게 일치할 필요가 있습니다. override 속성을 사용하지 않고 Methods를 재정의(override) 하려고 하면 에러가 발생합니다. 같이 Methods에 일치하는 Inheritance된 Methods가 없는 경우에,override 속성을 사용하면 에러가 발생합니다.
다음의 장소에서 override 속성을 사용할 수 없습니다.
final 와 지정되고 있는 Inheritance된 Methodsvar 또는 const 로 선언된 property를 재정의(override) 할 수 없습니다만, 기본 클래스의 property를 getter-setter 로 해,get 및 set 로 정의된 Methods를 재정의(override) 하는 것으로, 같은 기능을 실현할 수가 있습니다.
name:Function —
재정의(override) 하는 Methods의 이름입니다.
|
See also
| package | definition keyword |
package packageName {
class someClassName {
}
} |
다른 스크립트로부터 읽어들인 개별의 그룹에 코드를 분류할 수 있습니다. 클래스가 패키지의 멤버인 것을 나타내려면 ,package 키워드를 사용할 필요가 있습니다.
packageName:* —
패키지의 이름입니다.
|
See also
| private | attribute 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 는, 클래스 또는 그 외의 모든 패키지 레벨의 정의에는 적용할 수 없습니다.
varName:* —
private 로서 지정하는 변수의 이름입니다. private 속성은, 변수가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
kName:* —
private 로서 지정하는 정수의 이름입니다. private 속성은, 정수가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
methodName:Function —
private 로서 지정하는 Methods의 이름입니다. private 속성은, Methods가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
nsName:Namespace —
private 로서 지정하는 namespace의 이름입니다. private 속성은, namespace가 클래스내에 있는 경우만 적용할 수 있습니다.
|
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
| protected | attribute 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 의 서브 클래스가 아닌 경우도 같습니다.
varName:* —
protected 로서 지정하는 변수의 이름입니다. protected 속성은, 변수가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
kName:* —
protected 로서 지정하는 정수의 이름입니다. protected 속성은, 정수가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
methodName:Function —
protected 로서 지정하는 Methods의 이름입니다. protected 속성은, Methods가 클래스내에 있는 경우만 적용할 수 있습니다.
|
|
nsName:Namespace —
protected 로서 지정하는 namespace의 이름입니다. protected 속성은, namespace가 클래스내에 있는 경우만 적용할 수 있습니다.
|
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
| public | attribute keyword |
public var varName
public const kName
public function functionName() {
// 여기에 명령문(statement)를 기술
}
public class className {
// 여기에 명령문(statement)를 기술
}
public namespace nsName
|
클래스, 변수, 정수, 또는 Methods에 모든 호출원으로부터 액세스 할 수 있도록(듯이) 지정합니다. 클래스, 변수, 및 Methods는 디폴트에서는 내부 클래스입니다. 즉, 현재의 패키지내에게만 표시됩니다. 클래스, 변수, 또는 Methods에 모든 호출원으로부터 액세스 할 수 있도록(듯이) 하려면 ,public 속성을 사용할 필요가 있습니다.
className:Class —
public 로서 지정하는 클래스의 이름입니다.
|
|
varName:* —
public 로서 지정하는 변수의 이름입니다. public 속성은, 변수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
kName:* —
public 로서 지정하는 정수의 이름입니다. public 속성은, 정수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
functionName:Function —
public 로서 지정하는 함수 또는 Methods의 이름입니다. public 속성은, 함수가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
|
nsName:Namespace —
public 로서 지정하는 namespace의 이름입니다. public 속성은, namespace가 클래스의 일부인가 어떤가에 관련되지 않고 적용할 수 있습니다.
|
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 jimmyUser 클래스의 몇개의 Public 변수를 프라이빗 변수로 변경했을 경우, User 클래스의 밖으로부터 변수에 액세스 하려고 하면, 컴파일시 에러가 생성됩니다.
See also
| return | statement |
function functionName () {
return [expression]
} |
실행을 호출해 원의 함수에 즉시 돌려줍니다. return 명령문(statement)의 뒤에 식이 계속되는 경우는, 식이 평가되어 결과가 돌려주어집니다.
함수의 정의에 반환값의 형태가 포함되어 있는 경우는,return 명령문(statement)의 뒤에 식을 계속할 필요가 있습니다. 반환값의 형태가 지정되지 않고,return 명령문(statement)가 단독으로 사용되고 있는 경우는,undefined 를 돌려줍니다.
복수의 값을 취득할 수 없습니다. 복수의 값을 취득하려고 했을 경우는, 마지막 값만이 돌려주어집니다. 다음의 예에서는,c 가 돌려주어집니다.
return a, b, c ;
복수의 값을 취득할 필요가 있는 경우는, 대신에 배열 또는 object를 사용합니다.
Parametersexpression:* —
평가를 실시해 함수의 값으로 해서 돌려주는 식입니다. 이 Parameters는 옵션입니다.
|
* — expression Parameters의 평가 (지정되고 있는 경우)입니다. |
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: 114See also
| set | definition 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 를 작성합니다.
property:* —
set 가 수정하는 property의 식별자입니다. 이 값은 대응하는 get 커멘드로 사용되는 값과 같은 필요가 있습니다.
|
|
newValue:* —
할당하는 새로운 값입니다.
|
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
| static | attribute 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"); // errorstatic 는, 클래스 정의에서만 사용할 수 있습니다. 인터페이스 정의에서는 사용할 수 없습니다.
정적 클래스 멤버는 Inheritance되지 않습니다. Java 나 C++ 와 같이, 서브 클래스명을 사용해 정적 클래스 멤버를 참조할 수 없습니다. 다만, 수식자를 사용하지 않고 , 클래스 또는 서브 클래스내의 정적 변수 또는 Methods를 참조할 수 있습니다. 다음의 예를 참조해 주세요.
정적 Methods내에서는,super 명령문(statement) 또는 this 키워드는 사용할 수 없습니다.
varName:* —
static 로서 지정하는 변수의 이름.
|
|
kName:* —
static 로서 지정하는 정수의 이름입니다.
|
|
methodName:Function —
static 로서 지정하는 Methods의 이름입니다.
|
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);
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
| super | statement |
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)를 사용할 수 없습니다.
method:Function —
Super 클래스에서 호출하는 Methods입니다.
|
|
argN:* —
Methods의 Super 클래스 버젼 또는 Super 클래스의 constructor 함수에 건네주는 옵션의 Parameters입니다.
|
See also
| switch | statement |
switch (expression) {
caseClause:
[defaultClause:]
} |
식의 값에 응해, 명령문(statement)에의 전송을 제어합니다. switch 명령문(statement)에는, 어느 case 명령문(statement)도 식에 일치하지 않는 경우에 실행하는 디폴트 케이스를 지정할 필요가 있습니다. 각각의 case 명령문(statement)는,break 명령문(statement)로 종료할 필요가 있습니다. 이것에 의해, 포르스르에라를 회피할 수 있습니다. 포르스르에라가 발생하면, 케이스가 테스트식에 일치하지 않는 경우에서도, 다음의 case 명령문(statement)의 코드가 실행됩니다.
expression:* —
임의의 식입니다.
|
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
| this | primary expression keyword |
this |
Methods에 포함되는 object에의 참조입니다. 스크립트의 실행시에는,this 키워드는 그 스크립트를 포함한 object를 참조합니다. Methods 본체내에서는,this 키워드는 불려 간 Methods를 포함한 클래스 인스턴스를 참조합니다.
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
| throw | statement |
throw expression |
catch 코드 블록에 의해 처리 (캐치)할 수 있는 에러를 생성 (슬로우)합니다. catch 블록이 예외를 캐치 하지 않는 경우는, 슬로우 된 값의 string 표현이 [출력] 패널에 표시됩니다. catch 또는 finally 블록이 예외를 캐치 하지 않는 경우는, 슬로우 된 값의 string 표현이 로그 파일에 기록됩니다.
일반적으로는, Error 클래스 또는 그 서브 클래스의 인스턴스를 슬로우 합니다. 「예」를 참조해 주세요.
Parametersexpression:* —
ActionScript 의 식 또는 object입니다.
|
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. 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
| true | primary expression keyword |
true |
true 를 나타내는 불리언 값입니다. 불리언 값은 true 또는 false 의 머지않아인가입니다. true 의 반대는 false 입니다. 자동적인 형태 지정에 의해 true 를 수치로 변환하면, 그 결과는 1 이 됩니다. true 를 string로 변환하면, 그 결과는 "true" 가 됩니다.
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..finally | statement |
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 핸들러가 불려 갑니다.
error:* —
throw 명령문(statement)로 슬로우 되는 식입니다. 통상은 Error 클래스 또는 그 서브 클래스의 인스턴스입니다.
|
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.
}
class RecordSetException extends Error {
public function RecordSetException () {
message = "Record set exception occurred. ";
}
}
class MalformedRecord extends Error {
public function MalformedRecord {
message = "Malformed record exception occurred. ";
}
}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;
}
}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 namespace | directive |
use namespace ns1[, ns2, ...nsN] |
지정한 namespace를 개방적인 namespace세트에 추가합니다. 지정한 namespace은, 현재의 코드 블록이 종료하면, 개방적인 namespace세트로부터 삭제됩니다. use namespace 지시문은, 프로그램, 패키지 정의, 또는 클래스 정의의 최상정도의 레벨에 표시할 수 있습니다.
nsN:Namespace —
개방적인 namespace세트에 추가된 namespace입니다.
|
See also
| var | definition 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:* —
식별자입니다.
|
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, FlexSee also
| while | statement |
while (condition) {
// 명령문(statement)
} |
조건을 평가해, 조건의 평가 결과가 true 가 되는 경우는 명령문(statement)를 실행합니다. 그 후, 루프의 선두로 돌아가, 다시 조건을 평가합니다. 조건의 평가 결과가 false 가 되면, 명령문(statement)는 스킵 되어 루프는 종료합니다.
while 명령문(statement)는, 다음의 순서를 실행합니다. 순서 1 ~ 4 의 각 반복은 루프의반복으로 불립니다. 다음의 순서에 나타내도록(듯이), 조건은 각 반복의 초에 테스트됩니다.
condition 가 평가됩니다. condition 의 평가가 true 인지, 불리언 값 true 에 변환되는 값 (제로 이외의 수치등)인 경우는, 순서 3 에 진행됩니다. while 명령문(statement)를 종료해,while 루프의 직후의 명령문(statement)로부터 실행이 재개됩니다. statement(s) 를 실행합니다. continue 명령문(statement)가 검출되었을 경우는, 나머지의 명령문(statement)를 스킵 해, 순서 1 에 진행됩니다. break 명령문(statement)가 검출되었을 경우는,while 명령문(statement)를 종료해,while 루프의 직후의 명령문(statement)로부터 실행이 재개됩니다. 일반적으로 루프 처리는, 카운터 변수가 지정치보다 작은 동안은 액션을 실행한다고 하는 경우에 사용합니다. 각 루프의 최후로, 지정된 값에 이를 때까지 카운터가 인크리먼트(increment) 됩니다. 지정된 값에 이르면,condition 는 true 가 아니게 되어, 루프는 종료합니다.
실행하는 명령문(statement)가 1 개 밖에 없는 경우,while 명령문(statement)로 실행하는 명령문(statement)를 둘러싸는 중 괄호 ({})는 필요 없습니다.
condition:Boolean —
평가 결과가 true 또는 false 가 되는 식입니다.
|
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
| with | statement |
with (object:Object) {
// 명령문(statement)
} |
명령문(statement)의 실행에 사용하는 디폴트의 object를 설정합니다. 기술하는 코드의 양을 줄일 수가 있습니다.
object Parameters는,statement(s) Parameters의 property, 변수, 및 함수를 읽어낼 때의 문맥이 됩니다. 예를 들어,object 가 my_array 이며, 지정된 property 가운데 2 개가 length 와 concat 인 경우, 이러한 property는 my_array.length 및 my_array.concat 로서 자동적으로 읽어내집니다. 다른 예로,object 가 state.california 인 경우,with 명령문(statement)내의 액션 또는 명령문(statement)는 california 인스턴스내로부터 불려 갑니다.
statement(s) Parameters로 식별자의 값을 검색하는 경우, ActionScript 는 object 로 지정된 범위(scope) 체인의 선두로부터 개시해, 특정의 순서로 범위(scope) 체인의 각 레벨로 식별자를 검색합니다.
식별자를 해결하기 위해서 with 명령문(statement)로 사용되는 범위(scope) 체인은, 다음의 리스트의 최초의 항목으로부터 시작되어, 마지막 항목까지 계속됩니다.
with 명령문(statement)의 object Parameters로 지정된 objectwith 명령문(statement)의 object Parameters로 지정된 objectwith 명령문(statement)내에 변수를 설정하려면 ,with 명령문(statement)의 외측에서 변수를 선언해 두는지, 변수를 설정하는 타임 라인에의 풀 패스를 입력할 필요가 있습니다. 변수를 선언하지 않고 with 명령문(statement)로 설정하면,with 명령문(statement)는 범위(scope) 체인에 따라 값을 검색합니다. 변수가 아직 존재하지 않는 경우,with 명령문(statement)가 불려 간 타임 라인상에 새로운 값이 설정됩니다.
object:Object —
ActionScript object 또는 무비 클립의 인스턴스입니다.
|
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
*/