canvas用数组方式做出下雨效果
效果图

1.做出canvas画布和声明一个用来存储雨滴的数组
var c=document.getElementById('myCanvas');
var ctx= c.getContext('2d');
var ary=[];
2.将雨滴的位置、大小得到
var x=Math.random()*;//在画布内随机生成雨滴x轴位置
var width=Math.random()*;//随机生成雨滴宽度
var h=Math.random()*+;//随机生成雨滴长度
var y=-;//雨滴出现位置
由于最后所有的东西都需要用setinterval包起来,所以这里的变量只能用做局部变量,不能用全局声明。
3.将生成的雨滴存到数组
var rain={
x:x,
y:y,
width:width,
color:"white",
h:h,
fun:function(){
ctx.beginPath();
ctx.fillStyle=rain.color;
ctx.fillRect(rain.x,rain.y,rain.width,rain.h);
ctx.fill();
}
};
ary.push(rain);
冒号前为键名,冒号后为之前声明的变量,用作键值,fun里是在画布上生成雨滴,最后通过push的方法将其存入数组。
4.让雨滴往下落,当雨滴落到画布外,将雨滴从数组中删除
var t=setInterval(function(){
rain.y+=;
if(rain.y>){
clearInterval(t);
ary.shift(rain);
}
},);
在外面调用生成雨滴的函数时,需要加上声明的json名,不然调用不到,如果雨滴的y轴位置大于了画布高度,就停止下落,同时,用shift的方式将雨滴移出数组。
5。删除雨滴下落时的前面生成过的雨滴
function hh(){
ctx.clearRect(,,,);
ary.forEach(function(obj){
obj.fun();
});
requestAnimationFrame(hh);
}
hh();
用clearrect的方式将整个画布上的内容清空,由于雨滴是每次下落5px时就会再出现一个新的雨滴,如果不删除下落之前的雨滴,画布上就会出现很多,将其清空只剩下一个下落的雨滴,最后调用函数即可。
canvas用数组方式做出下雨效果的更多相关文章
- 使用 Canvas 和 JavaScript 创建逼真的下雨效果
HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.这里向大家展示一个使用 Canva ...
- 数组方式使用jQuery对象
一. 使用jQuery选择器获取结果是一个jQuery对象.然而,jQuery类库会让你感觉你正在使用一个定义了索引和长度的数组.在性能方面,建议使用简单的for或者while循环来处理,而不是$.e ...
- HTML5 Canvas 实现的9个 Loading 效果
Sonic.js 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像.更强大的是 Sonic.js 还提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的(Load ...
- Particles.js基于Canvas画布创建粒子原子颗粒效果
文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫 ...
- 使用Unity3D自带动画系统制作下雨效果
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪 步骤 ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- POST请求中参数以form data和request payload形式+清空数组方式
测试与服务端ajax时用的dva封装的request方法,而后端怎么也拿不到参数.结果返现参数在request payload里. HTTP POST表单请求提交时:Content-Typeappli ...
- 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...
- 类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
一.类模板 类模板:将类定义中的数据类型参数化 类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合 (一).类模板的定义 template <类型形参表> clas ...
随机推荐
- C++_注释、枚举、typedef
#include<iostream> //using namespace std; int main() { /* ************************************ ...
- 深入理解Java虚拟机读书笔记7----晚期(运行期)优化
七 晚期(运行期)优化 1 即时编译器(JIT编译器) ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体. ...
- 与大家分享学习微信小程序开发的一些心得
因为我也才开始学习微信小程序不久,下文也是现在的一时之言,大家有不同的想法也可以在评论里共同交流讨论,希望文章能给大家提供一点点帮助. 最近接触到了一些前端框架,像Vue.js,React,发现小程序 ...
- node环境
下载教程:http://www.runoob.com/nodejs/nodejs-install-setup.html 选择版本下载:https://nodejs.org/en/download/ 输 ...
- 使用Idea从github上获取项目
转载自:https://www.cnblogs.com/30go/p/7909246.html 整体分三步: 下载和安装git 配置idea 从git获取项目 详细步骤: 1. 下载和安装git 下载 ...
- Calico搭建配置
Calico 是一个纯三层的协议,为 OpenStack 虚机和 Docker 容器提供多主机间通信.Calico 不使用重叠网络比如 flannel 和 libnetwork 重叠网络驱动, Cal ...
- 导入大数据量sql时候超时的问题
D:\Visual-NMP-x64\Bin\MySQL\bin这个是你mysql的路径 mysqldump.exe -h服务器信息 -umysql的用户名 -pmysql的密码 数据库名 > 要 ...
- 多元高斯分布(The Multivariate normal distribution)
在数据建模时,经常会用到多元高斯分布模型,下面就这个模型的公式并结合它的几何意义,来做一个直观上的讲解. 1, 标准高斯函数 高斯函数标准型: $f(x) = \frac{1}{\sqrt{2π}}e ...
- Jmeter软件介绍
1.软件结构 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资 ...
- Tensorflow图像处理以及数据读取
关于tensoflow的图像的处理,看到了一篇文章,个人觉得不错.https://blog.csdn.net/weiwei9363/article/details/79917942