使用visual studio code 制作一个平面动画,设置canvas为400,400。将背景设置为黑色。在画布正中间放置一个直径为70的球,静止,代表太阳,颜色为红色。同圆心,半径150,放置一个直径30的绿色球代表地球,围绕着太阳旋转,速度合理即可。键盘s键可以暂停,g键可以继续。地球在90度,180度,270度会改变颜色,颜色自定。放置一个直径为10的黄色球代表月亮围绕地球旋转
时间: 2024-04-07 17:32:47 浏览: 62
好的,让我们来一步一步完成这个任务。
首先,我们需要在 Visual Studio Code 中创建一个 HTML 文件并添加一个 Canvas 元素。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Animation</title>
<style>
canvas {
background-color: black;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="animation.js"></script>
</body>
</html>
```
这段代码创建了一个 400x400 的黑色背景的 Canvas 元素,并将其保存为 `index.html` 文件。我们还需要在同一目录下创建一个名为 `animation.js` 的 JavaScript 文件,用于绘制动画。
接下来,让我们用 JavaScript 编写绘制动画的代码。首先,我们需要获取 Canvas 元素和其上下文:
```javascript
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
```
然后,我们需要定义一些变量,如太阳、地球和月球的位置、颜色和速度:
```javascript
let sunX = canvas.width / 2;
let sunY = canvas.height / 2;
let sunRadius = 35;
let sunColor = 'red';
let earthX = sunX + 150;
let earthY = sunY;
let earthRadius = 15;
let earthColor = 'green';
let earthSpeed = 0.01;
let moonX = earthX + 50;
let moonY = earthY;
let moonRadius = 5;
let moonColor = 'yellow';
let moonSpeed = 0.05;
let paused = false;
```
在绘制动画之前,我们需要定义一个 `draw` 函数,用于在 Canvas 上绘制太阳、地球和月球:
```javascript
function draw() {
// Clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Draw sun
ctx.beginPath();
ctx.arc(sunX, sunY, sunRadius, 0, Math.PI * 2);
ctx.fillStyle = sunColor;
ctx.fill();
// Draw earth
ctx.beginPath();
ctx.arc(earthX, earthY, earthRadius, 0, Math.PI * 2);
ctx.fillStyle = earthColor;
ctx.fill();
// Draw moon
ctx.beginPath();
ctx.arc(moonX, moonY, moonRadius, 0, Math.PI * 2);
ctx.fillStyle = moonColor;
ctx.fill();
}
```
现在,我们可以开始绘制动画了。首先,我们需要用 `setInterval` 函数定时调用 `draw` 函数,每 10 毫秒调用一次:
```javascript
setInterval(function() {
if (!paused) {
draw();
}
}, 10);
```
然后,我们需要在 `draw` 函数中更新地球和月球的位置。我们可以使用三角函数来计算地球和月球的新位置:
```javascript
earthX = sunX + 150 * Math.cos(earthSpeed);
earthY = sunY + 150 * Math.sin(earthSpeed);
moonX = earthX + 50 * Math.cos(moonSpeed);
moonY = earthY + 50 * Math.sin(moonSpeed);
earthSpeed += 0.01;
moonSpeed += 0.05;
```
最后,我们需要添加键盘事件监听器,以便用户可以使用 S 键暂停动画,使用 G 键继续动画:
```javascript
document.addEventListener('keydown', function(event) {
if (event.key === 's') {
paused = true;
} else if (event.key === 'g') {
paused = false;
}
});
```
现在,我们已经完成了这个任务,将 `animation.js` 文件保存在与 `index.html` 文件相同的目录中,并在浏览器中打开 `index.html` 文件,即可看到我们的平面动画。
阅读全文