2014-06-15 3 views
0

Quand je teste mon jeu dans Adobe Flash CC, je reçois cette erreur: TypeError: Error #1009: Cannot access a property or method of a null object reference.SyntaxError: Erreur # 1009: Impossible d'accéder à une propriété ou une méthode d'une référence d'objet nul

Ceci est essentiellement le code autour de l'erreur (I supprimé les parties sans importance pour le rendre plus clair):

package ui.levelSelect { 
    import flash.display.MovieClip; 

    public class LevelsContainer extends MovieClip { 

     public var levelThumbs:Array; 
     public var levels:Array = [{name:'level1'},{name:'level2'}]; 

     public function LevelsContainer(){ 

      for(var i:String in levels) { 
       var index:int = int(index); 

       levelThumbs[index] = new MovieClip; //This is the line where I get the error 

      } 

     } 



    } 

} 

Qu'est-ce qui provoque cette erreur? levelThumbs est déjà déclaré correctement? La modification à this.levelThumbs ne fonctionne pas non plus ...

Répondre

1

La simple déclaration d'une variable n'alloue aucune mémoire pour l'objet et a donc la valeur null. Vous devez réellement allouer la mémoire pour le tableau levelThumbs en appelant new Array ou [].

public var levelThumbs:Array = new Array; 

ou

public var levelThumbs:Array = []; 
+0

Il est la bonne réponse, mais l'explication est erronée pour 2 raisons, le processus décrit n'est pas allocation de mémoire, mais la création d'instance de classe. Pour créer une instance d'une classe (ici Array), la mémoire doit être allouée. L'allocation de mémoire n'égale pas la création d'instance de classe. Enfin, la création d'instances au moment de la déclaration est également déconseillée. Ces objets seront instanciés avant qu'il ne s'objecte lui-même. Au lieu de cela, créez votre objet dans votre constructeur. – BotMaster

Questions connexes