怎样用JavaScript实现简单的雨滴效果?
Admin 2021-09-11 群英技术资讯 1044 次浏览
今天给大家分享的是关于javascript实现雨滴效果的内容,实现效果如下,有雨滴掉落及最后变成圆的效果,那么这是怎样做的呢?下文有实例供大家参考,接下来跟随小编一起看看吧。
先看效果

看起来很炫酷,其实就是实现了雨滴的掉落还有最后的圆
还是看源码
<!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>
关于javascript实现雨滴效果就介绍到这,上述代码仅供参考,感兴趣的朋友可以看看,希望能对大家有帮助,想要了解更多JavaScript的内容,大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍了JS原生双栏穿梭选择框的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
排序算法类型有哪些?排序算法类型有冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序这些,那么用JavaScript怎样实现这些排序算法呢?感兴趣的有接下来就跟随小编来学习一下吧。
在JS中,我们经常会遇到原型。字面上的意思会让我们认为,是某个对象的原型,可用来继承。但是其实这样的理解是片面的,下面通过本文来了解原型与原型链的细节,再顺便谈谈继承的几种方式。
本文详细讲解了Vue导入excel表,导入失败的数据自动下载的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家详细介绍了JavaScript实现通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008