• canvas画布爆炸


    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8">
      <style>
        *{margin: 0;padding: 0;}
        html,body{background-color: #000;overflow: hidden;height: 100%; 100%;}
      </style>
    </head>
    <body>
      <canvas id="canvas"></canvas>
      <script>
        var  width = window.innerWidth,
          height= window.innerHeight,
          balls = [],
          timer,
          ci = 0,
          canvas = document.getElementById("canvas"),
          context = canvas.getContext("2d"),
          color = ['#da6b00', '#8555d4', '#4ad3b5', '#ffffff'];
        canvas.width = width;
        canvas.height = height;
        function drawBall(ball){
          context.beginPath();
          context.arc(ball.x,ball.y,ball.r,0,2*Math.PI);
          gradient = context.createRadialGradient(ball.x, ball.y, 0, ball.x, ball.y, ball.r/2);
          gradient.addColorStop(0, 'rgba(255,255,255,1)');
          gradient.addColorStop(0.2, ball.c);
          gradient.addColorStop(0.4, ball.c);
          gradient.addColorStop(1, 'rgba(0,0,0,1)');
          context.fillStyle = gradient;
          context.fill();
        }
        function init(){
          var ox = random(0,width),
             oy = random(0,height);
          gather(ox,oy);
          update();
          canvas.onclick = function(e){
            var ox = e.clientX,
            oy = e.clientY;
            gather(ox,oy)
          }
        }
        function update(){
          timer = setInterval(function(){
          context.clearRect(0,0,canvas.width,canvas.height);

          balls.forEach(function(ball,index){
            ball.x += ball.sx*2;
            ball.y += ball.sy*2;
            ball.r += ball.sr;

          if(ball.y > canvas.height)
            balls.splice(index,1)
          if(ball.y < 10)
            balls.splice(index,1)
          if(ball.x > canvas.width)
            balls.splice(index,1)
          if(ball.x < 10)
            balls.splice(index,1)

          if(balls.length<=100){
            var ox = random(0,width),
            oy = random(0,height);
            gather(ox,oy);
          }
          drawBall(ball)
        })

       },60)
      }
      function gather(ox,oy){
        var newBalls = []
        for(var i=0;i<400;i++){
          var c = color[ci++]
          ci = (ci>color.length-1)?0:ci;
          var x1 = random(ox-50,ox+50) ,x2;
          var y1 = random(oy-50,oy+50) ,y2;
          if(x1<ox){
            x2 = -random(1,10)
          }
          if(x1>ox){
            x2 = random(1,10)
          }
          if(y1<oy){
            y2 = -random(1,10)
          }
          if(y1>oy){
            y2 = random(1,10)
          }

          x2 = Math.random()>.5?x2:-x2;
          y2 = Math.random()>.5?y2:-y2;

          newBalls.push({
            x:x1,
            y:y1,
            r:random(1,10),
            c:c,
            sx:x2,
            sy:y2,
            sr:0.001,
          })

        }
        balls = balls.concat(newBalls);
      }
      function random(min,max){
        var mins = max-min;
        return Math.round(Math.random()*mins+min)
      }
      init();
    </script>
    </body>
    </html>

  • 相关阅读:
    Redis主从复制
    Redis发布订阅
    Redis持久化
    初探redis.config
    java连接Linux服务器问题
    Redis常见类型及API
    Redis安装
    Nosql
    JMM
    SpringSecurity
  • 原文地址:https://www.cnblogs.com/luozhangshuai/p/7443867.html
Copyright © 2020-2023  润新知