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も初期値の100を保持する代わりにblockArray[0]のsx値と同様に変更されます。

私は何を間違えていましたか?配列内の他のオブジェクトに影響を与えずにblockArray[0]のsxを変更するにはどうすればよいですか?

編集:コードを更新しました。セグメントは、ブロック要素を持つ配列です。

4

1 に答える 1

0

修正された感謝。NorguardとMarkReedのコメントにより、コードの間違った部分を見つけることになりました(これを投稿に含めるのを忘れていました)。

やって:

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

オブジェクトを保存する代わりに、segments[i-1]の参照をsegments[i]に保存します。私のために学んだ教訓。

于 2012-08-22T04:45:14.583 に答える