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 相关文章推荐
javascript验证身份证完全方法具体实现
Nov 18 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
基于BootStarp的Dailog
Apr 28 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
ajax前台后台跨域请求处理方式
Feb 08 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
Vuex实现数据共享的方法
Dec 20 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 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图片验证码代码
2008/03/27 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
教师岗位聘任书范文
2014/03/29 职场文书
优秀毕业生求职信
2014/06/05 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis