2012-07-02 26 views
0

我只有一個框架的AS3文件。下面是代碼:AS3:使用兩個加載程序的內存泄漏

stop(); 
trace("Debut du code."); 
var chargeur:Loader = new Loader(); 
var chargeur2:Loader = new Loader(); 
var adress:URLRequest = new URLRequest("img/idle.swf"); 

chargeur.load(adress); 
addChild(chargeur); 

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded) 

function isLoaded (evt:Event) { 
trace("Loading complete"); 
var adress2:URLRequest = new URLRequest("img/oldcoucou.swf"); 

chargeur2.load(adress2); 
addChild(chargeur2); 
} 

問題是:有內存泄漏,像3MO/s的......我不明白,爲什麼和我在做什麼錯。任何線索?

謝謝。

編輯: 只有一個加載程序,我沒有內存泄漏。如果我加載兩個,然後隱藏一個(chargeur.visible = false或chargeur.y = 1200),也沒有內存泄漏。只有當同時有2個可見時纔會出現問題。這聽起來很瘋狂,我知道...我希望這是一個知道的錯誤或代碼中的錯誤...

+0

推測內存鏈接位於您正在加載的SWF中。 –

回答

0

假設加載的.swf不包含任何內存泄漏,下面的代碼應該是無泄漏的。

stop(); 
trace("Debut du code."); 
var chargeur:Loader = new Loader(); 
var chargeur2:Loader = new Loader(); 
var adress:URLRequest = new URLRequest("img/idle.swf"); 
var adress2:URLRequest = new URLRequest("img/oldcoucou.swf"); 

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded, false, 0, true); 
chargeur.load(adress); 

function isLoaded (evt:Event):void { 

chargeur.contentLoaderInfo.removeEventListener(Event.COMPLETE,isLoaded); 
adress = null; 
trace("Loading1 complete"); 
addChild(chargeur); 

chargeur2.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded2, false, 0, true); 
chargeur2.load(adress2); 

} 

function isLoaded2 (evt:Event):void { 

chargeur2.contentLoaderInfo.removeEventListener(Event.COMPLETE,isLoaded2); 
adress2 = null; 
trace("Loading2 complete"); 
addChild(chargeur2); 

} 
+0

感謝您的回答。同樣的問題還在。那必須來自瑞士法郎......但是當我直接運行它們時,我沒有看到任何泄漏。而且,只有一個加載器,我沒有內存泄漏。如果我加載兩個,然後隱藏一個(chargeur.visible = false或chargeur.y = 1200),也沒有內存泄漏。只有當同時有2個可見時纔會出現問題。這聽起來很瘋狂,我知道......我希望這是一個知道的錯誤,或者我的代碼在某種程度上是錯誤的...... –

+0

你如何識別內存泄漏? – crooksy88

0

我認爲這是不可能的。 我猜swf一個被加載到你的程序中,它立即運行它自己的程序,它是 它加載其他swf,swf A加載swf B,swf B加載swf A ....... \ n。它就像一個無休止的recusion函數導致堆棧溢出。