문제

AS3 클래스에서 flashVars에 액세스하려고 하면 계속 컴파일러 오류가 발생합니다.

다음은 코드의 제거된 버전입니다.

package myPackage {
 import flash.display.Loader;
 import flash.display.LoaderInfo;
 import flash.display.Sprite;
  public class myClass {
    public function CTrafficHandler() {
        var myVar:String = LoaderInfo(this.root.loaderInfo).parameters.myFvar;}}}

그리고 컴파일 오류가 발생합니다.

1119:정적 유형 source:myClass의 참조를 통해 정의되지 않은 속성 루트에 액세스합니다.

수업 행을 다음으로 변경하면

public class myClass extends Sprite {

컴파일러 오류는 발생하지 않지만 출력 창에는 다음과 같은 오류가 표시됩니다.

유형오류:오류 #1009:null 개체 참조의 속성이나 메서드에 액세스할 수 없습니다.

(제안된 대로) 디버거를 통해 나는 그것을 볼 수 있습니다 this.root null입니다.

이 문제를 어떻게 해결할 수 있나요?

도움이 되었습니까?

해결책 2

문제가 무엇인지 찾았습니다.문제의 클래스는 프로젝트에 사용된 기본 클래스가 아니라 보조 클래스였습니다.

매개변수를 가져오기 위해 코드를 메인 클래스로 옮겼고 매개변수를 가져온 후 이를 클래스 생성자 함수로 보냈습니다.

다른 팁

문제는 플래시 변수에 액세스하려고 할 때 DisplayObject가 DisplayList에 추가되지 않았다는 것입니다.따라서 개체에 따라 루트 표시 개체는 null입니다.

다음을 사용하여 DisplayObject가 스테이지에 있는지 확인할 수 있습니다.

package
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class MySprite extends Sprite
    {
        // constructor
        public function MySprite()
        {
            super();
            addEventListener( Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true );
        }

        private function onAddedToStage( event:Event ):void
        {
            removeEventListener( Event.ADDED_TO_STAGE, onAddedToStage );

            var paramList:Object = LoaderInfo( this.root.loaderInfo ).parameters;
            var myParam:String = paramList["myParam"];
        }
    }
}

`

실제로 문제는 표시되지 않는 객체나 문서 클래스 외부에서 이 정보에 액세스하려고 시도했다는 것입니다.루트나 스테이지에 액세스하려면 먼저 액세스하려는 개체를 표시 목록에 추가해야 합니다.

저는 프로젝트 전반에 걸쳐 자주 사용되는 변수에 대해 flashvar를 자주 사용합니다.국가, 언어 등의 변수입니다.이 경우 문서 클래스에서 이러한 매개변수를 포착하고 해당 매개변수를 값으로 사용하여 공용 변수를 생성하는 것이 가장 좋습니다.이렇게 하면 이러한 변수에 대한 _global 스타일 액세스가 제공됩니다.즉, 특히 공동 프로젝트에서 작업할 때 전역 변수를 아껴서 사용해야 합니다.

대안으로 mx.core.Application.application.parameters 물체.

LiveDocs 페이지에서 mx.core.애플리케이션:

애플리케이션 :물체
[정적] [읽기 전용] 최상위 응용 프로그램에 대한 참조입니다.

매개변수 :물체
[읽기 전용] 매개변수 속성은 이 응용 프로그램에 제공된 매개변수를 나타내는 이름-값 쌍이 포함된 객체를 반환합니다.

매개변수 소스에는 두 가지가 있습니다.애플리케이션 URL의 쿼리 문자열 및 FlashVars HTML 매개변수의 값(이는 기본 애플리케이션에만 영향을 미칩니다)

내 생각에는 Sprite에서 확장해야 하지만 먼저 초기화하고 스테이지에 배치해야 합니다.디버깅을 활성화하고 예외 보고서에 명시된 대로 정확히 null이 무엇인지 확인하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top