2010-02-09 4 views
2

질문 : 나는 성가신 오류가 발생한다. 아래의 actionscript 코드에서 Size를 사용하려고한다. 하지만 난 항상이 오류가 발생합니다 :
1046 : 형식을 찾을 수 없거나 컴파일 타임 상수가 아닙니다 : 크기.
그러나 아무리 내가 무엇을하려고, 내가
공공 기능 get 및 크기() 추가 할 때 깰 것 같다 : 크기는 반환 형식 크기를 싫어 어떻게 든
을,하지만 난 잘못 뭐하는 거지?플래시 액션 스크립트 3이 컴파일 타임 상수를 받아 들일 수 없음

package BaseTypes 
{ 
    public class StockData 
    { 
     private var size:Size; 
     public function get Size():Size 
     { 
      return this.size; 
     } 
     public function set Size(value:Size):void 
     { 
      this.size = value; 
     } 
    } // End Class 
}// End Package 

저는 BaseTypes 폴더에 벨로우즈 코드가 있으며, AS3 클래스 경로에 있습니다.

package BaseTypes 
{ 
    public class Size 
    { 
     private var width:Number; 
     private var height:Number; 
     public function Size(width:Number, height:Number) 
     { 
      this.width = width; 
      this.height = height; 
     } 
     public function get Width():Number 
     { 
      return this.width; 
     } 
     public function set Width(value:Number):void 
     { 
      this.width = value; 
     } 
     public function get Height():Number 
     { 
      return this.height; 
     } 
     public function set Height(value:Number):void 
     { 
      this.height = value; 
     } 
     public function toString():String 
     { 
      return "{width: " +this.width.toString()+ " height: " +this.height.toString() + "}"; 
     } 
    } // End Class 
} // End package 

답변

5

가져온 클래스의 이름을 가져온 클래스의 이름과 동일하게 지정 했으므로 오류의 원인이라고 생각합니다. 당신의 StockData 클래스

당신은 당신이 "크기"또는 가져온 클래스와 같은 이름이 아닌 뭔가 하나에 "크기"이름을 변경해야 정의를

public function get Size():Size 

있습니다.

+2

또는 반환 유형에 대해 정규화 된 이름 인'public function get Size() : BaseTypes.Size'를 사용할 수 있습니다 –

0

크기를 다른 패키지에 속한 StockData 가져 오기에 다음과 같이 추가하십시오.
import BaseTypes.Size;
플래시 IDE를 사용하는 경우 BaseType 패키지가 포함 된 디렉토리를 ClassPath에 추가하십시오.

+0

내가 그랬어,하지만 그 도움이되지 않습니다. 같은 오류가 계속 발생합니다. –

+0

디렉토리 구조 및 클래스 경로 변수를 자세히 설명 할 수 있습니까? 가능한 한 조금 더 많은 코드가 문제를 이해하는 데 도움이 될 것입니다. – bhups

+0

그들은 둘 다 동일한 패키지에 있으므로 어떻게 도움이 될까요? – back2dos

2

레가 문제를 지적했습니다. 다음은 작동합니다

이 PascalCase가 AS3에서 관례 적으로 모든 사용되는 C#에서 달리
class StockData 
{ 
    private var _size:Size; 
    public function get size():Size { return _size; } 

    public function set size(value:Size):void { 
     _size = value; 
    } 
} 

, 사람들이 패키지 이름에 대한 전역 상수 및 under_scores을 위해 다른 모든 것을위한 클래스와 인터페이스 및 lowerCamelCase에 대한 (ALL_CAPS을 UpperCamelCase를 사용). 아시다시피 AS3 컴파일러는 Size의 중복 의미를 해결할 수 없습니다. 이것은 분명히 컴파일러 결함이지만, Adobe가 해결할 때까지 기다리지는 않을 것입니다. 그러나 상기 규칙을 사용하면 이러한 모호성을 제거 할 수 있습니다. 또한 접근 자와의 충돌을 피하기 위해 private/internal/protected vars에는 일반적으로 _ 또는 $ 접두사가 붙습니다.

FlashDevelop를 사용하는 경우 Ctrl + M을 사용하여 중괄호로 바로 이동하는 것이 좋습니다 (// End Class을 표시하지 않아도 됨). 당신이 아니라면, 내가 많이 제안, 당신은 시도/

관련 문제