2011-03-17 5 views
1

로더 구성 요소를 통해 외부 swf를로드하는 주 응용 프로그램이 있습니다. 하지만 자신이 잘 작동하는 일부 SWF는 기본 앱에로드되지 않습니다. 내가 주 앱의 fla에서 swf를로드하려고 시도했을 때 클래스를 찾고 있다는 오류가 발생했습니다. 이 클래스의 이름은로드 된 swf의 일부분 인 것처럼 보이지만 이미 컴파일되어 잘 작동하는 swf인데 주 앱에서로드하려고 할 때이 클래스를 찾고있는 이유는 무엇입니까?AS3 외부 SWF를 로더에로드 할 때의 문제

나는 이런 종류의 문제를 언급 할만한 것을 찾지 못했습니다. 어떤 도움을 주시면 감사하겠습니다.

var loader:Loader = new Loader(); 
addChild(loader); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingFunc); 
loader.load(new URLRequest("g.swf")); 

function loadingFunc(event:Event):void{ 
    var li:LoaderInfo = event.target as LoaderInfo; 
    var mc:MovieClip = MovieClip(li.content) 
} 

이 코드는 테스트 파일입니다 :

+1

어디서나 코드 및 관련 오류를 게시해야합니다. – Bosworth99

답변

0

그냥 확인을위한 I로드의 Loader 구성 요소 및 코드를 포함 FLA 파일을했다. 그러나 이런 식으로조차도 외부로드 된 swf 중 하나 인 것으로 보이는 클래스를 찾고 있습니다. 오류는 다음과 같습니다.

TypeError : 오류 # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다. at src :: Dedo() at src :: Main()

주 앱에는 이러한 클래스가 없습니다. 그래서 그것은 외부 swf 클래스 일 수 있습니다.

+0

이것은 (아직) 존재하지 않는 속성을 참조 할 때 발생하는 일반적인 오류입니다. 자식 소스에 가서 Dedo()를 검사해야합니다. 기본 응용 프로그램이 좋을 수도 있지만, 하위 SWF에는 눈부신 문제가 있습니다. – Bosworth99

+0

답장을 보내 주셔서 감사합니다! 문제는 모든 swf (또는 클래스)의 FLA 파일이없고 swf가 너무 많아서 문제가되는 swf의 클래스를 직접 확인할 수는 없지만 ' 기본 앱에로드됩니다. 기본 앱 자체를 통해이 문제를 해결할 수있는 방법이 있습니까? 다시 도움을 주셔서 감사합니다. – MeLi

1

응용 프로그램 도메인 충돌이있는 것 같습니다. 이는 각 SWF에서 충돌하는 클래스 이름이있는 경우 발생할 수 있습니다 (예 : swf1의 클래스 이름은 Main이고 swf2의 클래스 이름은 Main입니다). 이 문제를 해결하려면

새 응용 프로그램 도메인에 SWF를로드 :

loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain))); 

는이 아니라면, 당신은 가장 가능성합니다 (SWF의 초기화에서 실행되는 영화의 첫 번째 프레임에 대한 몇 가지 코드가 Event.COMPLETE를 얻기 전에 Event.INIT를 얻는 지보십시오.)

프레임에서 코드를 제거하면 쉽게 수정할 수 있습니다.

관련 문제