Flash アニメーションが作りやすくて、なんとかこの作りやすさを C++ でもと参考にしてゲームを作っているのですが、やはり継承ツリーの長さが気になります。
ゲームの基本的な要素である Sprite と Flash の基礎的な要素である MovieClip までの継承ツリーを見てみると次のようになります。
| Object | 全てのオブジェクトの祖。 |
|---|---|
| EventDispatcher | イベントを受け取ったり、送出したり、ラジバンダリできるようになる。 |
| DisplayObject | Flash ムービーとして表示するのに必要な情報が管理できるようになる(大きさとか座標とか回転度とか不透明度とか)。 |
| InteractiveObject | マウスやキーボードに反応できるようになる。 |
| DisplayObjectContainer | DisplayObject をツリー状に内包できるようになる。知らなかったけどゲームを作るのに便利なパターンらしい。 |
| Sprite | 実際に Flash ムービーの画面に表示できるようになる(これより前の表示関連のクラスは抽象クラス)。 |
| MovieClip | タイムラインを持った Sprite 。これなくして Flash はないが、 Flash なくしてこれはない、というのは言い過ぎ。 |
長いです。そして、表現する物によっては要らない機能もあります。たとえばダッシュして巻き上げた砂のエフェクトなんかがイベントを送出したり受け取ったりできる必要はありません。ゲームによってはひとつひとつの表示オブジェクトが入力を受け付ける機能が不要になることも多いかと思います。
インタフェースによる代表的な実装を持つオブジェクトへの委譲などで、ひとつひとつのオブジェクトを軽量化できないか検討が必要のようです。
Contributions