引数に渡したインデックスの子DisplayObjectインスタンスを表示リストから除く。削除したインスタンス以降の子インスタンスのインデックスは繰り上がる。表示リストから除く子DisplayObjectインスタンスのインデックスを示す整数。trueを渡すと、削除する子DisplayObjectインスタンスに含まれるデータはすべて破棄される。デフォルト値はfalse。引数に渡された子DisplayObjectインスタンスを表示リストから除く。引数のインスタンスが表示リスト内になければ、何も起こらない。表示リストから除く子DisplayObjectインスタンス。trueを渡すと、削除する子DisplayObjectインスタンスに含まれるデータはすべて破棄される。デフォルト値はfalse。引数に渡されたインデックスの範囲の子DisplayObjectインスタンスを表示リストから除く。引数がなければ、すべての子インスタンスが表示リストから消される。表示リストから除く最初の子DisplayObjectインスタンスのインデックスを示す整数。表示リストから除く最後の子DisplayObjectインスタンスのインデックスを示す整数。負数や表示リストに納められたインスタンス数以上の値は、表示リストの最後のインスタンスまでとみなされる。trueを渡すと、削除する子DisplayObjectインスタンスに含まれるデータはすべて破棄される。デフォルト値はfalse。説明DisplayObjectインスタンスのイベントリスナーすべてを消したいことがあります。インスタンスを表示リストから除いてメモリから消し去りたいときは、そのインスタンスに加えられたイベントリスナーはすべて削除しなければなりません。Starlingフレームワークには、そのためのメソッドがいくつか備わっています。DisplayObjectクラスが継承するEventDispatcherクラスには、EventDispatcher.removeEventListeners()メソッドがあります。引数にイベント定数の文字列を渡せば、そのイベントに加えられたイベントリスナーはすべて消し去られます。引数を省くかnullを渡すと、すべてのイベントとみなされます[*1]。つぎに、DisplayObjectクラスに備わるDisplayObject.dispose()メソッドは、インスタンスに含まれるデータをすべて破棄します。GPUバッファは開放され、内部的にEventDispatcher.removeEventListeners()メソッドが引数なしで呼出されます[*2]。したがって、インスタンスに加えられたイベントリスナーはすべてなくなります。使われているテクスチャ(Textureオブジェクト)は消されません[*3]。DisplayObjectContainerクラスにも、DisplayObjectContainer.dispose()メソッドが備わっています。このメソッドはDisplayObjectContainerインスタンス自身だけでなく、子のDisplayObjectインスタンスに含まれるデータも破棄します[*4]。したがって、DisplayObjectContainer.dispose()メソッドを呼出せば、表示リストの階層のすべての子インスタンスのデータが消し去られます。DisplayObjectContainerクラスの表示リストから子インスタンスを除くDisplayObjectContainer.removeChildAt()やDisplayObjectContainer.removeChild()、およびDisplayObjectContainer.removeChildren()といったメソッドには、子インスタンスのデータを破棄する引数が与えられます[*5]。この引数を使えば、子インスタンスに対してDisplayObject.dispose()やDisplayObjectContainer.dispose()メソッドを呼出す手間が省けます。これらDisplayObjectインスタンスのイベントリスナーをすべて削除するメソッドは、メモリを開放するのに役立って便利です。必要なリスナーが含まれていないかを、予めよく確かめなければなりません。EventDispatcherクラスにはEventDispatcher.removeEventListeners()メソッドがつぎのように定められています(ステートメント頭の番号は、ASファイルの行を示します。バージョンによって変わることがあります。null;}イベントリスナーは、イベントごとにDictionaryオブジェクト(mEventListeners)に納めて管理されています(第37行目)。EventDispatcher.removeEventListeners()メソッドは、渡された引数に応じてリスナー関数群(Functionベース型のVectorオブジェクト)をDictionaryオブジェクトから除きます(第76〜79行目)。DisplayObjectクラスにはDisplayObject.dispose()メソッドが、つぎのように定められています。DisplayObjectクラスにremoveEventListeners()というメソッドは備わっていませんので、継承するEventDispatcherクラスのEventDispatcher.removeEventListeners()が呼出されます(第140行目)。Starling』p.28をご参照ください。Textureオブジェクトからデータを消すには、Texture.dispose()メソッドを呼出します(TextureAtlasオブジェクトの場合はTextureAtlas.dispose())。DisplayObjectContainerクラスは、override属性キーワードによりDisplayObjectクラスのdispose()メソッドを再定義(オーバーライド)しています。メソッドは、表示リストとなるVectorオブジェクト(mChildren)から取出したすべての子インスタンスに対してdispose()メソッドを呼出し(第79〜82行目)、さらにスーパークラスのDisplayObject.dispose()メソッドの呼出しも行います(第84行目)。++i)mChildren[i].dispose();super.dispose();}}なお、子がDisplayObjectContainerインスタンスの場合に呼出されるのは、DisplayObjectContainer.dispose()メソッドになります(第82行目)。結果として、表示リストの階層のすべての子に対して、dispose()メソッドの呼出しが行われるのです。DisplayObjectContainer.removeChildAt()メソッドは、第2引数(dispose)にtrueが与えられると、表示リスト(mChildren)から取出した子インスタンス(child)のdispose()メソッドを呼出します(第131行目)。index");}}DisplayObjectContainer.removeChild()は、引数に渡された子インスタンスのインデックスを調べたうえで、(インデックスが存在すれば)そのインデックスと自らが受取った第2引数をDisplayObjectContainer.removeChildAt()メソッドに渡して呼出します(第116〜117行目)。dispose);}DisplayObjectContainer.removeChildren()メソッドもDisplayObjectContainer.removeChild()と同じように、削除するインデックスの子インスタンスに対してDisplayObjectContainer.removeChildAt()メソッドを呼出しています(第146〜147行目)。