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代码经典广告
Oct 21 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
jQuery实现个性翻牌效果导航菜单的方法
Mar 09 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
解决ztree搜索中多级菜单展示不全问题
Jul 05 Javascript
Angular HMR(热模块替换)功能实现方法
Apr 04 Javascript
js实现盒子拖拽动画效果
Aug 09 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 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中的三元运算符使用说明
2011/07/03 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Python内置类型性能分析过程实例
2020/01/29 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
商务助理岗位职责
2013/11/13 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
计算机软件专业求职信
2014/06/10 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
小程序实现文字循环滚动动画
2021/06/14 Javascript