書き物

技術とか作った物の話とか愚痴文句感想など

「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」の可能性が広がりましたとさ。