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