canvas木材燃烧火苗动画代码
代码语言:html
所属分类:动画
代码描述:canvas木材燃烧火苗动画代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>逼真木材燃烧大火</title>
<style>
* {
margin: 0;
padding: 0;
overflow: hidden;
}
body {
background: #000;
width: 100vw;
height: 100vh;
}
canvas {
display: block;
position: fixed;
top: 0;
left: 0;
}
#bgCanvas {
z-index: 1;
}
#fireCanvas {
z-index: 2;
}
#sparkCanvas {
z-index: 3;
}
</style>
</head>
<body>
<canvas id="bgCanvas"></canvas>
<canvas id="fireCanvas"></canvas>
<canvas id="sparkCanvas"></canvas>
<script>
// 画布设置
const bgCanvas = document.getElementById('bgCanvas');
const fireCanvas = document.getElementById('fireCanvas');
const sparkCanvas = document.getElementById('sparkCanvas');
const bgCtx = bgCanvas.getContext('2d');
const fireCtx = fireCanvas.getContext('2d');
const sparkCtx = sparkCanvas.getContext('2d');
let W, H, centerX, fireBaseY;
function resize() {
W = window.innerWidth;
H = window.innerHeight;
centerX = W / 2;
fireBaseY = H * 0.78;
[bgCanvas, fireCanvas, sparkCanvas].forEach(c => {
c.width = W;
c.height = H;
});
initScene();
}
window.addEventListener('resize', resize);
// 火焰粒子
class FlameParticle {
constructor(x, y, size, speedY, life) {
this.x = x;
this.y = y;
this.originX = x;
this.size = size;
this.speedY = speedY;
this.life = life;
this.maxLife = life;
this.speedX = (Math.random() - 0.5) * 2;
this.turbulence = Math.random() * 2;
this.angle = Math.random() * Math.PI * 2;
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0