/**
 *@author liuhaixiao
 *@createTime 2018-12-13 16:25
 *@description 飞沙背景
 */

var particleBackgroundArray = [];

export default class Bubble2 {

  /**
   * 返回一个最小和最大个数之间的随机数
   * @param min 最小数
   * @param max 最大数
   * @returns {*}
   */
  random(min, max) {
    return Math.random() * (max - min) + min;
  }

  constructor(select, options) {
    this.oC = select;
    this.widthCanvas = this.oC.width;
    this.heightCanvas = options != undefined ? options.height : 1334;
    this.oGc = this.oC.getContext('2d');

  }

  init() {
    this.x = this.random(0, this.widthCanvas);//圆的中心的 x 坐标。
    this.y = this.heightCanvas ;//圆的中心的 y 坐标。
    this.r = this.random(0, 1.5);//圆的半径。
    this.vy = this.random(0.1, 0.9);//y坐标的变化值（主要作用是控制Y坐标下落的速度）
  }

  /**
   * 画
   * @param cxt
   */
  draw(cxt) {
    cxt.beginPath();//起始一条路径，或重置当前路径
    cxt.fillStyle = 'rgba(255,255,255,.5)';//设置或返回用于填充绘画的颜色、渐变或模式
    cxt.arc(this.x, this.y - this.r, this.r, 0, Math.PI * 2, false);//画一个圆
    cxt.fill();//填充当前绘图（路径）
    cxt.closePath();//创建从当前点回到起始点的路径
    this.update();//
  }

  update() {
    if (this.y > 0) {
      this.y -= this.vy;
    } else {
      this.init();
    }
  }


  process() {
    if (particleBackgroundArray.length <= 100) {
      for (var i = 0; i < 1; i++) {
        setTimeout(()=> {
          var oBubble2 = new Bubble2(this.oC);
          oBubble2.init();
          particleBackgroundArray.push(oBubble2);
        }, 100 * i);
      }
    }

    this.oGc.clearRect(0, 0, this.widthCanvas, this.heightCanvas);//在给定的矩形内清除指定的像素
    for (var i = 0; i < particleBackgroundArray.length; i++) {
      particleBackgroundArray[i].draw(this.oGc);
    }
    requestAnimationFrame(this.process.bind(this));


  }
}
