处理变量的Javascript数组未定义

时间:2016-07-12 12:06:13

标签: javascript

你好我想要做的只是绘制一些图像。所以起初我做了一个组(我认为这个功能是我正在使用的插件的一部分,但不管怎么说)然后我做了一个数组来存储几个图像的名称和src然后我调用for循环来绘制这些图像,但事情是我没有任何结果没有错误没有所以我试图提醒“b.name”和“b.src”但结果我得到的是未定义的,有人可以解释我在哪里是一个问题因为我似乎一切都很好

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

2 个答案:

答案 0 :(得分:3)

你的错误就在这里

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

您首先将b分配给mapVillage的条目,该条目确实包含您要查找的b.image。但是你在下一行中重写它。因此,当您接下来拨打b.image时,它正在寻找&#39; image&#39;在&#34; Sprite&#34;上,没有该属性;-)

要解决此问题,只需将Sprite指定给一个新变量即可。 var sprite = new Sprite(game.width, game.height);

答案 1 :(得分:1)

首先为var b分配一个对象(var b = mapVillage[i];),然后覆盖它为其分配Sprite。你需要两个变量,如下所示:

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