canvas实现电闪雷鸣狂风暴雨的森林树木摇摆下雨动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas实现电闪雷鸣狂风暴雨的森林树木摇摆下雨动画效果代码

代码标签: canvas 电闪雷鸣 狂风暴雨 森林 树木 摇摆 下雨 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">

  
  
<style>
body {
  margin: 0;
  overflow: hidden;
  background-color: #000;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  transition: background 0.1s ease-in-out;
}
canvas {
  display: block;
}
button {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 10;
  padding: 10px;
  background-color: #4caf50;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  font-size: 16px;
}
button:hover {
  background-color: #45a049;
}
</style>


  
  
</head>


  <body>
  <canvas id="mainCanvas"></canvas>

  
      <script>
const canvas = document.getElementById("mainCanvas");
const ctx = canvas.getContext("2d");

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// Raindrop parameters
const maxRaindrops = 200;
let raindrops = [];

class Raindrop {
  constructor(x, y, length, speed) {
    this.x = x !== undefined ? x : Math.random() * canvas.width;
    this.y = y !== undefined ? y : Math.random() * canvas.height;
    this.length = length !== undefined ? length : Math.random() * 20 + 10;
    this.speed = speed !== undefined ? speed : Math.random() * 10 + 5; // Increased speed
  }

  fall() {
    this.y += this.speed;
    if (this.y > canvas.height) {
      this.y = 0 - this.length;
      this.x = Math.random() * canvas.width;
      this.speed = Math.random() * 10 + 5; // Increased speed
      this.length = Math.random() * 20 + 10;
    }
  }

  draw() {
    ctx.beginPath();
    ctx.moveTo(this.x, this.y);
    ctx.lineTo(this.x, this.y + this.length);
    ctx.strokeStyle = "blue";
    ctx.lineWidth = 2;
    ctx.stroke();
  }}


// Lightning parameters
const numSegments = 10;
const segmentWidth = 10; // Smaller segment width for more vertical lines
const maxAmplitude = canvas.width / 6; // Control the horizontal amplitude
let offset = 0;

// Function to draw a single.........完整代码请登录后点击上方下载按钮下载查看

网友评论0