「static」を使う時
僕がゲームを作るとき、構成上の最上位となるクラスを中心に作るようになったのですが、
このクラスはゲームの「_root」となる「Sprite」を
private var _stageSp:Sprite;
といったメンバで確保していました。
で、プレイヤーなどのオブジェクトごとに
new Player(_stageSp);
といったように引数として「_root」となる「Sprite」を一つ一つ渡していました。
でも、もっと楽な方法があることに気づきました。
上記のメンバを
public class Screen { private static var _stageSp:Sprite; public static function getStageSp():Sprite { return _stageSp; } }
といったように「static」で定義すれば、
例えばPlayerクラスでは
// コンストラクタ public function Player() { Screen.getStageSp().addChild(<プレイヤーのディスプレイオブジェクト>); }
といったように、Playerクラスを生成する際に引数を渡す必要が無いことに気づきました。
毎度、おなじみの「今頃気づいたか」という感じです。
オブジェクト指向という考え方で、こういうのがアリかナシかというのは分かりませんが、
僕の中で「static」の可能性が広がりましたとさ。