2010-04-25 2 views
3

papervision 장면이 포함 된 SWF에 SWF를로드하고 있습니다.외부 SWF로드 문제

아직 문제가 발생하기 전에 오류가 발생했습니다. 문제가 실제로 무엇인지 잘 모르겠습니다. - 응용 프로그램 코드를 실행하면

private function downloadSWF(url:String):void 
    { 
    trace(url); 
    var urlRequest:URLRequest = new URLRequest(url); 
    var loader:Loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderProgressEventHandler); 
    loader.load(urlRequest); 
    } 



private function loaderProgressEventHandler(ev:ProgressEvent):void 
    { 

    loader.preloaderCircle.percent = ev.bytesLoaded/ev.bytesTotal; 
    } 

나는 오류 : 로딩이 아직도 완료되지 않은 경우

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at com.dehash.pv3d.examples.physics::WowDemo() 

가 왜이 무엇입니까?

미리 감사드립니다.


편집 :는, 빈 자식 SWF를 시도 다른 하나는 부모에 액세스 뭔가를 시도하는 경우를 참조하십시오. - 호르헤

I했던이,이 마우스 클릭 리스너를 통해 간단한 SWF가 오류의 원인도 함께 보인다

TypeError: Error #1009: Cannot access a property or method of a null object reference. at simple_fla::MainTimeline/frame1()

이에 대한 나의 코드는 다음과 같습니다

import flash.events.MouseEvent; 

this.stage.addEventListener(MouseEvent.CLICK, onClick); 

function onClick(ev:MouseEvent):void 
{ 
    trace("MouseClick"); 
} 

을 나는 뻔뻔스럽게 명백한 것을 놓치고 있습니까 ??

+1

loader가 Loader 객체 (var loader : Loader = new Loader()) 인 경우 preloaderCircle은 loader : loader가 downloadSWF의 로컬 변수이고 loader가의 변수가 아닌 경우 (loader.preloaderCircle.percent) loaderProgressEventHandler는 프리 로더 MovieClip에 대한 참조입니다. 또한 데모가 어떤 식 으로든 무대에 액세스하려고하는지 확인하십시오. 그럴 경우 swf를 미리로드하고 무대에 추가 한 다음 ADDED_TO_STAGE 이벤트 핸들러에서로드 된 swf를 실행하기 위해 init() 메소드 등을 사용하십시오. –

+0

조지 감사합니다. 당신의 오른쪽'loader.preloaderCircle ...'은'loaderMenu.preloaderCircle'이되어야합니다. 그리고 init() 메소드는 완벽한 아이디어입니다. 좋은 것. – Glycerine

답변

3

문제는로드 된 swf가 스테이지에 추가되지 않고 실행되기 시작한다는 것입니다. 따라서 stage은 null이므로 그 오류가 발생합니다.

stage은 객체가 스테이지에 추가 된 후에 만 ​​참조되므로 stage이 더 이상 null이 아니기 때문에 addedToStageEventHandler가있는 두 번째 예제가 작동합니다.

첫 번째 오류의 가능한 해결 방법은 스테이지에 로더를 추가하는 것입니다. 이렇게하면 swf가로드되고 시작될 때 이미 stage 참조가 있습니다.

+0

고맙습니다. 지금 많은 의미가 있습니다. – Glycerine

1

오류가 발생해도로드되지 않습니다. WowDemo() 클래스에서 참조되지 않은 객체에 액세스하고 있습니다 ... 클래스를 올바르게 인스턴스화 했습니까?

this.addEventListener(Event.ADDED_TO_STAGE, addedToStageEventHandler); 

function onClick(ev:MouseEvent):void 
{ 
    trace("MouseClick"); 
    var event:Event = new Event("END", true, false); 
    this.dispatchEvent(event); 
} 

function addedToStageEventHandler(ev:Event):void 
{ 
    this.stage.addEventListener(MouseEvent.CLICK, onClick); 

} 

사람이 왜 알고 않습니다

+0

예, 그렇게 생각합니다. -로드중인 SWF가 자체적으로 올바르게 실행됩니다. 부모 SWF는이 오류가 발생할 때 자식 SWF를로드하려고 할 때도 제대로 실행됩니다. 자식 SWF가 부모로부터 라이브러리를 사용하려고 할 가능성이 있습니까? – Glycerine

+0

추가적으로, papervision을 사용하여 외부 SWF를로드하려고 시도하지 않을 때 모두 작동합니다. – Glycerine

+0

빈 자식 SWF를 시도해보고 다른 자식이 부모에서 액세스하려고 시도하는지 확인하십시오. –

0

이 내 아이 SWF 내에서 작동하는 것 같다?