2011-03-27 5 views
0

전체 SWF가 완전히로드 될 때까지 호환되는 SWF가 프리 로더를 표시하지 않습니다. 어떤 덩어리가 정말 감사하겠습니다, 나는 밤새 내게 아무것도 찾을 수 couldnt, 적어도 나를 위해 봤어.embed bytearray가있는 SWF의 프리 로더

답변

5

문서 클래스에서 참조하는 클래스가 자동으로 프레임에 자산을 미리로드 1.

가장 좋은 방법은 포함되기 때문에 당신은 주 문서 클래스에 ByteArray를 포함 할 수 없습니다 별도의 프리 로더 클래스를 가지고있다 Main 클래스. Preloader 클래스가 프레임 1과 기본 클래스 및 애셋을 프레임 2에 내보내려는 경우.

아쉽게도이 작업은 다소 까다로울 수 있지만 다음과 같이 할 수 있습니다. 문서 클래스를 Preloader으로 설정합니다. 이 수업에는 loaderInfo 코드가 포함되어 있습니다. 그러나로드가 끝나면 은 직접 인 Main을 인스턴스화하지 않습니다. 즉, var main:Main = new Main()을하지 마십시오. 이렇게하면 Main이 자동으로 프레임 1에 컴파일되도록합니다. 대신, 다음과 같이 간접적으로 인스턴스화 :

nextFrame(); // you sometimes need to do this for the player to register classes exported on frame 2 
var mainClass:Class = flash.utils.getDefinitionByName("Main") as Class; 
var main:Sprite = new mainClass(); 
addChild(main); 

이 자동으로 플래시 CS3 + IDE를 사용하는 경우 1.

다음, 파일 -로 이동 프레임에 홈페이지를 확 잡아 당기는에서 컴파일러를 중지합니다> 게시 설정 -> Flash-> ActionScript 3.0 설정을 선택하고 "프레임에 클래스 내보내기"설정을 프레임 2로 변경합니다. 그런 다음 동영상의 프레임 2에 빈 MovieClip을 배치합니다. 이 MovieClip 내부에 다음 코드를 입력하여 Main 클래스에 대한 참조를 배치하십시오. var dummy:Main;. 이렇게해야하는 이유는 컴파일러가 여전히 Main을 사용하고 있다는 것을 알기 때문에 실제로 영화에 컴파일되기 때문입니다. 그렇지 않으면 컴파일되지 않습니다. 메인 타임 라인의 코드 참조가 자동으로 프레임 1에 꽂히기 때문에 기본 타임 라인에이 코드를 삽입하고 싶지 않습니다.

IDE에서 유용한 정보가 올바른 위치에 내보내 졌는지 확인하는 유용한 트릭입니다 Publish Properties-> Flash에서 "Generate size report"를 확인하는 것입니다. 보고서를 검토하여 정크가 프레임 1로 내보내 졌는지 쉽게 알 수 있습니다.

Flash Builder, FlashDevelop 또는 FDT를 사용하는 경우 프로세스는 기본적으로 동일합니다. 별도의 Preloader 및 Main 클래스를 만들고 인스턴스화합니다 Preloader의 간접적 인 메인. 그러나 프리 로더 후 프레임에 홈페이지를 컴파일 할 수있는 컴파일러를 알리기 위해, Main.aspublic class Main 이상이 메타 태그를 넣어 :

[Frame(factoryClass="Preloader")] 

에 FlashDevelop 또한 프로젝트 탭에서 옆에있는 +를 클릭하여 SWF 파일을 성찰 할 수 있습니다. 어떤 자산이 어떤 프레임으로 내보내 졌는지 보여줍니다. 이상적으로, 최소한 프레임 1의 프리 로더 만 필요합니다.

+0

와우! 위대한 트릭을하지만 다음이 오류 메시지가 나타납니다 - ArgumentError : Error # 2100 : Loader.loadBytes()의 ByteArray 매개 변수의 길이가 0보다 커야합니다. – kornesh

+0

잘 모르겠습니다. ByteArray? –

+0

전체 프리 로더 및 메인 클래스를 게시했습니다. – kornesh

0

CS4에서 마이크의 방법을 테스트했습니다. 분명히 Main을 참조하는 더미 무비 클립은 프레임 2 또는 타임 라인상의 아무 곳에 나있을 필요가 없습니다. 더미 무비 클립이 프레임 2에서 내보내도록 설정된 경우 Main은 더미 클립의 코드에서 참조되므로 프레임 2에서 내 보냅니다.

관련 문제