我的主應用程序通過加載程序組件加載外部SWF。但是一些自己運行良好的swf不會加載到主應用程序中。當我試圖從主應用程序的fla載入swf的一個時,它給出錯誤,它正在尋找一些類。通過這個類的名稱,它看起來像是加載的swf的一部分,但是作爲swf已經編譯並運行良好,爲什麼當它試圖由主應用程序加載時尋找這個類?AS3將外部SWF加載到加載程序中的問題
我沒有發現任何會引用此類問題的內容。任何幫助將不勝感激。
我的主應用程序通過加載程序組件加載外部SWF。但是一些自己運行良好的swf不會加載到主應用程序中。當我試圖從主應用程序的fla載入swf的一個時,它給出錯誤,它正在尋找一些類。通過這個類的名稱,它看起來像是加載的swf的一部分,但是作爲swf已經編譯並運行良好,爲什麼當它試圖由主應用程序加載時尋找這個類?AS3將外部SWF加載到加載程序中的問題
我沒有發現任何會引用此類問題的內容。任何幫助將不勝感激。
只是爲了檢查我做的,包含裝載的只有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的類。
這是您引用不存在(但尚未)的屬性時得到的常見錯誤。要進入孩子來源並檢查Dedo() - 您的主應用程序可能沒問題,但兒童swf中存在明顯的問題。 – Bosworth99 2011-03-17 16:40:43
感謝您的回覆! 問題是我沒有所有swf(也沒有他們的類)的fla文件,並且swf的數量很大,所以它不可能檢查所有那些有問題的swf的類,這些類可以獨立運行,但可以'不會被加載到主應用程序中。 有沒有通過主應用程序本身來解決這個問題的方法? 再次感謝您的幫助! – MeLi 2011-03-20 08:08:42
看起來像你有一個應用程序域的衝突。如果每個SWF中的類名衝突(例如,swf1有一個名爲Main的類,swf2也有一個名爲Main的類),則會發生這種情況。
爲了解決這個問題,加載SWF文件到一個新的應用領域:
loader.load(new URLRequest("g.swf"), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain)));
如果不是,你最有可能的是對SWF的初始化執行電影的第一幀上的一些代碼(在獲得Event.COMPLETE之前,看看你是否得到Event.INIT)。
這可以很容易地通過從框架中刪除代碼來修復。
必須發佈一些代碼和相關的錯誤,以獲得任何地方。 – Bosworth99 2011-03-17 14:55:20