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 相关文章推荐
HTML TO JavaScript 转换
Jun 26 Javascript
关于javascript 回调函数中变量作用域的讨论
Sep 11 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
ExtJS4 动态生成的grid导出为excel示例
May 02 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
微信小程序实现星级评价
Nov 20 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 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和XSL stylesheets转换XML文档
2006/10/09 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
Python pymongo模块常用操作分析
2018/09/01 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
售后客服工作职责
2014/06/16 职场文书
校庆标语集锦
2014/06/25 职场文书
技术经济专业求职信
2014/09/03 职场文书
就业协议书范本
2014/10/08 职场文书
汽车销售员工作总结
2015/08/12 职场文书
追悼会答谢词范文
2015/09/29 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python