2

私はjavascriptが初めてです。私は以下をコーディングしました:

function Vec2(x_,y_)
{
    this.x = x_;
    this.y = y_;
}

ファイルの後半で、次のような関数を作成します。

// Init game field array
var initGameField = function () {
    var screenCenter = vec2(canvas.width / 2, canvas.height / 2);
    var index = 0;

    // Init gamefieldArray
    for(var y = 0; y < maxVerticalBubbles; y++)
    {
        if(y%2)
        {
            for(var x = 0; x < maxHorizontalBubbles - 1; x++)
            {
                var initPoint = vec2(cellSize / 2 + (screenCenter.x - ((maxVerticalBubbles - 1) * cellSize / 2)) + (x * cellSize), 
                                 canvas.height / 2 + (cellSize / 2) + y * cellSize / 1.1);

                gameFieldArray[index] = initPoint;
            }
        }
        else
        {
            for(var x = 0; x < maxHorizontalBubbles; x++)
        {
                var initPoint = vec2(cellSize / 2 + (screenCenter.x - (maxVerticalBubbles * cellSize / 2)) + (x * cellSize), 
                                 canvas.height / 2 + (cellSize / 2) + y * cellSize / 1.1);

                gameFieldArray[index] = initPoint;
            }
        }
    }
}

しかし、javascript ファイルの最後で initGameField 関数を実行しようとすると、「initGameField」内で「vec2 not defined」というエラーが表示されます...どうすれば正しい方法で実行できますか? 関数 vec2 が initGameField -function の前および initGameField -function の実行前に導入されたため、認識されないのはなぜですか?

4

1 に答える 1

8

Javascript は大文字と小文字を区別します。関数はVec2として定義されていますが、 vec2を使用して呼び出そうとしています。

また、必ず「new」キーワードを使用して新しいインスタンスを作成してください。

var initPoint = new Vec2(cellSize / 2 + (screenCenter.x - ((maxVerticalBubbles - 1) * cellSize / 2)) + (x * cellSize), 
                             canvas.height / 2 + (cellSize / 2) + y * cellSize / 1.1);
于 2012-11-16T11:04:53.817 に答える