【问题标题】:AS3: memory leak with two loadersAS3:两个加载器的内存泄漏
【发布时间】:2012-07-02 14:59:19
【问题描述】:

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

【问题讨论】:

  • 可能内存链接在您正在加载的 SWF 中。

标签: actionscript-3 loader


【解决方案1】:

假设加载的 .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);

}

【讨论】:

  • 感谢您的回答。还是一样的问题。那一定来自瑞士法郎……但是当我直接运行它们时,我看不到任何泄漏。此外,只有一个加载器,我没有内存泄漏。如果我加载两个,然后隐藏一个(chargeur.visible=false 或chargeur.y=1200),也没有内存泄漏。仅当同时有 2 个可见时才会出现此问题。这听起来很疯狂,我知道......我希望这是一个已知的错误或者我的代码有某种错误......
  • 您如何识别内存泄漏?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多