2009-03-05 8 views
0

私はこのように、それがステージにアクセスできるようにスプライトを継承するシングルトンクラスを持っている...ステージはいつ初期化されますか?

package 
{ 
    import flash.display.Sprite; 

    public class C extends Sprite 
    { 
     private var _grid:Array = new Array(); 

     public function get Grid():Array 
     { 
      return _grid; 
     }  

     private static var _instance:C; 

     public static function get Instance():C 
     { 
      if (_instance == null) 
      { 
       _instance = new C(); 
      } 

      return _instance; 
     } 

     function C() 
     { 
      this.InitGrid(); 
     } 

     private function InitGrid():void 
     { 
      var gridWidth:Number = stage.width/10; 
     } 
    } 
} 

私はint型でstage.widthを交換した場合、このエラー

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at C/InitGrid() 
    at C() 
    at C$/get Instance() 
    at C() 
    at Main() 

をスローしますコードはOKを実行します。 これは、オブジェクトがステージの子オブジェクトのdisplayListに追加されていないためですか?

ありがとうございました

答えて

3

はい。表示リストの一部になったら、Spriteはステージプロパティのみを持ちます。
ステージを取得するには、シングルトンにステージへの参照を与えるか、ステージに参照を追加する必要があります。後者を選択すると、リスナーEvent.ADDED_TO_STAGEを追加して、それをシングルトン内で処理できます。

関連する問題