ES6面向对象--实现绚丽小球(跟随鼠标)
来源:互联网 发布:unity3d模型下载 编辑:程序博客网 时间:2024/06/05 03:08
本文主要实现一个 随鼠标移动随机产生颜色不一的小球并逐渐消失 的效果。
主要使用了canvas画布和ES6中的class语法糖(构造函数)。
还封装了一个MyRandom用于随机取n到m之间的随机数,包括n和m。
详细请见JS实现使用Math.random()函数生成n到m间的随机数字
实现代码如下:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <style> body{ margin: 150px; } #canvas{ box-shadow: 0 0 10px #000; } </style></head><body><canvas id="canvas">当前的浏览器不支持该版本!</canvas><script> //封装Math.random()函数 function MyRandom(n, m) { //取n到m的随机数, [n, m] return Math.round(Math.random()*(m-n)+n); } // 1. 获取当前的画布 const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); canvas.width = 1000; canvas.height = 600; canvas.style.backgroundColor = '#000'; // 2.小球类 class Ball{ /** * 构造器 */ constructor(x, y, color){ this.x = x; this.y = y; this.color = color; this.r = 40; } /** * 绘制小球 */ render(){ ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2); ctx.fillStyle = this.color; ctx.fill(); ctx.restore(); } } // 3.会移动的小球类 class MoveBall extends Ball{ constructor(x, y, color){ super(x, y, color); // 量的变化 this.dX = MyRandom(-5,5); this.dY = MyRandom(-5,5);; this.dR = MyRandom(1,3); } upDate(){ this.x += this.dX; this.y += this.dY; this.r -= this.dR; if(this.r < 0){ this.r = 0; } } } // 4. 实例化小球 let ballArr = []; let colorArr = ['red', 'green', 'blue', 'yellow', 'purple', 'pink', 'orange']; // 5. 监听鼠标的移动 canvas.addEventListener('mousemove', function (e) { ballArr.push( new MoveBall(e.offsetX, e.offsetY, colorArr[MyRandom(0,colorArr.length-1)])); // console.log(ballArr); }); // 6.开启定时器 setInterval(function () { // 清屏 ctx.clearRect(0, 0, canvas.width, canvas.height); // 绘制 for(let i=0; i<ballArr.length; i++){ ballArr[i].render(); ballArr[i].upDate(); } }, 50);</script></body></html>
效果图:
阅读全文
0 0
- ES6面向对象--实现绚丽小球(跟随鼠标)
- 跟随鼠标移动的小球
- 小球跟随鼠标点击移动
- 小球跟随鼠标移动效果
- 小球跟随鼠标移动效果
- U3D 小球跟随鼠标在地上滚动(一)
- U3D 小球跟随鼠标在地上移动(二)
- 跟随鼠标的弹性小球代码
- Canvas绘制小球(面向对象思想)
- ES6-面向对象实现tab切换
- unity鼠标跟随实现(ITween)
- [脚本]实现游戏对象跟随鼠标方向移动
- [unity3d]如何实现游戏对象跟随鼠标方向移动
- [脚本]实现游戏对象跟随鼠标方向移动
- Unity3D简单实现游戏对象跟随鼠标旋转
- android 实现跟随手机滑动的小球
- 实现跟随手指移动的小球
- 实现跟随手指移动的小球
- 小知识之字符串排序遇到的问题参考
- EasyUI combobox的panelHeight自动高度
- 主体高度不定,footer在最下面
- 几种简单的负载均衡算法及其Java代码实现
- 驱动学习之驱动框架基础
- ES6面向对象--实现绚丽小球(跟随鼠标)
- 深度学习: sliding window (滑动窗口)
- 通过dos命令启动停止mysql数据库
- Unity3D学习笔记之脚本的生命周期
- 快速切换到主线程更新UI的几种方法
- C++笔记——.和::和:和->的区别
- JS下发起文件下载请求
- SpringMVC 深度解析@RequestMapping(一)
- (团队)维吉尼亚加密