2012-09-22 4 views
1

ActionScript의 프레임 메타 데이터 태그에 대한 게시물이 많다는 것을 알고 있는데, 이지만 여전히 내 질문에 대한 답변을 찾지 못했습니다.ActionScript 프레임 메타 데이터가 작동하지 않습니다.

문제는, 내 메인 클래스 헤더 위에 프레임 메타 데이터 태그를 지정한다

:

package gameUI { 
... 
    [Frame(factoryClass="gameUI.MyPreloader")] 
    public class Main extends Sprite { 

     public function Main() 
     { 
      if (stage) 
       init(); 
      else 
       addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { ... 

내가 같은 패키지에 프리 로더 클래스가 (gameUI)라고 MyPreloader.as

package gameUI 
{ 
    // imports.. 

    public class MyPreloader extends MovieClip 
    { 
     // private vars .. 

     public function MyPreloader() 
     { 
      trace('preloader START'); 
      ... 

내 IDE에서 오류나 경고를받지 못했습니다. 문제없이 컴파일됩니다. 하지만 실행하면 Frame 메타 태그를 건너 뛰고 Main 클래스의 코드 만 실행하면됩니다. (MyPreloader의 생성자에있는 추적은 절대로 인쇄되지 않습니다.)

아마도 컴파일러 설정에 지정된 일부 인수와 관련이 있다고 생각합니다. 나는 몇 가지 시도, aditional 컴파일러 인수를 시도했지만 결코 작동하지 않습니다.

그는 왜 프레임 메타 태그를 무시하는지 아는 사람이 있습니까? 지금 당장은 정말 실망 스럽습니다.

Flash Builder 4.6을 사용하고 있습니다. Flex SDK 4.6을 사용하여 컴파일.

감사합니다.

답변

0

기본 클래스는 스프라이트이므로 2 개의 프레임을 가질 수 없습니다. 그것은 귀하의 문제의 일부일 수 있습니다.

그러나 궁극적 인 목표를 달성하기 위해 디버깅하기 쉬운 프로세스를 사용할 수 있습니다. 예를 들어, one approach입니다. 저는 개인적으로 보통 내 기본 내보내기 프레임을 10으로 설정하고, 프레임 1에 스피너를 넣은 다음 play()를 실행합니다.

프레임 1에서 컴파일해야하는 자산은 회 전자에 있습니다. 그러면 스피너가 회전하고 자산이로드되는 동안 일시 중지됩니다 (진행하기 전에 컴파일 된 모든 내용을로드해야하기 때문에). 모든 에셋이로드되면 자연스럽게 프레임 10으로 넘어갑니다. 프레임 10의 타임 라인에 연결된 getter 및 setter가있는 인스턴스가 있으므로 설정자가 트리거되면로드가 완료되었음을 알 수 있습니다.

시작시 절대적으로로드해야하는 자산 (예 : 타임 라인에서 사용되지 않은 소리 또는 시각적 개체)에 대해서만 "내보내기 프레임 10"을 선택하십시오.

이 접근법의 장점은 실제 콘텐츠를 더 일찍 얻을 수 있다는 것입니다 (어떤 것이 표시되기 전에 기본 프레임에서 컴파일 된 애셋 만로드해야하기 때문에)하지만 단점은 % 영화의 어떤 비율이 프레임 10에서 컴파일되고로드되기 전에로드해야하는지 알지 못하기 때문에

그래서, 요약 :

  1. 가 작동하지 않는 경우 무비 클립
  2. 이 접근에게 응답을
+0

감사를 변경하는 것을 고려하여 FLA의 기본 클래스를 만들어보십시오. Main의 부모 클래스를 MovieClip으로 변경했지만 여전히 변경되지 않았습니다. 앞으로 며칠 안에 다른 접근 방식을 시도 할 것입니다. 나는 너에게 정보를 알려줄거야! – Andries

관련 문제