0
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。

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

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

4

1 回答 1

0

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

正在做:

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

将段[i - 1] 的引用保存到段[i] 而不是保存对象。为我吸取的教训。

于 2012-08-22T04:45:14.583 回答