JavaScript canvas实现跟随鼠标事件


Posted in Javascript onFebruary 10, 2020

本文实例为大家分享了用canvas实现跟随鼠标事件的具体代码,供大家参考,具体内容如下

//鼠标移动 展现光片

JavaScript canvas实现跟随鼠标事件

<!DOCTYPE html>
<html>

<head>
 <meta charset="UTF-8">
 <title></title>
 <style>
 body {
 margin: 0;
 overflow: hidden;
 }

 #canvas {
 background: #000;
 }
 </style>
</head>

<body>
 <canvas id="canvas"></canvas>
 <script>
 var canvas = document.getElementById('canvas');
 var context = canvas.getContext('2d');
 var circleList = [];

 canvas.width = window.innerWidth;
 canvas.height = window.innerHeight;

 canvas.addEventListener('mousemove', function (e) {
 // 将对象push到数组中,画出来的彩色小点可以看作每一个对象中记录着信息 然后存在数组中
 circleList.push(new Circle(e.clientX, e.clientY));
 })

 //取x到y之间随机数:Math.round(Math.random()*(y-x)+x) 包括y
 function random(min, max) {
 return Math.round(Math.random() * (max - min) + min);
 }

 function Circle(x, y) {
 this.x = x;
 this.y = y;

 this.vx = (Math.random() - 0.5) * 3; //随机出来一个正数,或者负数。乘3是为了让速度变得大一点
 this.vy = (Math.random() - 0.5) * 3;

 this.color = 'rgb(' + random(0, 255) + ',' + random(0, 255) + ',' + random(0, 255) + ')';

 this.a = 1; // 初始透明度

 this.draw();
 }
 Circle.prototype = {
 draw() {
 context.beginPath();
 context.fillStyle = this.color;
 context.globalCompositeOperation = 'lighter';
 context.globalAlpha = this.a; //全局透明度
 context.arc(this.x, this.y, 30, 0, Math.PI * 2, false);
 context.fill();
 this.update();
 },
 update() {
 // 根据速度更新每一个小圆的位置
 this.x += this.vx;
 this.y += this.vy;
 this.a *= 0.98;
 }
 }

 function render() {
 //把原来的内容区域清除掉
 context.clearRect(0, 0, canvas.width, canvas.height);
 circleList.forEach(function (ele, i) {
 ele.draw();

 if (ele.a < 0.05) {
  circleList.splice(i, 1);
 }
 });

 requestAnimationFrame(render); //动画,会根据浏览器的刷新频率更新动画
 }
 render();
 </script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自己的js工具_Form 封装
Aug 21 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
深入分析JSONP跨域的原理
Dec 10 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
Dec 08 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
微信小程序-API接口安全详解
Jul 16 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
JavaScript将数组转换为链表的方法
Feb 16 Javascript
vue 中的动态传参和query传参操作
Nov 09 Javascript
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 #Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 #Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 #Javascript
js实现登录拖拽窗口
Feb 10 #Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 #Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 #Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 #Javascript
You might like
PHP无敌近乎加密方式!
2010/07/17 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
Angular2库初探
2017/03/01 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
Node 代理访问的实现
2019/09/19 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
keras 读取多标签图像数据方式
2020/06/12 Python
毕业生机械建模求职信
2013/10/14 职场文书
毕业生求职简历的自我评价
2013/10/23 职场文书
职业技术学校毕业生推荐信
2013/12/03 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
市场营销策划方案
2014/06/11 职场文书
青年文明号申报材料
2014/12/23 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS