2009-03-05 9 views
0

böyle, sprite devralan bir Singleton sınıf var ..sahne ne zaman başlıyor? o sahneyi erişebileceği şekilde

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; 
     } 
    } 
} 

Bu hatayı

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() 

atar bir int ile stage.width değiştirin kod tamam çalıştırır. bunun nedeni nesnenin sahnenin herhangi bir çocuğunun ekran göstergesine eklenmemiş olması mıdır?

Teşekkürler

cevap

3

Evet. Sprite, Görüntüleme listesinin bir parçası olduğunda yalnızca bir sahne özelliğine sahip olacaktır.
Sahneyi elde etmek için, singleton'unuza sahneye bir referans vermeniz veya Ekran listesine eklemeniz gerekir. Eğer ikincisini seçerseniz, Event.ADDED_TO_STAGE bir dinleyici ekleyebilir ve buna göre tektonunuzun içinde kullanabilirsiniz.