Ich habe diese Klasse, die Bibliothek Klassen aus einer geladenen SWF-Datei extrahiert. Ich habe bemerkt, dass jedes Mal, wenn ich die Klasse irgendwo in meiner App von der Bühne entferne, die Klasseninstanz nicht den gesammelten Müll erhält. Irgendwelche Vorschläge?Garbage Collecting External Loaded SWF-Assets
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;
}
}
}
Meine swfs enthalten eine Menge von Assets, ich kann nicht die gesamte swf entladen, weil dann ich es neu laden müsste, um die Assets zurück zu bekommen. – d4rklit3
Dann können Sie nicht vernünftigerweise erwarten, dass der GC die SWF aufräumt, wenn Sie sie noch benutzen .... –
Ja, das scheint eine Einschränkung dieser Methode zu sein. Anstatt seiner Bequemlichkeit werde ich alle Sprites in Bitmaps umwandeln und eine statische Version der Bitmapdata behalten, um zu verwenden, wann immer ich brauche. Wenn ich MovieClips mit Animationen einbinden muss, kann ich sie als eigene swfs einbinden. – d4rklit3