0
ロードされた.swfファイルからライブラリクラスを取り出すこのクラスがあります。私は、クラスのインスタンスがガベージコレクションを取得していない私のアプリケーションのどこかでステージからクラスを削除するたびに気づいた。助言がありますか?外部からロードされた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;
}
}
}
swfにはたくさんのアセットが含まれているため、スワップ全体をアンロードすることはできません。アセットを戻すためにリロードする必要があるからです。 – d4rklit3
それでもまだ使用している場合は、GCがSWFをクリーンアップするとは限りません。 –
この方法の限界であると思われます。利便性の代わりに、私はすべてのスプライトをビットマップに変換し、必要なときにいつでも使用するためにビットマップデータの静的バージョンを保持します。私がアニメーションを使ってMovieClipを持ってきなければならない場合、私はそれらを自分のswfとして持ち込むことができます。 – d4rklit3