HTML 游戏旋转
-
定义和使用
点击下面按钮红色方块可以旋转: -
旋转组件
在本教程的前面,红色方块可以在游戏区移动,但不能旋转或旋转。要旋转组件,我们必须改变绘制组件的方式。画布元素唯一可用的旋转方法将旋转整个画布:在画布上绘制的其他所有内容也将被旋转,而不仅仅是特定的组件。这就是为什么我们必须对 update() 方法进行一些更改:首先,保存当前画布上下文对象:ctx.save()然后,我们使用translate方法将整个画布移动到特定组件的中心:ctx.translate(x, y)然后我们使用 rotate() 方法执行所需的旋转:ctx.rotate(angle)现在我们已经准备好将组件绘制到画布上,但是现在我们将在平移(和旋转)画布上的位置 0,0 处绘制组件:ctx.fillRect(width / -2, height / -2, width, height)完成后,必须使用 restore 方法将上下文对象恢复到其保存的位置:ctx.restore()组件是唯一旋转的对象: -
组件构造函数
组件构造函数有一个名为angle的新属性,它是表示组件角度的弧度数。组件构造函数的更新方法是绘制组件,在这里您可以看到允许组件旋转的更改:
尝试一下function component(width, height, color, x, y) { this.width = width; this.height = height; this.angle = 0; this.x = x; this.y = y; this.update = function() { ctx = myGameArea.context; ctx.save(); ctx.translate(this.x, this.y); ctx.rotate(this.angle); ctx.fillStyle = color; ctx.fillRect(this.width / -2, this.height / -2, this.width, this.height); ctx.restore(); } } function updateGameArea() { myGameArea.clear(); myGamePiece.angle += 1 * Math.PI / 180; myGamePiece.update(); }