所以我一直在寻找我下载的游戏的脚本。我不确定的是Bullet(I)永远不会在脚本中实例化(即 var x = new Bullet)。不过,本教程将其称为构造函数。到底是怎么回事?
看起来 Bullet 构造函数正在接受一个参数并向其添加属性等。但是脚本中没有任何地方实例化过 Bullet - 所以它不可能吗?
var playerBullets = [];
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;
I.active = I.active && I.inBounds();
};
I.explode = function() {
this.active = false;
// Extra Credit: Add an explosion graphic
};
return I;
}
此代码稍后在脚本中使用,据我所知,这必须是使用 Bullet(I) 函数的脚本的相关部分?
playerBullets.forEach(function(bullet) {
bullet.update();
});