あなたの質問に答えるには: アイコンのあるフレームに移動すると、Flash はそのアイコンの新しいインスタンスを作成します。そのフレームを離れると、リスナーであるメソッドがアイコンまたはその中のどこかにある addEvenListener を使用するなど、インスタンスを何らかの方法で強制的にメモリに保持しない限り、Flash はそのアイコンをガベージ コレクションの対象にします。
goToAndStop と新しいインスタンスのほうがメモリ使用量が多くなる可能性が高いと思います。goToAndStop() で問題が発生していない場合は、あるアイコンから別のアイコンに切り替えるたびに新しいアイコンをインスタンス化することで、追加の問題が発生する可能性はほとんどありません。答えた他の人々は、すべてのアイコンを(何らかの方法で)1回だけインスタンス化し、そのアイコンを使用するたびに同じアイコンを使用することで、使用するCPUサイクルが少なくなることはまったく正しいです。ただし、すべてのアイコン (現在使用していないものも含む) が常にメモリ内にあるため、全体的なメモリ フットプリントは高くなります。
それぞれを一度だけインスタンス化するルートに進みたい場合は、最初に使用されたときにのみ各アイコンをインスタンス化する遅延読み込みを使用することをお勧めします。これを行う 1 つの方法は、既存のものを使用して、特定のアイコンを初めて使用するときにフレームにアクセスし、その後 BitmapData またはアイコン自体への参照を保存して再利用することです。もう 1 つの方法は、swc を作成して同様のパターンを使用することです。
アイコンMCのさまざまなコピーを大量に使用していないように聞こえるため、これには静的変数BTWは必要ありません。その場合でも、依存性注入によって、持っているアイコンを参照するように処理した方がよいでしょう。
ただし、おそらくファイルサイズと実際のメモリ使用量について質問していると思います。その質問に対する答えは、fla で使用されるすべてのアセットは、MovieClip、SWC、またはフレーム N の Actionscript 用にエクスポートがオンになっているライブラリにあるかどうかに関係なく、swf にコンパイルされるということです。
わかった、オッパイある、推し これやって
みて、「推し」を検証。
- フレーム 1 にキーフレームを持つ swf を作成します。
- そこに円を描きます。
- フレーム 10 に別のキーフレームを配置します。正方形を描きます。
- [発行設定] で、[サイズ レポートの生成] をオンにします。
これで、フレーム 10 でコンパイルされたアセットがまだダウンロードされていなくても、この swf がフレーム 1 に円を表示できることがわかりました (または知っておく必要があります)。では、フレーム 10 がダウンロードされる前に正方形をメモリにロードできる方法はありますか? ヒント: 答えはノーです。
ここで、次のことを自問してみてください。Macromedia は、上記で作成したムービー用に Flash が生成したメインのドキュメント クラスである MC が明らかにうまく処理できる、遅延読み込みができない特別なバージョンの MC を作成したと思いますか?
Macromedia のエンジニアは、後から考えると非常にばかげているように見える多くのことを行いましたが、それほど無能ではありません。