canvas实现彩色发光的线条毛发点击生成效果代码

代码语言:html

所属分类:其他

代码描述:canvas实现彩色发光的线条毛发点击生成效果代码

代码标签: canvas 彩色 发光 线条 毛发 点击 生成

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

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

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


  
  
<style>
body {
  margin: 0;
  background: #1a1a1a;
  overflow: hidden;
}
</style>


  
  
</head>

<body >

<canvas id="canvas"></canvas>
  
      <script  >
const lerp = (a, b, t) => a + (b - a) * t
const rand = (min, max) => min + Math.random()*(max-min)

class BezierCurveGenerator {
  constructor (obj) {
    this.ctx = obj.canvas.getContext('2d')
    this.min = obj.min
    this.max = obj.max
    this.variation = obj.variation
    this.hue = obj.hue
    this.init()
  }
  
  point(a,b) {
    return ({
      x: lerp(this.A.x, this.D.x, rand(a, b)),
      y: lerp(this.A.y, this.D.y, rand(a, b)),
    })
  }
  
  init() {
    this.A = { x: 0, y: 0 }
    this.D = { x: rand(this.min, this.max), y: 0 }
    this.B = { x: lerp(0, this.D.x, rand(0., .4)), y: rand(-this.variation, this.variation) }
    this.C = { x: lerp(0, this.D.x, rand(.5, 1)), y: rand(-this.variation, this.variation) }
    this.opacity = rand(.1, .6)
  }
  
  draw (angle) {
    this.ctx.save()
    this.ctx.globalCompositeOperation = 'screen'
    this.ctx.translate(canvas.width * .5, canvas.height * .5)
    this.ctx.rotate(angle)
    this.ctx.beginPath()
    this.ctx.moveTo(this.A.x, this.A..........完整代码请登录后点击上方下载按钮下载查看

网友评论0