0

HTML5 で簡単なゲームを作成する方法についてこのチュートリアルに従っていますが、理解できないパラメーターの興味深い使用法に出会いました... ここで、作成者は単一のパラメーター I を使用して Bullet というコンストラクターを作成しますが、見てください。彼は I をどのように使用していますか。ここで何が起こっているのですか? 理解できない:

function Bullet(I) {
    I.active = true;

    I.xVelocity = 0;
    I.yVelocity = -I.speed;
    I.width = 3;
    I.height = 3;
    I.color = "#000";

    I.inBounds = function() {
        return I.x >= 0 && I.x <= CANVAS_WIDTH &&
        I.y >= 0 && I.y <= CANVAS_HEIGHT;
    };

    I.draw = function() {
        canvas.fillStyle = this.color;
        canvas.fillRect(this.x, this.y, this.width, this.height);
    };

    I.update = function() {
        I.x += I.xVelocity;
        I.y += I.yVelocity;
    };

    return I;
}
4

1 に答える 1

2

そのチュートリアルによると、Bulletはコンストラクターではなく、既存のオブジェクトを受け取り、プロパティを拡張(追加)してオブジェクトを返す関数にすぎません。次に、返されたオブジェクト(追加のプロパティを含む)をplayerBullets配列に配置します。

playerBullets.push(Bullet({  //the Bullet call, passing an object
    speed: 5,
    x: bulletPosition.x,
    y: bulletPosition.y
}))

から返されるオブジェクトは次のBulletようになります。

{
    //the passed object
    x:...,
    y:...,
    speed:...,
    //the added properties
    xVelocity:...,
    yVelocity:...,
    ...,
    update:function(){...}
}
于 2012-04-29T00:13:23.123 に答える