0

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

4

2 回答 2

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

}
于 2012-07-02T15:47:30.957 回答
0

我认为这是不可能的。我猜swf一个被加载到你的程序中,它会立即运行自己的程序,它是加载其他swf,swf A加载swf B,swf B加载swf A .... \n。这就像一个导致堆栈溢出的无限递归函数。

于 2012-09-15T15:43:35.087 回答