zoukankan      html  css  js  c++  java
  • 用JavaScript编写气泡

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     8     <title>Document</title>
     9     <style>
    10         /* #cs {
    11             border: 1px solid rebeccapurple;
    12         } */
    13     </style>
    14 </head>
    15 
    16 <body>
    17     <canvas id="cs" width="1200" height="600"></canvas>
    18 
    19     <script>
    20         window.onload = function () {
    21             let cs = document.getElementById('cs');
    22             let ab = cs.getContext('2d');
    23             function random(min, max) {
    24                 return parseInt(Math.random() * (max - min + 1) + min);
    25             }
    26             class Bubble {
    27                 constructor() {
    28                     this.x = random(50, 950);
    29                     this.y = random(50, 550);
    30                     this.r = 50;
    31                     this.color = `rgb(${random(0,255)},${random(0,255)},${random(0,255)})`;
    32                     this.scale = 1;//放大缩小的比列
    33                     this.direct = 1;//放大缩小的方向
    34                     this.step = random(1, 10) / 500;//放大缩小的速率
    35                 }
    36                 draw() {
    37                     if (this.scale < 0) {
    38                         this.direct = 1;
    39                     } else if (this.scale > 1) {
    40                         this.direct = -1;
    41                     }
    42                     this.scale += this.step * this.direct;
    43                     ab.save();//保存转换状态
    44                     ab.beginPath();//一个新的路径
    45                     ab.translate(this.x, this.y);
    46                     ab.scale(this.scale, this.scale);//开始放大缩小
    47                     ab.arc(0, 0, this.r, 0, 2 * Math.PI);
    48                     ab.fillStyle = this.color;//背景颜色          
    49                     ab.globalAlpha = this.scale;//透明
    50                     ab.fill();
    51                     ab.restore();//恢复画布原点
    52                 }
    53             }
    54            let arr=[];//创建空数组
    55            for(let i=0;i<50;i++){
    56                arr.push(new Bubble());//添加数组
    57            }
    58            setInterval(function(){
    59                ab.clearRect(0,0,1000,600);//清除之前的内容
    60                 for(let bum of arr){//遍历数组
    61                     bum.draw();
    62                 }
    63            },50)
    64             
    65         }
    66     </script>
    67 </body>
    68 
    69 </html>
  • 相关阅读:
    Log4Net 生成多个文件、文件名累加解决方法
    HTML name、id、class 的区别
    C# 基础(一) 访问修饰符、ref与out、标志枚举等等
    HTML iframe 和 frameset 的区别
    未在本地计算机上注册"OraOLEDB.Oracle"提供程序
    HTML 页面源代码布局介绍
    HTML 基础控件介绍
    图的BFS与DFS的应用
    迷途指针,从百度百科上摘抄的,语言很幽默
    详解C中volatile关键字
  • 原文地址:https://www.cnblogs.com/yangkaiming/p/9195219.html
Copyright © 2011-2022 走看看