Сборка мусора внешне загруженных активов SWF - PullRequest
0 голосов
/ 29 марта 2012

У меня есть этот класс, который извлекает библиотечные классы из загруженного файла .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 Ответ

1 голос
/ 29 марта 2012

Не уверен, как ваши пользовательские классы / библиотеки обрабатывают выгрузку или какие утилиты они предлагают выгрузить, но я уверен, что где-то в коде они используют объект Loader.В этом случае вам нужно явно вызвать unloadAndStop (true), который дает подсказку GC, давая ему понять, что теперь он может собирать и размещать на этом загруженном SWF.Смотрите документы для более: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#unloadAndStop()

...