2017-12-15 11 views
0

나는이 같은 질문에 대한 몇 개의 게시물을 보았으며 분명한 대답은 없다.AS3의 클래스에서 기본 타임 라인의 변수에 액세스하는 방법은 무엇입니까?

기본 타임 라인 :

var mynum:Number = 0; 

가 어떻게 외부 클래스 파일의 코드에서이 변수를 변경 액세스/것인가? 모든 나는

+0

'무비 클립 (루트 것은) 클래스가'DisplayObject'과 수있는 잡았다과 .mynum' 무대에 추가되어야합니다. – Marty

+0

무비 클립을 라이브러리에서 드래그하여 무비 클립을 추가 할 때 작동하지만 코드로 선언하면 오류가 발생합니다. – Koden

+0

생성자 내에서 코드를 실행하려고하는 것으로 추측하고 있습니다. 스테이지에'addChild'를 변경하기 전에 실행됩니다. 'ADDED_TO_STAGE' 이벤트를 사용하면 시도하기 전에 이벤트가 발생하기를 기다릴 수 있습니다. – Marty

답변

1

디스플레이 트리의 일부이며 모든 DisplayObject들 (직접 무대에 나 무대에서 어떤 DisplayObjectContainer의의 후손 등) root에 액세스 할 수 있습니다 "인스턴스가 오류가 존재하지 않는"수익을 시도 어느 것이 든 참조 할 것입니다 :

  1. MainTimeline 문서 클래스가없는 경우.
  2. 문서 클래스가있는 경우 문서 클래스.

    trace(MovieClip(root).mynum); 
    
    :

rootMovieClip에 캐스팅하면이 작업을 수행 할 수 있음을 의미, 그것은 당신이 컴파일시 오류없이 액세스 할 수 있습니다 기본 타임 라인에 선언 변수와 함수를 의미 dynamic으로 처리 할 것

코드가 실행될 때 자식이 스테이지에 있어야하므로 동적으로 추가 된 객체의 생성자에 직접 배치 할 수 없습니다 (addChild). 그러나 개체가 처음으로 무대에 추가 될 때까지 기다려야하는 ADDED_TO_STAGE 이벤트를 활용할 수 있습니다 :

public class Example extends Sprite { 
    public function Example() { 
    addEventListener(Event.ADDED_TO_STAGE, added); 
    } 

    protected function added(event:Event):void { 
    trace(MovieClip(root).mynum); 
    } 
} 
+0

어쨌든 타임 라인의 변수를 자동으로 찾도록 클래스를 설정 했으므로'MovieClip (루트). '을 백만 번 추가해야하지 않습니까? 내 클래스 파일에 새 변수를 만들지 않을거야. – Koden

관련 문제