Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 垃圾收集外部加载的SWF资产_Actionscript 3_Garbage Collection - Fatal编程技术网

Actionscript 3 垃圾收集外部加载的SWF资产

Actionscript 3 垃圾收集外部加载的SWF资产,actionscript-3,garbage-collection,Actionscript 3,Garbage Collection,我有一个类,它从加载的.swf文件中提取库类。我注意到,每次我从应用程序中的某个阶段移除类时,类实例都不会被垃圾收集。有什么建议吗 package com.fullclip.utils { import com.greensock.loading.LoaderMax; import com.greensock.loading.SWFLoader; import flash.display.DisplayObject; public class LibraryAssets { pub

我有一个类,它从加载的.swf文件中提取库类。我注意到,每次我从应用程序中的某个阶段移除类时,类实例都不会被垃圾收集。有什么建议吗

package com.fullclip.utils {
import com.greensock.loading.LoaderMax;
import com.greensock.loading.SWFLoader;

import flash.display.DisplayObject;

public class LibraryAssets {

    public static function getAsset(id:String, librarySRC:String):DisplayObject     {
        return getAssetFromLoader(id, LoaderMax.getLoader(librarySRC) as         SWFLoader);
    }

    public static function getAssetFromLoader(id:String, library:SWFLoader):DisplayObject {
        try {
            var AssetClass:Class = library.getClass(id);
            return new AssetClass() as DisplayObject;
        }
        catch (error:Error) {
            Console.log("Could not find library asset: " + id);
            Console.warn(error, error.getStackTrace());
        }
        return null;
    }


}
}

不确定自定义类/lib如何处理卸载,或者它们提供了什么实用程序来卸载,但我确信它们最终会在代码的某个地方使用Loader对象。在这种情况下,您需要显式调用unloadAndStop(true),这会向GC提供一个提示,让它知道它现在可以在加载的swf上收集和处置。查看文档了解更多信息:()

我的swf包含大量资产,我无法卸载整个swf,因为这样我需要重新加载它才能取回资产。如果您仍在使用它,那么您就无法合理地期望GC清理swf……是的,这似乎是此方法的一个限制。为了方便起见,我将把所有精灵转换成位图,并保留位图数据的静态版本,以便在需要时随时使用。如果我需要引入带有动画的MovieClips,我可以将它们作为自己的swf引入。