2011-02-25 3 views
0

AS3의 Flash CS4에서 작업 중입니다.상속 문서 클래스를 상속 할 때 AS3 오류 1120

스테이지의 인스턴스로 동적 텍스트 필드 (이름 : PageTitle)가 포함 된 TextPage.fla 파일이 있습니다. 문서 클래스 (TextPage)에서 일부 XML에 따라 PageTitle의 텍스트를 설정했습니다. 이 모든 것이 정상적으로 작동합니다.

다른 Fla 파일 인 SpecialTextPage.fla가 있으며 스테이지에도 PageTitle 동적 텍스트 입력란이 있습니다.

지금 Textpage에서 SpecialTextPage 문서 클래스 상속이 시도 :

public class SpecialTextPage extends TextPage 
{ 
... 
} 

을하지만 난 얻을 "1120 :. 정의되지 않은 속성 PAGETITLE이의 액세스" SpecialTextPage를 게시 할 때 오류가 발생했습니다. 오류 위치는 TextPage.as로 지정됩니다.

해결 방법으로 전체 TextPage.as 파일을 복사하고 내가 SpecialTextPage.as에 필요한 추가 항목을 추가 할 수는 있지만, 그것을 확장하십시오.

나는 무대에서의 플래시 개체와 문서 클래스 간의 관계를 이해하지 못하고있다.

누군가 도움을 줄 수 있습니까?

답변

0

문제가 자동으로 선언하는 단계 인스턴스를 해제하는 것이 었습니다 주위에 내가 가진 방법 : 당신의 목표를 달성하기 위해 좋은 방법은 다음과 같은 것입니다. (제작 설정 - -> 플래시 탭>을 선택 해제 '자동 단계의 인스턴스를 선언')는

나는 다음 공공 필드로 내 TextPage 클래스에 pageTitle를 선언하는 데 필요한 : 대한

public class TextPage extends MovieClip 
{ 
    public var pageTitle:TextField; 
    ... 
} 
0

문서 클래스는 기본적으로 SWF 타임 라인의 첫 번째 프레임에서 가져 와서 실행 시간에 실행되므로 클래스의 수작업 속성처럼 스테이지의 모든 항목에 액세스 할 수 있습니다.

이제 SpecialTextPage에서 var i : int;라고하는 변수를 만들었다 고 상상해보십시오. 부모님이 무엇을 하든지 상관없이 부모 클래스는 결코 i에 액세스 할 수 없습니다. 마찬가지로, 무대 요소는 문서 클래스에 연결되어 있으므로 부모는 절대 액세스 할 수 없습니다.

Sprite를 확장하는 MovieClip과 유사하게 Sprite는 MovieClip 타임 라인을 인식 할 수 없으므로 MovieClip 타임 라인을 참조 할 수 없습니다.

하지만 모두가 사라지지는 않습니다.

/* TextPage */ 
/* Parent Class */ 
/* ... */ 
public function TextPage() { 
    pageTitle.text = getTitle(); // This textfield would be the one in TextPage.fla 
} 

protected function getTitle():String { 
    return "All the text you could ever need in your title"; 
} 
/* ... */ 


/* SpecialTextPage */ 
/* Child */ 
/* ... */ 
public function SpecialTextPage() { 
    pageTitle.text = getTitle(); // This textfield would be in SpecialTextPage.fla 
} 
+0

주셔서 감사합니다 대답. 같은 이름을 가진 한 기본 클래스가 하위 클래스의 필드를 선택한다고 가정했습니다. 필드 이름을 계속 참조하면서 제안 된 솔루션이 어떻게 작동 하는지를 보지 못했지만 저에게 도움이되는 해결책을 찾았습니다 - 질문에 대한 내 대답을보십시오. – nicodenzl