2011-03-17 100 views
1

我的主應用程序通過加載程序組件加載外部SWF。但是一些自己運行良好的swf不會加載到主應用程序中。當我試圖從主應用程序的fla載入swf的一個時,它給出錯誤,它正在尋找一些類。通過這個類的名稱,它看起來像是加載的swf的一部分,但是作爲swf已經編譯並運行良好,爲什麼當它試圖由主應用程序加載時尋找這個類?AS3將外部SWF加載到加載程序中的問題

我沒有發現任何會引用此類問題的內容。任何幫助將不勝感激。

+1

必須發佈一些代碼和相關的錯誤,以獲得任何地方。 – Bosworth99 2011-03-17 14:55:20

回答

0

只是爲了檢查我做的,包含裝載的只有Loader組件和代碼FLA文件:

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) 
} 

這段代碼是從測試文件。 但即使如此,它仍然在尋找一些似乎是外部加載swf的類。 錯誤是這樣的:

TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 at src :: Dedo() at src :: Main()

我的主應用程序中沒有這樣的類。所以它可能只是來自外部swf的類。

+0

這是您引用不存在(但尚未)的屬性時得到的常見錯誤。要進入孩子來源並檢查Dedo() - 您的主應用程序可能沒問題,但兒童swf中存在明顯的問題。 – Bosworth99 2011-03-17 16:40:43

+0

感謝您的回覆! 問題是我沒有所有swf(也沒有他們的類)的fla文件,並且swf的數量很大,所以它不可能檢查所有那些有問題的swf的類,這些類可以獨立運行,但可以'不會被加載到主應用程序中。 有沒有通過主應用程序本身來解決這個問題的方法? 再次感謝您的幫助! – MeLi 2011-03-20 08:08:42

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)。

這可以很容易地通過從框架中刪除代碼來修復。