将值赋给数组元素的属性设置所有其他类似元素的属性

时间:2012-08-21 16:09:31

标签: javascript arrays

function Block(){
    this.x = 100;
    this.y = 100;
}

// update canvas
        function UpdateCanvas(){
            // check if game is still on going
            if (!isStopped)
            {
                for(var i = segments.length - 1; i > 0 ; i--)
                {
                    segments[i] = segments[i - 1];
                }

                switch(direction)
                {
                    case "left":
                        segments[0].x = segments[0].x - pixelChange;
                        DrawCanvas();
                        break;
                    case "right":
                        segments[0].x = segments[0].x + pixelChange;
                        DrawCanvas();
                        break;
                    case "up":
                        segments[0].y = segments[0].y - pixelChange;
                        DrawCanvas();
                        break;
                    case "down":
                        segments[0].y = segments[0].y + pixelChange;
                        DrawCanvas();
                        break;
                }
            }
        }

我创建了一个数组和一个名为Block的类。现在在数组中创建了2个对象并将blockArray [0]的sx属性更改为其他数字后,blockArray [1]的sx也会更改,类似于blockArray [0]的sx值,而不是保留初始值100。 / p>

我做错了什么?如何在不影响数组中其他对象的情况下更改blockArray [0]的x?

编辑: 更新了代码。 segments是一个带有块元素的数组。

1 个答案:

答案 0 :(得分:0)

固定谢谢。 Norguard和Mark Reed的评论让我找到了错误的代码部分(我忘记在帖子中添加)。

做的:

for(var i = segments.length - 1; i > 0 ; i--){
    segments[i] = segments[i - 1];
}

将段[i-1]的引用保存到segment [i]而不是保存对象。经验告诉我。