AS3:两个加载器的内存泄漏

时间:2012-07-02 14:59:19

标签: actionscript-3 loader

我有一个只有一帧的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个可见时才会出现此问题。这听起来很疯狂,我知道......我希望这是一个知道错误或代码中的错误......

2 个答案:

答案 0 :(得分: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);

}

答案 1 :(得分:0)

我认为这是不可能的。 我想swf一个被加载到你的程序中,它立即运行自己的程序,就是这样 它加载其他swf,swf A load swf B,swf B load swf A ....... \ n。它就像一个无休止的重复函数,导致堆栈溢出。