美文网首页
canvas实现简单的气泡特效

canvas实现简单的气泡特效

作者: 拾实 | 来源:发表于2020-09-22 13:18 被阅读0次

    0.效果预览

    ex.gif

    1.完整代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>气泡效果</title>
        </head>
        <body>
            <canvas></canvas>
        </body>
        <script>
            class Circle{
                constructor(color, radius, v, angle, x, y){
                    this.color = color;
                    this.radius = radius;
                    this.v = v;
                    this.angle = angle;
                    this.x = x;
                    this.y = y;
                }
                
                draw(ctx){
                    ctx.beginPath();
                    ctx.arc(this.x, this.y, this.radius, 0, 2*Math.PI);
                    ctx.closePath();
                    ctx.fillStyle = this.color;
                    ctx.fill();
                }
            }
    
            function rColor(){
                let r = 255*Math.random();
                let g = 255*Math.random();
                let b = 255*Math.random();
                let o = Math.random();
                return 'rgba(' + r + ','+ g + ','+ b + ','+ o + ')';
            }
    
            function draw(){
                ctx.clearRect(0,0,canvas.width,canvas.height);
                for(let i=0; i<NUM; i++){
                    arr[i].x += arr[i].v*Math.cos(arr[i].angle);
                    arr[i].y += arr[i].v*Math.sin(arr[i].angle);
                    arr[i].draw(ctx);
                }
                setTimeout(draw, 50);
            }
    
            let arr = [];
            const NUM = 1000;
            let centerX, centerY;
            const canvas = document.querySelector('canvas');
            const ctx = canvas.getContext('2d');
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            centerX = canvas.width/2;
            centerY = canvas.height/2;
            for(let i=0; i<NUM; i++){
                arr.push(new Circle(rColor(),10*Math.random()+1,5*Math.random()+1,360*Math.random(),centerX,centerY));
            }
            
            draw();
        </script>
    </html>
    
    

    欢迎讨论。

    相关文章

      网友评论

          本文标题:canvas实现简单的气泡特效

          本文链接:https://www.haomeiwen.com/subject/shkwyktx.html