canvas实现字体粒子爆炸特效(javascript canvas实现雨滴效果)
类别:编程学习 浏览量:1828
时间:2021-11-05 14:26:51 canvas实现字体粒子爆炸特效
javascript canvas实现雨滴效果本文实例为大家分享了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> <style> * { margin: 0; padding: 0; } body { background-color: #000; } </style> </head> <body> <canvas></canvas> <script> // 获取画布 var canvas = document.querySelector('canvas') // 获取画笔 var ctx = canvas.getContext('2d') // 不能用css改变画布大小 var ch = canvas.height = window.innerHeight var cw = canvas.width = window.innerWidth // 放雨滴 var arrRain = [] // 监听屏幕大小,屏幕发生变化让画布也跟着改变大小 window.onresize = function () { ch = canvas.height = window.innerHeight cw = canvas.width = window.innerWidth } // 获取一个随机数,目的是为了生成随机雨滴 function randow(min, max) { return Math.random() * (max - min) + min } // 构造函数 function Rain() { } // 为rain添加属性和方法 Rain.prototype = { // 初始化位置和雨滴下落的圆的半径 init: function () { this.x = randow(0, cw) this.y = 0 // 雨滴最终落地的距离不能超出屏幕 this.h = randow(0.8 * ch, 0.9 * ch) this.r = 1 // 开始圆的半径 this.vr = 1 // 半径增长的速度 this.vy = randow(4, 5) }, // 画方法 draw: function () { // 小于h的时候,画雨滴,画矩形 if (this.y < this.h) { ctx.beginPath() ctx.fillStyle = 'white' ctx.fillRect(this.x, this.y, 4, 10) } else { // 画圆 ctx.beginPath() ctx.strokeStyle = 'white' ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI) ctx.stroke() } }, // 雨滴移动 move: function () { // 小于h时,加y实现雨滴移动 if (this.y < this.h) { this.y += this.vy } else { // 实现水花四溅的效果 if (this.r < 70) { this.r += this.vr } else { // 结束效果之后初始化,又从天上生成雨滴,所以要调用init函数 this.init() } } this.draw() } } // 生成雨滴 function createRain(num) { for (var i = 0; i < num; i++) { // 随机生成雨滴,不是同时生成 setTimeout(function () { var rain = new Rain() rain.init() rain.draw() arrRain.push(rain) }, 300 * i) } } createRain(60) setInterval(function () { ctx.beginPath() ctx.fillStyle = 'rgba(0,0,0,0.05)' ctx.fillRect(0, 0, cw, ch) for (var k of arrRain) { k.move() } }, 1000 / 80) </script> </body> </html>
这些也就是雨滴实现的源码,仅供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- 在html中使用javascript实例代码(原生 JS+CSS+HTML 实现时序图的方法)
- nodejs登录案例(利用Node.js创建一个密码生成器的全步骤)
- js实现div(javascript拖曳互换div的位置实现示例)
- vuejs图片缩放裁切(vue+js点击箭头实现图片切换)
- nodejs八种命令(详细谈谈NodeJS进程是如何退出的)
- php入门教程源代码修改教程(php+js实现的无刷新下载文件功能示例)
- 详解JS中你不知道的各种循环测速(详解JS中你不知道的各种循环测速)
- ASP.NET中使用CodeDomProvider调用js文件中的js方法
- python获取json结果保存文本(Python JSON格式数据的提取和保存的实现)
- js实现分页
- threejs 三维可视化(three.js模拟实现太阳系行星体系功能)
- js中数组的操作
- mysql的json格式解析(mysql json格式数据查询操作)
- pjs计算方式(JS代码编译器Monaco使用方法)
- js三级联动说明(基于JavaScript实现省市联动效果)
- js的事件处理程序底层原理(关于js的事件循环机制剖析)
- 19号线二期全线电通 轨道交通项目最新进展来了(19号线二期全线电通)
- 涉及3条地铁线路 成都这4座轨道交通站点有新名字了(涉及3条地铁线路)
- 来了 成都轨道交通5条线路刷新 进度条(成都轨道交通5条线路刷新)
- 一部手机两套系统 OPPO Find X3的正确打开方式你知道吗(一部手机两套系统)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
热门推荐
- python中的变量与变量类型(Python变量类型知识点总结)
- dede数据统计(DEDE [field:global name=autoindex/] 按序号排列从0从1开始)
- vue加载html5动画(vue实现旋转木马动画)
- laravel常用的辅助函数介绍(Laravel向公共模板赋值方法总结)
- node.js缓存区(如何利用node实现静态文件缓存详解)
- dede模板手机端显示设置(DEDE模板中如何运行php脚本和变量在需要操作数据库字段时)
- css选择器知识汇总(在Less中写IE的css hack的方法介绍)
- yii框架使用教程(Yii框架操作cookie与session的方法实例详解)
- isapi和cgi限制
- filezilla连接远程服务器配置(FileZilla 425 无法连接FTP的解决方法阿里云服务器)