컴파일러 경고 메시지는 유효하고 성공적으로 컴파일되지만 제작자의 의도대로 작동하지 않을 수 있는 코드를 식별합니다. 이처럼 발생할 수 문제점을 확인하려면 ActionScript 프로젝트를 경고 모드에서 컴파일합니다.

이러한 경고 중 일부(예: "유형 선언이 누락되었습니다.")는 코딩 스타일에 따라 강제 적용 여부를 선택할 수 있습니다. 다른 경고(예: "null에 대입할 수 없습니다.")는 유효하지만 사용자의 의도대로 작동하지 않을 수 있는 명령문을 알려줍니다. 세 번째 유형의 경고에서는 ActionScript 2.0 코드를 ActionScript 3.0으로 포팅할 때 발생할 수 있는 문제를 다룹니다.


 코드메시지설명
 1009_ '_'에 유형 선언이 없습니다. 코딩 스타일에 따라 데이터 유형을 선언하지 않을 수 있습니다. 그래서 함수 반환 유형, 매개 변수 또는 변수에 유형 선언이 없습니다. 그러나 유형 선언을 사용하면 컴파일러가 더욱 효율적인 코드를 작성할 수 있을 뿐만 아니라 컴파일 타임에 오류를 더 많이 감지할 수 있습니다. 유형 선언을 사용하지 않았을 때 미리 알려주도록 하려면 이 경고를 표시합니다.
 1013_ 유형의 변수는 undefined일 수 없습니다. undefined 값은 비교 전에 _(으)로 강제 형 변환됩니다. * 유형의 변수만 undefined일 수 있습니다. 몇 가지 예외를 제외하고 초기화되지 않은 변수의 기본값은 undefined가 아니라 null입니다. 다음과 같은 예외가 있습니다. 부울 변수의 기본값은 false입니다. 숫자 변수의 기본값은 NaN이며, int 또는 uint 변수의 기본값은 0입니다.
 1031마이그레이션 문제: 새 _의 결과는 해당 함수의 새 인스턴스가 아니라 _의 반환값이 됩니다. 이 경고는 코드 마이그레이션 경고입니다. 감지된 코드는 다음 예제와 같이 ActionScript 3.0과 ActionScript 2.0에서 다르게 동작합니다.
function f(){
   this.b = 22;
   this.a = new Array(2);ツ
   this.a[0] = 33;
   this.a[1] = 44;
   return a; 
   } 
   // f의 새 인스턴스를 ActionScript 2.0으로 반환하고 새 2 요소 배열을 ActionScript 3.0으로 반환합니다.
   var d = new f();ツ// 경고
   trace(d.a);       // ActionScript 3.0에 정의되어 있지 않고, ActionScript 2.0의 [33,44]에 정의되어 있습니다.
 1035인수 없이 Boolean()을 사용합니다. 이 경고는 코드 마이그레이션 경고입니다. Boolean() 함수는 ActionScript 3.0에서 false를 반환하지만 ActionScript 2.0에서는 undefined를 반환합니다.
 1039마이그레이션 문제: 빈 문자열 인수를 사용하여 Number('') 함수를 호출할 경우 ActionScript 3.0에서는 0이 반환되고, ActionScript 2.0에서는 NaN이 반환됩니다. 이 경고는 코드 마이그레이션 경고입니다. String 인수와 함께 호출된 Number() 메서드는 문자열 내의 모든 공백을 생략하고 숫자가 발견되지 않은 경우 기본값인 0을 반환합니다. ActionScript 2.0에서는 문자열 내의 공백으로 인해 결과가 NaN이 됩니다.
 1045마이그레이션 문제: Array.toString()이 null 및 undefined 요소를 처리하는 방법이 변경되었습니다. 이 경고는 코드 마이그레이션 경고입니다. ActionScript 2.0에서 null 배열 요소는 null로 변환되고, undefined 요소는 undefined로 변환됩니다. ActionScript 3.0에서 nullundefined 요소는 모두 빈 문자열 ''로 변환됩니다. 배열의 toString() 출력을 구문 분석하는 코드의 경우 이 차이점을 고려해서 코드를 알맞게 조정해야 합니다.
 1059마이그레이션 문제: _ 속성은 더 이상 지원되지 않습니다. _. 이 경고는 코드 마이그레이션 경고입니다. 사용하려는 속성이 ActionScript 3.0에 없습니다.
 1061마이그레이션 문제: _ 메서드는 더 이상 지원되지 않습니다. _. 이 경고는 코드 마이그레이션 경고입니다. 사용하려는 메서드가 ActionScript 3.0에 없습니다.
 1066__resolve는 더 이상 지원되지 않습니다. 
 1067마이그레이션 문제: __resolve는 더 이상 지원되지 않습니다. 새 Proxy 클래스를 사용하여 동일한 기능을 수행할 수 있습니다. 이 경고는 코드 마이그레이션 경고입니다. __resolve의 대체 방법에 대한 자세한 내용은 이 언어 참조 설명서의 프록시를 참조하십시오.
 1071마이그레이션 문제: _level은 더 이상 지원되지 않습니다. 자세한 내용은 flash.display 패키지를 참조하십시오. 이 경고는 코드 마이그레이션 경고입니다. 사용하려는 속성이 ActionScript 3.0에 없습니다.
 1073마이그레이션 문제: _은(는) 동적 클래스가 아닙니다. 인스턴스에 동적으로 멤버를 추가할 수 없습니다. 이 경고는 코드 마이그레이션 경고입니다. ActionScript 2.0에서 Number와 같은 많은 클래스는 동적 클래스이므로 런타임에 새 속성을 해당 클래스의 인스턴스에 추가할 수 있습니다. 이 경고는 동적이지 않은 클래스의 인스턴스에 속성을 추가하려는 코드 때문에 발생합니다.
 1083마이그레이션 문제: ActionScript 3.0에서 _ 메서드는 이 키워드의 범위가 변경되었기 때문에 다르게 동작합니다. 자세한 내용은 경고 1083 항목을 참조하십시오. 이 경고는 코드 마이그레이션 경고입니다. 이 경고는 객체의 메서드가 콜백 함수와 같은 값으로 사용되는 경우에 생성됩니다. ActionScript 2.0에서 함수는 호출된 컨텍스트에서 실행됩니다. ActionScript 3.0에서 함수는 항상 정의된 컨텍스트에서 실행됩니다. 따라서 다음 예제와 같이 변수 및 메서드 이름은 호출된 컨텍스트를 기준으로 하지 않고 콜백이 속해 있는 클래스를 기준으로 확인됩니다.
