2016-07-12 12 views
1

Hallo, was ich versuche zu tun ist, nur einige Bilder zu zeichnen .so zuerst machte ich eine Gruppe (ich denke, diese Funktion ist ein Teil eines Plugins ich benutze aber das ist egal) dann habe ich ein array gemacht um einen namen und src von mehreren bildern zu speichern und dann rufe ich eine for loop um diese bilder zu zeichnen aber das ding ist ich habe keine ergebnisse überhaupt keine fehler nichts also versuche ich "b.name" und „b.src“ aber zur Folge bekam ich undefiniert könnte mir jemand erklären, wo ein Problem cuz für mich sein scheint alles gutJavascript Array Assinging zu Variable wird undefined

  var mapGroup = new Group(); 
      var mapVillage = [ 
       {name: "leaf", src: "js/leaf.png"}, 
       {name: "sand", src: "js/sand.png"}, 
       {name: "stone", src: "js/stone.png"}, 
       {name: "cloud", src: "js/cloud.png"}, 
       {name: "mist", src: "js/mist.png"}, 
       {name: "rain", src: "js/rain.png"}, 
       {name: "grass", src: "js/grass.png"}, 
       {name: "sound", src: "js/sound.png"}, 
       {name: "hotwater", src: "js/hotwater.png"}, 
       {name: "waterfall", src: "js/waterfall.png"} 
      ]; 

      for(var i = 0; i < mapVillage.length; i++){ 
       var b = mapVillage[i]; 
       b = new Sprite(game.width, game.height); 
       b.image = game.assets[b.src]; 
       alert(b.name); 
       mapGroup.addChild(b); 
      } 
+1

Sie überschreiben 'b' in' var b = mapVillage [i]; b = new Sprite (game.width, game.height); ' – Tushar

+0

Die Variable' b' darf nicht gleichzeitig ein Eintrag im Array 'mapVillage' und ein neuer Sprite sein. – Pointy

+0

Ich denke, ich habe versucht, ein Sprite für jedes Array-Element zu assistieren, weil ich später hittest tun werde – yahoo5000

Antwort

3

Ihr Fehler ist hier

var b = mapVillage[i]; 
    b = new Sprite(game.width, game.height); 

Sie ordnen b zuerst einem Eintrag von mapVillage zu, der die gesuchte b.image enthält. Aber Sie übersteuern es in der nächsten Zeile. Also, wenn Sie als nächstes b.image aufrufen, sucht es nach 'image' auf einem "Sprite", der diese Eigenschaft nicht hat ;-)

Um es zu lösen, weisen Sie einfach den Sprite einer neuen Variablen zu. var sprite = new Sprite(game.width, game.height);

1

Sie weisen zunächst auf var b ein Objekt (var b = mapVillage[i];) dann eine Sprite ihm zuweisen es außer Kraft setzen. Sie benötigen zwei Variablen:

for (var i = 0; i < mapVillage.length; i++){ 
    var b = mapVillage[i]; 
    var sprite = new Sprite(game.width, game.height); 
    sprite.image = game.assets[b.src]; 
    alert(b.name); 
    mapGroup.addChild(sprite); 
}