JavaScript在for循环中创建对象

时间:2015-06-30 07:41:03

标签: javascript canvas

我正在使用JavaScript制作canvas游戏,但在保存数据方面遇到了一些问题。我正在使用for循环在画布上放置图像,我想保存对象中每个图像的信息。对于每个图像一个对象。

function CreateBlocks(){
    for(var i = 0; i <= blocks; i++){
        var img   = new Image();
        img.src   = "/images/Block.png";

        blockObject = {
            x:    x, 
            y:    y, 
            points:  10
         }
         ctx.drawImage(img,x,y);

         x += 100;
         y += 100;
    }
}

现在这显然会在每次循环时覆盖blockObject。我尝试将循环值添加到对象的名称,如block[i]ObjectblockObject[i],但这会返回语法错误。

我可以为每个值创建一个单维数组,但这对我来说似乎相当混乱。如何在循环中创建对象?

2 个答案:

答案 0 :(得分:6)

只需使用数组并每次都按下新对象:

function CreateBlocks(){
    var arr = [];

    for(var i = 0; i <= blocks; i++){
        var img   = new Image();
        img.src   = "/images/Block.png";

        arr.push({
            x:    x, 
            y:    y, 
            points:  10
         });

         ctx.drawImage(img,x,y);

         x += 100;
         y += 100;
    }
}

答案 1 :(得分:0)

如果你创建了一个blockObjects数组,那么使用blockObject[i]语法的第二个想法就可以了:

var blockObjects=[];

function CreateBlocks(){
    for(var i = 0; i <= blocks; i++){
        var img   = new Image();
        img.src   = "/images/Block.png";

        blockObjects[i] = {
            x:    x, 
            y:    y, 
            points:  10
        };
        ctx.drawImage(img,x,y);

        x += 100;
        y += 100;
    }
}