0

キャンバスに単純なグリッドを描画しようとしています。最初に私はこれをしました

function start()
{   
   var x = 0;
   var y = 0;

    for (x = 0; x < 500; x += 50)
    {
        line(0 + x, 50 + y, 50 + x, 50 + y, 1, "#111");
        line(50 + x, 0 + y, 50 + x, 50 + y, 1, "#111");

        if (x == 450)
        {
            x = -50;
            y += 50;
        }
        if (y == 500)
        {
            x = 500;
        }
    }
}

正常に動作します。ただし、グリッドとキャンバスのサイズを簡単に変更できるようにしたいと思います。だから私はこれをしました:

function start()
{   
    var x = 0;
    var y = 0;
    var cW = canvas.width;
    var cH = canvas.hight;
    var gS = 50; //gS = gridSpace

    for (x = 0; x < cW; x += gS)
    {
        line(0 + x, gS + y, gS + x, gS + y, 1, "#111");
        line(gS + x, 0 + y, gS + x, gS + y, 1, "#111");

        if (x == cW - gS)
        {
            x = -gS;
            y += gS;
        }
        if (y == cH)
        {
            x = cW;
        }
    }
}

それは動作しません!私を助けてください。

PS。私は図書館を利用しています。`

4

2 に答える 2

0

これについては、少し違った方法でアプローチすることをお勧めします。あなたがここで何を達成しようとしているのか完全にはわかりませんが、あなたがやろうとしていることへと導くかもしれないいくつかの指針/質問があります:

  • グリッドを描画すると、一連の水平線と一連の垂直線が描画されます。2 つのループを使用して、そのプロセスを簡素化します。
  • 水平線の場合、y 値は変化しますが、線の終点の x 座標は同じままです (例: 0 と cW)。垂直線にはその逆が適用されます。
  • どのような間隔を実際に達成しようとしていますか? 通常、スペースを特定の数の領域 (6 行と 4 列など) に分割するか、描画している特定のキャンバスに適応しない間隔を検討しています (これがコードのようです)。しようとしている)。したがって、前者はキャンバスのサイズに適応しますが、後者はキャンバスのサイズが変化するにつれて、より多くの/より少ない行/列を表示するだけです.

問題の解決に役立つことを願っています。さらにサポートが必要な場合はお知らせください。

于 2013-01-26T21:19:57.353 に答える
0

1 つの可能性は、heightスペルが間違っていることです。これがjavascriptである場合、javascriptは、名前が間違っている変数について文句を言うことはないと思います。(私はそれについて間違っている可能性があります)。

var cH = canvas.hight;

する必要があります

var cH = canvas.height;
于 2013-01-26T21:47:15.517 に答える