class a 
{ 
   var x; 
   function a() { x = 1; } 
   function b() { trace(x); } 
}

var A:a = new a();
var f:Function = a.b; // 트리거된 경고
var x = 22;
f(); // 1을 ActionScript 3.0으로 출력하고 22를 ActionScript 2.0으로 출력합니다.
 1085_의 범위가 기본 네임스페이스 _ internal로 지정됩니다. 이 경우 이 패키지 외부에서는 볼 수 없습니다. 코딩 스타일에 따라 네임스페이스를 선언하지 않을 수 있습니다. 정의에 대한 네임스페이스 또는 액세스 지정자를 선언하지 않은 경우 미리 알려주도록 하려면 이 경고를 표시합니다. 한 가지 경우를 제외하고 이 파일의 외부에 위치한 코드에서 정의를 볼 수 없습니다. 이 파일의 외부에서 코드를 볼 수 있게 하려면 액세스 지정자 public 또는 네임스페이스 선언을 사용하여 코드를 선언합니다. 정의를 이 파일에서 로컬로 유지하거나 이 경고를 표시하지 않으려면 정의를 private로 선언합니다.
 1087마이그레이션 문제: ActionScript 3.0은 "for x in target" 문에 있는 객체의 속성이 임의의 순서로 반복 실행됩니다. 이 경고는 코드 마이그레이션 경고입니다. ActionScript 2.0의 경우 객체의 속성이 처리되는 순서는 항상 동일합니다. ActionScript 3.0의 경우 처리 순서가 일정치 않고 시스템에 따라 달라질 수 있습니다. 예기치 않은 순서로 동작하는 경우 이러한 순서 변동이 코드에 영향을 미치는지 이 루프를 검사하여 확인합니다.
 1089오류 코드: _. 이 오류는 컴파일러 코드의 소스 파일이 손상되었거나 버그가 있는 경우에 발생합니다. Adobe, Inc.에 버그를 보고하십시오.
 1091마이그레이션 문제: _ 이 경고는 코드 마이그레이션 경고입니다. ActionScript 2.0의 경우 특별한 이름(예: onMouseDown)을 사용하여 메서드를 선언하면 Flash가 특정 이벤트 발생 시 해당 메서드를 호출합니다. ActionScript 3.0에서는 해당 이벤트를 수신하도록 메서드를 등록하기 위해 addEventListener()를 메서드와 함께 호출해야 합니다. 자세한 내용은 이 언어 참조 설명서의 addEventListener를 참조하십시오.
 1093음수가 아닌 uint 값이 있어야 하는 위치에 음수 값이 사용되었습니다. 음수 값을 uint 데이터 유형에 대입하면 매우 큰 양수 값이 됩니다. var x:uint = -1; trace(x); // 4294967295.
 1097null과의 비교가 논리적으로 잘못되었습니다. _ 유형의 변수는 null일 수 없습니다. Boolean, int, uint 및 Number의 인스턴스는 null이 될 수 없습니다. 비교 연산자 유형은 null을 Boolean과 비교하기 전에 false로 변환하고, Number, int 또는 uint 데이터 유형과 비교하기 전에 0으로 변환합니다.
 1099NaN과의 비교가 논리적으로 잘못되었습니다. 이 문은 항상 false로 평가됩니다. NaN은 관련된 모든 비교가 false로 평가된다는 독특한 수학적 속성을 갖고 있습니다. NaN 값을 검색하려면 다음 예제와 같이 전역 isNaN() 함수를 대신 사용합니다.
