温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在JavaScript中利用canvas实现雪花随机动态飘落

发布时间:2021-04-16 17:57:12 来源:亿速云 阅读:216 作者:Leah 栏目:web开发

本篇文章给大家分享的是有关怎么在JavaScript中利用canvas实现雪花随机动态飘落,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <title>Document</title> </head> <style>   body{     margin: 0;     padding: 0;   }   canvas{     background: #000;   } </style> <body>   <canvas id = "snow">   </canvas>   <script>     var canvas = document.getElementById('snow');     var context = canvas.getContext('2d');     // 获得可视区的宽高     canvas.width = window.innerWidth;     canvas.height = window.innerHeight;     function snow(){       context.save();       // 开启路径       context.beginPath();       // 移动画布,确定雪花终点为中心点       context.translate(100,100);       //起点       context.moveTo(-20,0);       // 终点       context.lineTo(20,0);       // 线变成白色       context.strokeStyle = '#fff';       // 线变粗       context.lineWidth = 10;       // 线变圆头       context.lineCap = 'round';       context.stroke();       // 角度转弧度       var disX = Math.sin(30*Math.PI/180)*20;       var disY = Math.sin(60*Math.PI/180)*20;       // 画第二条线,左下到右上的线       context.moveTo(-disX,disY);       context.lineTo(disX,-disY);       // 画第三条线       context.moveTo(-disX,-disY);       context.lineTo(disX,disY);       context.stroke();       context.restore();     }     // snow();     //生成雪花的构造函数     function Snow(x,y,scale,rotate,speedX,speedY,speedR){            this.x = x;            this.y = y;            this.scale = scale;            this.rotate = rotate;            this.speedX = speedX;            this.speedY = speedY;            this.speedR = speedR;           // 渲染雪花           this.render = function(){             context.save();             context.beginPath();             context.translate(this.x,this.y);             context.scale(this.scale,this.scale);             context.rotate(this.rotate*Math.PI/180);             context.moveTo(-20,0);             context.lineTo(20,0);             context.strokeStyle = '#fff';             context.lineWidth = 10;             context.lineCap = 'round';             context.stroke();             var disX = Math.sin(30*Math.PI/180)*20;             var disY = Math.sin(60*Math.PI/180)*20;             context.moveTo(-disX,disY);             context.lineTo(disX,-disY);             context.moveTo(-disX,-disY);             context.lineTo(disX,disY);             context.stroke();             context.restore();           }     }     // var snow = new Snow(50,50,1,10,10,10,10);     // snow.render();     // 存储所有生成的雪花     var snowArray = [];     // 生成雪花       function init(){         var len = 100;         for(var i = 0;i<len;i++){           var x = Math.random()*canvas.width;           var scale = Math.random()+0.5;           var rotate = Math.random()*60;           var speedX = Math.random()+1           var speedY = Math.random()+5;           var speedR = Math.random()*4+2;           // var snow = new Snow(x,0,scale,rotate,speedX,speedY,speedR);           // snow.render();           (function(x,y,scale,rotate,speedX,speedY,speedR){             setTimeout(function(){             var snow = new Snow(x,0,scale,rotate,speedX,speedY,speedR);             snow.render();             snowArray.push(snow);           },Math.random()*8000);              })(x,0,scale,rotate,speedX,speedY,speedR);       }snowing();     }init();       // 动起来       function snowing(){         setInterval(function(){           //先清除           context.clearRect(0,0,canvas.width,canvas.height);           for(var i = 0;i < snowArray.length;i++){             snowArray[i].x = (snowArray[i].x+snowArray[i].speedX)%canvas.width;             snowArray[i].y = (snowArray[i].y+snowArray[i].speedY)%canvas.height;             snowArray[i].rotate = (snowArray[i].rotate+snowArray[i].speedR)%60;             snowArray[i].render();           }         },30);       }          /**      * sin60 = 对边/斜边 =>  对边 = sin60*斜边  =>  y=sin60*半径(r);      */   </script> </body> </html>

以上就是怎么在JavaScript中利用canvas实现雪花随机动态飘落,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI