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

时间:2012-03-29 03:30:59

标签: 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 {

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


}
}

1 个答案:

答案 0 :(得分:1)

不确定自定义类/库如何处理卸载或它们提供卸载的实用程序,但我确信代码中的某个地方最终会使用Loader对象。在这种情况下,您需要显式调用unloadAndStop(true),它会向GC提示,让它知道它现在可以收集并处理该加载的swf。有关详情,请参阅文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#unloadAndStop()