2012-03-29 7 views
0

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


} 
} 

Antwort

1

nicht sicher, wie Sie Ihre benutzerdefinierten Klassen/libs Griff Entladen oder welche Dienstprogramme bieten sie zu entladen, aber ich bin sicher, dass irgendwo im Code, den sie das Loader-Objekt am Ende. In diesem Fall müssen Sie unloadAndStop (true) explizit aufrufen, um dem GC einen Hinweis zu geben, dass er jetzt dieses geladene swf sammeln und darüber verfügen kann. Weitere Informationen finden Sie in der Dokumentation: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#unloadAndStop()

+0

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

+0

Dann können Sie nicht vernünftigerweise erwarten, dass der GC die SWF aufräumt, wenn Sie sie noch benutzen .... –

+0

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