タイムラインに置いたMovieClipインスタンスに登録したイベントリスナーは、インスタンスのないフレームに移動しても通常直ちには消えません。ガベージコレクションが働いてメモリを解放するまで待たなければならないからです(「予め配置したMovieClipのリスナーがインスタンスのないフレームに移動してもイベントを受取る」参照)。10では、MovieClipインスタンスのないフレームに入った途端にイベントは受取られなくなることがあります。メインタイムラインに2フレームをつくり、その第1フレームのみに空のMovieClipインスタンスを置きます(図001)。MovieClipシンボル内にスクリプトは書きませんし、とくにビジュアルエレメントもなくて構いません。インスタンス名はmy_mcとします。図001■全2フレームのメインタイムライン第1フレームにMovieClipインスタンスを置くMovieClipインスタンスを置いたメインタイムラインの第1フレームに、以下のスクリプト001を書きます(図002)。フレームアクションは、MovieClipインスタンスmy_mcのDisplayObject.enterFrameイベント(定数Event.ENTER_FRAME)にリスナー関数(xTest())を登録しています。リスナー関数は、メインタイムラインの現行フレームと子インスタンスの数、およびインスタンスに設定した変数(id)の値を[出力]します。この変数値はgetTimer()関数が返す整数で、インスタンスを識別するために設定しています(前掲「予め配置したMovieClipのリスナーがインスタンスのないフレームに移動してもイベントを受取る」参照)。_mc.id);}図002■メインタイムラインに第1フレームアクションを記述[ムービープレビュー]を確かめると、[出力]パネルには何も表示されません。イベントリスナーが呼ばれていないようです。DisplayObject.enterFrameイベントが発生する第2フレームには、MovieClipインスタンスがありません。インスタンスがなくなれば、イベントリスナーもともに消えることになります。前述のとおりイベントリスナーを消すのは、ガベージコレクションの役目です。参照がなくなったからといって、ガベージコレクションは直ちに働く訳ではありません。詳しくは、前述「予め配置したMovieClipのリスナーがインスタンスのないフレームに移動してもイベントを受取る」で解説しました。10で少し変わった節があります。9に変えると、[ムービープレビュー]で[出力]が現れます(図003)。9に変えると[出力]が表れる[出力]からは、子インスタンスの数が第1フレームは1で第2フレームが0であるにも拘らず、イベントリスナーの数が増えていく理由は、前掲「予め配置したMovieClipのリスナーがインスタンスのないフレームに移動してもイベントを受取る」で説明しています。9と10のふるまいを同じにするには、ふたつ方法があるようです。MovieClipシンボルのフレームに何か書くMovieClipシンボルのフレームに何かを書きます。スクリプトでなくても、コメント行区切り記号//ひとつで構いません。10でも[出力]が表れます。9でも、MovieClipインスタンスへの参照をすべてなくせば、リスナー関数がイベントを受取らなくなるようです。前掲スクリプト001を例にとるなら、フレームアクションの終わりに、MovieClipインスタンスが納められた変数にnullを代入します。10で加えられたのは、MovieClipインスタンスへの参照を暗黙的に破棄する処理ではないかと推測されます。