js实现canvas电流闪电放电动画效果代码

代码语言:html

所属分类:动画

代码描述:js实现canvas电流闪电放电动画效果代码,可调节闪电角度、速度、颜色、厚度及模糊度。

代码标签: canvas 闪电 放电 电流

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

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

<head>

    <meta charset="UTF-8">





    <style>
        body {
            font-family: sans-serif;
            padding: 0;
            margin: 0;
            background-color: #222;
            overflow: hidden;
            -webkit-user-select: none;
               -moz-user-select: none;
                 -o-user-select: none;
                -ms-user-select: none;
                    user-select: none;
        }
        
        canvas {
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>




</head>

<body>
    <canvas id='c'></canvas>

    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/simplex-noise.min.js"></script>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script>
    <script>
        /**
         * requestAnimationFrame
         */
        window.requestAnimationFrame = function () {
          return window.requestAnimationFrame ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame ||
          window.oRequestAnimationFrame ||
          window.msRequestAnimationFrame ||
          function (callback) {
            window.setTimeout(callback, 1000 / 60);
          };
        }();
        
        
        /**
         * Vector
         */
        function Vector(x, y) {
          this.x = x || 0;
          this.y = y || 0;
        }
        
        Vector.add = function (a, b) {
          return new Vector(a.x + b.x, a.y + b.y);
        };
        
        Vector.sub = function (a, b) {
          return new Vector(a.x - b.x, a.y - b.y);
        };
        
        Vector.prototype = {
          set: function (x, y) {
            if (typeof x === 'object') {
              y = x.y;
              x = x.x;
            }
            this.x = x || 0;
            this.y = y || 0;
            return this;
          },
        
          add: function (v) {
            this.x += v.x;
            this.y += v.y;
            return this;
          },
        
          sub: function (v) {
            this.x -= v.x;
            this.y -= v.y;
            return this;
          },
        
          scale: function (s) {
            this.x *= s;
            this.y *= s;
            return this;
          },
        
          length: function () {
            return Math.sqrt(this.x * this.x + this.y * this.y);
          },
        
          normalize: function () {
            var len = Math.sqrt(this.x * this.x + this.y * this.y);
            if (len) {
              this.x /= len;
              this.y /= len;
            }
            return this;
          },
        
          angle: function () {
            return Math.atan2(this.y, this.x);
          },
        
          distanceTo: function (v) {
            var dx = v.x - this.x,
            dy = v.y - this.y;
            return Math.sqrt(dx * dx + dy * dy);
          },
        
          distanceToSq: function (v) {
            var dx = v.x - this.x,
            dy = v.y - th.........完整代码请登录后点击上方下载按钮下载查看

网友评论0