用JavaScript写烟花代码
时间: 2023-09-11 13:05:13 浏览: 138
跨年烟花代码JavaScript烟花特效.zip
5星 · 资源好评率100%
### 回答1:
为了使用JavaScript编写烟花效果,需要使用Canvas API和动画技巧。您需要在Canvas上绘制多个点并使用粒子动画技巧使其运动。下面是一个简单的例子:
```
<html>
<head>
<style>
canvas {
background-color: #000;
}
</style>
</head>
<body>
<canvas id="myCanvas"></canvas>
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
// Set the canvas size to the window size
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Define some particles
const particles = [];
for (let i = 0; i < 100; i++) {
particles.push({
x: Math.random() * canvas.width,
y: canvas.height + Math.random() * 100,
radius: Math.random() * 4 + 1,
color: "rgb(" +
Math.floor(Math.random() * 255) + ", " +
Math.floor(Math.random() * 255) + ", " +
Math.floor(Math.random() * 255) + ")",
rotation: Math.random() * 360,
speed: Math.random() * 5 + 5,
friction: Math.random() * 0.05 + 0.94,
gravity: 1
});
}
// Animate the particles
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0, 0, canvas.width, canvas.height);
particles.forEach(particle => {
particle.x += Math.cos(particle.rotation) * particle.speed;
particle.y += Math.sin(particle.rotation) * particle.speed + particle.gravity;
particle.speed *= particle.friction;
particle.gravity *= particle.friction;
particle.rotation += 0.1;
ctx.beginPath();
ctx.fillStyle = particle.color;
ctx.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2);
ctx.fill();
});
}
animate();
</script>
</body>
</html>
```
这是一个简单的示例,您可以通过更改代码来调整烟花效果。
### 回答2:
JavaScript 可以用来编写烟花代码。下面是一个简单的示例:
```javascript
// 获取画布元素
const canvas = document.getElementById('fireworks');
const ctx = canvas.getContext('2d');
// 设置画布尺寸
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// 定义一个烟花粒子类
class FireworkParticle {
constructor(x, y, color) {
this.x = x;
this.y = y;
this.color = color;
this.velocityX = Math.random() * 6 - 3;
this.velocityY = Math.random() * 6 - 3;
this.gravity = 0.2;
this.opacity = 1;
}
update() {
this.x += this.velocityX;
this.y += this.velocityY;
this.velocityY += this.gravity;
this.opacity -= 0.01;
}
draw() {
ctx.beginPath();
ctx.arc(this.x, this.y, 3, 0, Math.PI * 2);
ctx.fillStyle = this.color;
ctx.globalAlpha = this.opacity;
ctx.closePath();
ctx.fill();
}
}
// 存储烟花粒子的数组
const particles = [];
// 监听鼠标点击事件
canvas.addEventListener('click', function(event) {
const x = event.clientX;
const y = event.clientY;
const colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff'];
for (let i = 0; i < 50; i++) {
const color = colors[Math.floor(Math.random() * colors.length)];
particles.push(new FireworkParticle(x, y, color));
}
});
// 动画循环
function animate() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 更新和绘制烟花粒子
particles.forEach((particle, index) => {
particle.update();
particle.draw();
// 移除透明度过低的粒子
if (particle.opacity <= 0) {
particles.splice(index, 1);
}
});
// 递归调用动画函数
requestAnimationFrame(animate);
}
// 启动动画
animate();
```
将上述代码放在一个 HTML 文件中,并添加一个带有 `id="fireworks"` 的 `canvas` 元素,当单击鼠标时,就会在鼠标位置创建一批烟花粒子。这些烟花粒子会以随机颜色和速度在画布上移动,并逐渐消失。
这只是一个简单的烟花效果示例,你可以通过修改代码来实现更复杂的动画效果和交互。
阅读全文