[AS3] DisplayObjectインスタンスの種類と使用メモリ [Edit]

Adobeのサイトに公開された「Flash Platformのパフォーマンスの最適化」の「表示オブジェクト」の項は、DisplayObjectクラスを継承するShapeとSprite、MovieClipのオブジェクトについて、使用メモリの点から違いを比べています(なお、akihiro kamijo「Flash コンテンツパフォーマンス最適化(メモリ編 1)」参照)。その内容を、簡単にまとめてみましょう。

一般に、継承を遡るほど、機能は少なくなるものの、使用メモリも減ります。DisplayObjectと基本になるクラスの継承は、つぎのとおりです。

DisplayObjectContainer→InteractiveObject→DisplayObject→EventDispatcher

DisplayObjectクラスを継承すれば、ステージに表示して描画などの操作ができます。また、そのスーパークラスがEventDispatcherですので、基本的なイベントを受取り、リスナーに配信する機能をもちます。

さらに、InteractiveObjectを継承すると、マウスやキーボードなどのインタラクティブなイベントが扱えます。DisplayObjectContainerのサブクラスは、子のDisplayObjectインスタンスが表示リストに加えられます。

以上から、ShapeとSprite、MovieClipの3つのクラスを比べると、下表001のようになります。

表001■ShapeとSpriteおよびMovieClipクラスの比較
クラス スーパークラス 機能 イベント 使用メモリ
Shape DisplayObject インスタンスへの描画 基本 236
Sprite DisplayObjectContainer 子DisplayObjectインスタンスをもてる インタラクション 412
MovieClip Sprite タイムラインをもつ 440

オブジェクトの使用メモリは、getSize()関数で調べることができます。戻り値の単位はバイトです。なお、この関数はFlash Player 9.0.115.0以降のデバッグまたはムービープレビューでのみ使えます。

trace(getSize(new Shape()));   // 出力: 236
trace(getSize(new Sprite()));   // 出力: 412
trace(getSize(new MovieClip()));   // 出力: 440
[追記2011/06/07] 引用した英語版「Optimizing Performance for the Flash Platform」を日本語版に差替えました。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事