【发布时间】:2014-04-21 02:23:19
【问题描述】:
update: function(delta) {
for (var i = 0; i < this.bullets.length; i++) {
this.bullets[i].velocity = this.bullets[i].speed * delta;
this.bullets[i].contextX += this.bullets[i].velocity;
}
},
draw: function(ctx) {
for (var i = 0; i < this.bullets.length; i++) {
ctx.save();
// Move the context to where the player is then make it face the target degree
ctx.translate(this.bullets[i].startX, this.bullets[i].startY);
ctx.rotate(this.bullets[i].rotation);
ctx.fillRect(this.bullets[i].contextX, -5, 10, 10);
ctx.restore();
}
}
上面的代码包含两个方法,它们描述了一个管理项目符号绘制和更新的类。 update 方法移动一个子弹,然后 draw 函数将它绘制到屏幕上。
画布执行以下操作:
- 保存当前画布上下文状态
- 将上下文移动到子弹的来源
- 将画布旋转到子弹射击时的朝向
- 画矩形
- 将画布上下文恢复到原始状态
这是我制作的一张图片,可以更好地描述画布上下文正在做什么:
所以我们知道子弹的 x 位置,但这与旋转时的上下文相关。我需要知道的是子弹与实际屏幕相关的 X 和 Y 属性。关于如何做到这一点的任何想法?
【问题讨论】:
标签: javascript html math canvas