0

私の理解では、埋め込まれた画像は圧縮され、アプリケーション バイナリ (SWF ファイル) の一部として保存され、埋め込まれた画像のプロパティを持つクラスがインスタンス化されると、すべての画像が一度に読み込まれ、メモリに保持されるため、すぐに利用でき、非同期読み込みを必要としません。もちろん、これは直感的に聞こえますが、間違いなく正しいですか?

たとえば、定義するクラスを使用している場合

class BunchOfEmbeddedImages {
[Embed(source="some_image_1.png")]
private var someImage1:Class;
.
.
.
[Embed(source="some_image_100.png")]
private var someImage100:Class;
}

各イメージが 100KB であると仮定すると、このクラスのインスタンスが作成されると、アプリケーションは 10000KB になります (圧縮解除されるため、それ以上になります)。

4

1 に答える 1

0

私は自分の質問に答えたほうがいいと思いました。このトピックの答えを見つけるために読んだ元のドキュメント(adobeのパフォーマンス最適化ドキュメント)は見つかりませんでしたが、SWF全体がメモリに読み込まれるため、すべての埋め込みアセットがメモリに読み込まれることがわかりました。それらを埋め込むクラスがインスタンス化されているかどうかに関係なく、メモリも消費しています。埋め込まれた画像はすべて同じビットマップデータを参照しますが、異なるDisplayObjectインスタンスによって参照されるため、これは完全に理にかなっています。これにより、ディスプレイリストのさまざまな部分にあるn個のDisplayObjectが同じ画像を表示できますが、ビットマップのメモリをn倍消費することはありません。

于 2012-12-16T02:35:49.993 に答える