ActionScript3.0でシングルトンやろうとしたらコンストラクタがpublicじゃないとダメという仕様で、
Google先生に聞いたところいろいろやり方があるようで。
ここではいろいろな方法を紹介していた。
でもこんな感じの方がわかりやすくない?余計な変数もいらないし。
package{ import flash.errors.IllegalOperationError; public class XXXManager{ public static function get instance():XXXManager{ if(_instance==null){ // コンストラクタで_instanceに設定しているからここでは渡さない。 new XXXManager(); } return _instance; } /** @brief コンストラクタ */ public function XXXManager(){ // 最初の一回は通る if(_instance){ throw new IllegalOperationError( "Should not be instantiated!!"); } _instance = this; } private static var _instance:XXXManager = null; // 自分自身 } }
本当は
private static var _instance:XXXManager = new XXXManager(); // 自分自身
とC#みたいにできればプロパティだけ設定すれば良いだけだからそうしたいけど残念。