2015-12-30 69 views
0

我有這段代碼,這是假設在我的主文件(skeleton.fla)中添加一個swf文件(homePage.swf)。addChild()問題:AS3上的錯誤2007

代碼:

var mcHome:MovieClip; 

var newPage:Loader = new Loader(); 
newPage.load(new URLRequest("homePage.swf")); 

newPage.contentLoaderInfo.addEventListener(Event.COMPLETE, homeLoaded);  

function homeLoaded(event:Event):void { 

    mcHome = MovieClip(newPage.contentLoaderInfo.content); 
    newPage.contentLoaderInfo.removeEventListener(Event.COMPLETE, homeLoaded); 
    addChild(mcHome); 

} 

我不斷收到此錯誤:

TypeError: Error #2007: Parameter child must be non-null. at flash.display::DisplayObjectContainer/addChild() at skeleton_fla::MainTimeline/homeLoaded()

我不知道如何解決這個問題,還是要改變什麼!

請幫忙,我有點絕望。

+0

請確保「homePage.swf」與您的skeleton.fla位於同一目錄中,並檢查swf文件名稱的拼寫 – kare

+0

是的。名字是一樣的。 – nuriaquero

+0

嘗試'addChild(newPage);'。例如添加加載器而不是加載器的內容。如果swf不存在,你不會得到完整的事件。很可能這是一個安全沙箱問題。 – BadFeelingAboutThis

回答

0

最好添加到displayListLoader對象,而不是它的contentLoaderInfo.contentLoader本身就是DisplayObject。儘管在大多數環境中都有可能,但無需訪問Loader對象內部的MovieClip

If you try to load an SWF that resides in other domain, you could add the Loader object to the displayList but you can't access to the content property if you don't create a crossdomain.xml file.

var newPage:Loader = new Loader(); 
newPage.load(new URLRequest("homePage.swf")); 

newPage.contentLoaderInfo.addEventListener(Event.COMPLETE, homeLoaded);  

function homeLoaded(event:Event):void { 

    newPage.contentLoaderInfo.removeEventListener(Event.COMPLETE, homeLoaded); 

    addChild(newPage); 

} 

Here你有一個例子。

+0

考慮通過解釋爲什麼加載器需要添加而不是內容來使你的答案更有用。 – BadFeelingAboutThis

+0

好的@BadFeeling關於這個,我會盡量訓練我的英語不好;) – ElChiniNet

+0

這實際上並不是真的,甚至不是一個有效的答案,儘管它已被標記爲接受。關於爲什麼加載器比加載內容更好添加沒有任何理由。 – BotMaster