Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

游戏旋转


红色方块可以旋转


旋转组件

在本教程的前面,红色方块可以在游戏区域内移动,但它不能转动或旋转。

为了旋转组件,我们必须改变我们绘制组件的方式。

Canvas 元素唯一可用的旋转方法将旋转整个 Canvas

你在 Canvas 上绘制的任何其他内容也将被旋转,而不仅仅是特定的组件。

这就是为什么我们必须在 update() 方法中做一些更改的原因

首先,我们保存当前 Canvas 上下文对象

ctx.save();

然后我们使用 translate 方法将整个 Canvas 移动到特定组件的中心

ctx.translate(x, y);

然后我们使用 rotate() 方法执行所需的旋转

ctx.rotate(angle);

现在我们准备好将组件绘制到 Canvas 上,但现在我们将使用其中心位置在转换(和旋转)后的 Canvas 上的 0,0 位置绘制它

ctx.fillRect(width / -2, height / -2, width, height);

完成后,我们必须使用 restore 方法将上下文对象恢复到其保存的位置

ctx.restore();

组件是唯一旋转的部分



组件构造函数

component 构造函数有一个名为 angle 的新属性,它是一个表示组件角度的弧度数。

component 构造函数的 update 方法是我们绘制组件的地方,在这里你可以看到允许组件旋转的更改

示例

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();
}
自己尝试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.