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提供睡眠功能(sleep) 自编译JS引擎
Aug 16 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
深入浅析JavaScript中的作用域和上下文
Mar 26 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
jquery事件与绑定事件
Mar 16 Javascript
详解Vue整合axios的实例代码
Jun 21 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
js实现简单分页导航栏效果
Jun 28 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
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
实例讲解React 组件
2020/07/07 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python如何调用JS文件中的函数
2019/08/16 Python
pygame实现弹球游戏
2020/04/14 Python
Python-openCV开运算实例
2020/07/05 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
毕业生多媒体设计求职信
2013/10/12 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
效能监察建议书
2014/05/19 职场文书
防灾减灾标语
2014/10/07 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
心灵捕手观后感
2015/06/02 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript