日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

140行代码实现一个逼真的大雪纷飞的效果

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 140行代码实现一个逼真的大雪纷飞的效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本地新建一個html文件,把下列代碼復制粘貼進去,保存,用瀏覽器打開:

<html> <style> html, body {margin: 0;padding: 0;background: #000; } </style> <script> // https://codepen.io/pimskie/pen/jEVPNxfunction myload(){var canvas = document.querySelector('.snow'),ctx = canvas.getContext('2d'),windowW = window.innerWidth,windowH = window.innerHeight,numFlakes = 200,flakes = [];function Flake(x, y) {var maxWeight = 5,maxSpeed = 3;this.x = x;this.y = y;this.r = randomBetween(0, 1);this.a = randomBetween(0, Math.PI);this.aStep = 0.01;this.weight = randomBetween(2, maxWeight);this.alpha = (this.weight / maxWeight);this.speed = (this.weight / maxWeight) * maxSpeed;this.update = function() {this.x += Math.cos(this.a) * this.r;this.a += this.aStep;this.y += this.speed;}}function init() {var i = numFlakes,flake,x,y;while (i--) {x = randomBetween(0, windowW, true);y = randomBetween(0, windowH, true);flake = new Flake(x, y);flakes.push(flake);}scaleCanvas();loop(); }function scaleCanvas() {canvas.width = windowW;canvas.height = windowH; }function loop() {var i = flakes.length,z,dist,flakeA,flakeB;// clear canvasctx.save();ctx.setTransform(1, 0, 0, 1, 0, 0);ctx.clearRect(0, 0, windowW, windowH);ctx.restore();// loop of hellwhile (i--) {flakeA = flakes[i];flakeA.update();/*for (z = 0; z < flakes.length; z++) {flakeB = flakes[z];if (flakeA !== flakeB && distanceBetween(flakeA, flakeB) < 150) { ctx.beginPath();ctx.moveTo(flakeA.x, flakeA.y);ctx.lineTo(flakeB.x, flakeB.y);ctx.strokeStyle = '#444444';ctx.stroke();ctx.closePath();}}*/ctx.beginPath();ctx.arc(flakeA.x, flakeA.y, flakeA.weight, 0, 2 * Math.PI, false);ctx.fillStyle = 'rgba(255, 255, 255, ' + flakeA.alpha + ')';ctx.fill();if (flakeA.y >= windowH) {flakeA.y = -flakeA.weight;} }requestAnimationFrame(loop); }function randomBetween(min, max, round) {var num = Math.random() * (max - min + 1) + min;if (round) {return Math.floor(num);} else {return num;} }function distanceBetween(vector1, vector2) {var dx = vector2.x - vector1.x,dy = vector2.y - vector1.y;return Math.sqrt(dx*dx + dy*dy); }init();} </script> <body onload = "myload()"> <canvas class="snow"></canvas> </body> </html>


最后效果如圖,相當酷炫:

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的140行代码实现一个逼真的大雪纷飞的效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。