trace(NaN == NaN); // false
trace(NaN != NaN); // 다시 false
trace(isNaN(NaN)); // true
 1101조건 내에 대입 연산자가 있습니다. = 대신 ==를 사용하려고 했습니까? = 대입문의 결과는 = 문의 오른쪽에 있는 값입니다. 대입문을 조건 테스트로 사용할 수도 있지만 사용하지 않는 것이 좋습니다. 일반적으로 이 경고는 다음 예제에서와 같이 == 항등 테스트를 하려는 위치에서 잘못 입력한 경우에 발생합니다.
var x:Boolean = false;
var y:Boolean = true;
// 아래 줄에서는 x 값이 y 값으로 의도적으로 설정되는지 또는 오타인지를 구분하기 어렵습니다.
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
 1103_ 값이 있어야 하는 위치에 null이 사용되었습니다. Boolean, Number, int 및 uint 변수에는 null을 값으로 대입할 수 없습니다. null 값은 Boolean에 대입되는 경우 false로, int, uint 또는 Number에 대입되는 경우 0으로 암시적으로 형 변환됩니다.
 1105_ 클래스에 대해 지정된 생성자 함수가 없습니다. 코딩 스타일에 따라 생성자 함수를 지정하지 않을 수 있습니다. 클래스에 대한 생성자를 항상 선언하려면 이 경고를 표시합니다. 이 경고는 클래스 이름만 변경되고 해당 생성자의 이름이 변경되지 않은 경우를 찾을 때 유용합니다. 이 경고를 표시하지 않을 경우 이와 같은 조건은 문제점으로 플래그되지 않으며, 이전 생성자가 일반 함수로 나타납니다.
 1111상수가 초기화되지 않았습니다. 
 1113Array(x)가 새 Array(x)와 동일하게 동작합니다. 값을 Array 유형으로 형 변환하려면 Array(x) 대신 "x as Array" 표현식을 사용합니다. 
 1115이 생성자가 시작되기 전에 super() 문이 실행됩니다. super() 문의 실행 시기를 명시적으로 제어하려면 생성자 내에 super() 호출을 추가합니다. 코딩 스타일에 따라 생성자 내에 super() 호출을 추가할 수 있습니다. super()의 호출 시기를 항상 명시적으로 제어하려면 이 경고를 표시합니다. 이 경고를 표시하면 일부 로컬 초기화 코드 이후에 super()를 호출하려는 경우에 잊지 않고 추가할 수 있습니다.
 3552+=를 사용하여 TextField에 텍스트를 추가하는 작업은 TextField.appendText() 메서드를 사용하는 작업에 비해 매우 느립니다. 이 중요한 텍스트 최적화에 대한 자세한 내용은 TextField 클래스의 appendText() 메서드에 대한 언어 참조 설명서를 참조하십시오.
 3554_ 유형이 있어야 하는 위치에 함수 값이 사용되었습니다. 이 함수 참조 뒤에 괄호 ()가 누락되었습니다. ActionScript에서는 함수 자체를 값으로 사용할 수 있습니다. 해당 코드에서 Function, Object 또는 * 이외의 유형이 있어야 하는 위치에 Function 유형의 값이 있습니다. 일반적으로 이 경고는 실수로 함수 이름 뒤에 괄호 ()를 생략한 경우를 나타냅니다.
 3556instanceof 연산자는 더 이상 사용되지 않습니다. 대신 is 연산자를 사용하십시오. 
 3574마이그레이션 문제: ActionScript 2.0 XML 클래스의 이름이 XMLDocument로 변경되었습니다. 이 경고는 코드 마이그레이션 경고입니다. ActionScript 2.0의 XML 클래스는 ActionScript 3.0에서 다른 클래스로 변경되었습니다. ActionScript 3.0의 XMLDocument 클래스가 ActionScript 2.0의 XML 클래스와 동일한 기능을 수행합니다. ActionScript 3.0 XML 클래스는 사용하기 쉽고 강력한 API를 통해 향상된 기능을 제공합니다. 자세한 내용은 ActionScript 언어 참조 설명서의 XML을 참조하십시오.
 3576Date(x)는 새 Date().toString()과 동일하게 동작합니다. 값을 Date 유형으로 형 변환하려면 Date(x) 대신 "x as Date"를 사용합니다. 
 3582현재 클래스와 동일한 이름을 사용하여 패키지를 가져오면 해당 클래스 식별자가 이 범위에서 숨겨집니다. 
 3584이름이 '_'인 인수가 두 개 이상 있습니다. 해당 인수에 대한 참조는 항상 마지막 인수로 해석됩니다. 
 3590부울 값이 있어야 하는 위치에 부울 이외의 값이 사용되었습니다. 
 3591부울 값이 있어야 하는 위치에 _이(가) 사용되었습니다. 해당 표현식은 부울로 강제 형 변환됩니다. 
 3593_은(는) 동적 클래스 _의 알려진 속성이 아닙니다. strict 컴파일 모드에서는 동적 클래스의 인스턴스에 대해 정의되지 않은 속성을 확인하지 않습니다. Date, RegExp 및 Error 유형은 ECMAScript와 호환되는 동적 유형입니다. 이 경고는 이러한 클래스의 인스턴스에 대해 정의되지 않은 속성을 사용할 때 발생합니다. 일반적으로 Date 값에 존재하지 않는 year 속성을 설정하거나 가져오려고 할 때 문제가 발생합니다. 올바른 속성 이름은 fullYear입니다.
 3595_은(는) 동적 클래스 _의 알려진 메서드가 아닙니다. strict 컴파일 모드에서는 동적 클래스의 인스턴스에 대해 정의되지 않은 메서드를 확인하지 않습니다. Date, RegExp 및 Error 유형은 ECMAScript와 호환되는 동적 유형입니다. 이 경고는 이러한 클래스의 인스턴스에 대해 정의되지 않은 메서드를 사용할 때 발생합니다.
 3597변수 정의가 중복되었습니다. 컴파일러에서 중복된 변수 정의가 발견되었습니다. 이 경우 예기치 않은 결과가 발생할 수 있습니다. ActionScript에서는 변수의 블록 레벨 범위가 지원되지 않습니다. if 문, while 문 및 for 문 내에서 정의된 경우를 포함해서 함수 본문 내에 정의된 모든 변수는 동일한 범위 내에 존재합니다. 예를 들어, 다음 코드에서는 변수 x가 두 번 선언됩니다.

function test() {
	var x:Number = 10;
	if (true) {
	    for (var x=0; x < 5; x++)  // 경고, x의 두 번째 정의입니다.
	    trace(x);
	}
	trace(x); // 10이 아니라 5이며, 위의 for 루프로 설정된 마지막 값이 x의 현재 값입니다.
}
 3598정의 이름이 가져온 패키지 이름과 같습니다. 해당 이름에 대한 정규화되지 않은 참조는 정의로 확인되지 않고 패키지로 확인됩니다. 
 3599정의 이름이 가져온 패키지 이름과 같습니다. 해당 이름에 대한 정규화되지 않은 참조는 정의로 확인되지 않고 패키지로 확인됩니다. 정의 이름이 범위에 있는 패키지와 같은 경우 해당 이름에 대한 모든 정규화되지 않은 참조는 정의 대신 패키지로 확인됩니다. 이 경우 변수를 참조할 때 예기치 않은 오류가 발생할 수 있습니다. 정의에 대한 참조가 패키지가 아닌 정의로 확인되도록 하려면 해당 참조를 정규화해야 합니다.
 3600고정 속성을 삭제하려고 했습니다. 
 3601선언된 속성 _은(는) 삭제할 수 없습니다. 연결된 메모리를 비우려면 해당 값을 null로 설정하십시오. 삭제를 수행하면 동적으로 정의된 속성이 객체에서 제거됩니다. 클래스의 선언된 속성은 삭제할 수 없으며 작업이 아무 표시 없이 실패합니다. 이 변수와 연결된 메모리를 비우려면 해당 값을 null로 설정하십시오.


 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/compilerWarnings.html