JavaScript canvas实现跟随鼠标移动小球


Posted in Javascript onFebruary 09, 2021

本文实例为大家分享了js跟随鼠标移动小球的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 <style>
 canvas{
 border: 1px solid #000;
 }
 </style>
 </head>
 <body>
 <canvas id="mycanvas" width="1500" height="800"></canvas>
 <script>
 // 创建画布
 var canvas = document.getElementById('mycanvas');
 var ctx = canvas.getContext('2d');
 // 球类
 function Ball(x, y) {
 this.x = x;
 this.y = y;
 // 初始半径
 this.r = parseInt(Math.random() * 50) + 10;
 this.step = parseInt(Math.random() * 5) + 0.1;
 // 设置随机颜色
 this.color = getRandom();
 // 设置随机方向
 this.dx = parseInt(Math.random() * 10) - 5;
 this.dy = parseInt(Math.random() * 10) - 5;
 // 将自身对象装入数组中
 ballArr.push(this);
 }
 // 在数组中删除对象
 Ball.prototype.remove = function() {
 for (var i = 0; i < ballArr.length; i++) {
 if (ballArr[i] == this) {
 ballArr.splice(i, 1);
 }
 }
 }
 // 更新数据
 Ball.prototype.update = function() {
 // 更新数据
 this.x += this.dx;
 this.y += this.dy;
 this.r -= this.step;
 // 清除数组中的小球
 if (this.r <= 0) {
 this.remove();
 }
 // 如果超出边界,小球继续运动
 if (this.x < 0) {
 this.x = 1500;
 this.color = getRandom();
 }
 else if (this.x > 1500) {
 this.x = 0;
 this.color = getRandom();
 }
 else if (this.y < 0) {
 this.y = 800;
 this.color = getRandom();
 }
 else if (this.y > 800) {
 this.y = 0;
 this.color = getRandom();
 }
 }
 // 渲染小球
 Ball.prototype.render = function() {
 ctx.beginPath();
 ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false);
 ctx.fillStyle = this.color;
 ctx.fill();
 }
 // canvas 画布DOM2事件
 canvas.addEventListener("mousemove", function(event) {
 new Ball(event.offsetX, event.offsetY);
 });
 var ballArr = [];
 // 定时器进行动画渲染和更新
 setInterval(function() {
 // 动画逻辑 
 // 清屏-更新-渲染
 ctx.clearRect(0, 0, canvas.width, canvas.height);
 // 小球的更新和渲染
 for (var i = 0; i < ballArr.length; i++) {
 ballArr[i].update();
 if (ballArr[i]) {
 ballArr[i].render();
 }
 }
 }, 30);
 // 随机颜色
 function getRandom() {
 var allType = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
 var allTypeArr = allType.split(",");
 var color = "#";
 // 拼接颜色字符串
 for (var i = 0; i < 6; i++) {
 var random = parseInt(Math.random() * allTypeArr.length);
 color += allTypeArr[random];
 }
 return color;
 }
 </script>
 </body>
</html>

效果

JavaScript canvas实现跟随鼠标移动小球

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js中获取frames中的元素示例代码
Jul 30 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
javascript中字体浮动效果的简单实例演示
Nov 18 Javascript
js获取图片宽高的方法
Nov 25 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
Bootstrap模态框案例解析
Mar 05 Javascript
vue 注册组件的使用详解
May 05 Javascript
浅谈PDF.js使用心得
Jun 07 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
教你一步步实现一个简易promise
Nov 02 Javascript
javascript实现简单留言板案例
Feb 09 #Javascript
javascript实现下拉菜单效果
Feb 09 #Javascript
用javascript实现倒计时效果
Feb 09 #Javascript
javascript实现倒计时关闭广告
Feb 09 #Javascript
javascript实现固定侧边栏
Feb 09 #Javascript
JavaScript实现前端倒计时效果
Feb 09 #Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 #Vue.js
You might like
PHP导入导出Excel代码
2015/07/07 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
javascript实现移动端红包雨页面
2020/06/23 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python GUI实例学习
2017/11/21 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
wxPython实现文本框基础组件
2019/11/18 Python
Python3运算符常见用法分析
2020/02/14 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
骨干教师培训制度
2014/01/13 职场文书
文体活动总结范文
2014/05/05 职场文书
公开承诺书格式
2014/05/21 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python