2009-03-05 6 views
0

J'ai une classe singleton qui hérite de sprite pour qu'il puisse accéder à la scène, comme celui-ci ..quand la scène est-elle initialisée?

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

Cette erreur jette l'

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

Si je remplace Stage.width avec un int le code s'exécute OK. est-ce parce que l'objet n'a pas été ajouté à la liste d'affichage des enfants de la scène?

Merci

Répondre

3

Oui. Le Sprite n'aura une propriété de scène qu'une fois qu'elle fait partie de la liste Afficher.
Pour obtenir la scène, vous devez soit donner à votre singleton une référence à la scène ou l'ajouter à la liste d'affichage. Si vous choisissez ce dernier, vous pouvez ajouter un écouteur Event.ADDED_TO_STAGE et le gérer en conséquence dans votre singleton.

Questions connexes