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 相关文章推荐
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
TableSort.js表格排序插件使用方法详解
Feb 10 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
Apr 03 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
jQuery实现带进度条的轮播图
Sep 13 jQuery
使用JS前端技术实现静态图片局部流动效果
Aug 05 Javascript
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
构建简单的Webmail系统
2006/10/09 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
Python检测网站链接是否已存在
2016/04/07 Python
Python元组常见操作示例
2019/02/19 Python
Python调用C语言的实现
2019/07/26 Python
pytorch 模型可视化的例子
2019/08/17 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
期中考试反思800字
2014/05/01 职场文书
查摆问题整改措施
2014/10/24 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