HTML5canvas如何绘制酷炫能量线条效果+代码

admin654056年前0条评论

给人人介绍一下应用HTML5canvas绘制酷炫能量线条特效的方法。有一定的参考价钱,有需要的朋侪能够参考一下,希望对于你们有所助。
>HTML5 canvas如何绘制酷炫能量线条效果+代码 技术教程

下面是效果图,下面间接附js代码

// UTILconst PI = Math.PI,TWO_PI = Math.PI * 2;const Util = {};Util.timeStamp = function() {return window.performance.now();};Util.random = function(min, max) {return min + Math.random() * (max - min);};Util.map = function(a, b, c, d, e) {return (a - b) / (c - b) * (e - d) + d;};Util.lerp = function(value1, value2, amount) {return value1 + (value2 - value1) * amount;};Util.clamp = function(value, min, max) {return Math.max(min, Math.min(max, value));};// Vectorclass Vector {constructor(x, y) {this.x = x || 0;this.y = y || 0;}set(x, y) {this.x = x;this.y = y;}reset() {this.x = 0;this.y = 0;}fromAngle(angle) {let x = Math.cos(angle),y = Math.sin(angle);return new Vector(x, y);}add(vector) {this.x += vector.x;this.y += vector.y;}sub(vector) {this.x -= vector.x;this.y -= vector.y;}mult(scalar) {this.x *= scalar;this.y *= scalar;}p(scalar) {this.x /= scalar;this.y /= scalar;}dot(vector) {return vector.x * this.x + vector.y * this.y;}limit(limit_value) {if (this.mag() > limit_value) this.setMag(limit_value);}mag() {return Math.hypot(this.x, this.y);}setMag(new_mag) {if (this.mag() > 0) {this.normalize();} else {this.x = 1;this.y = 0;}this.mult(new_mag);}normalize() {let mag = this.mag();if (mag > 0) {this.x /= mag;this.y /= mag;}}heading() {return Math.atan2(this.y, this.x);}setHeading(angle) {let mag = this.mag();this.x = Math.cos(angle) * mag;this.y = Math.sin(angle) * mag;}dist(vector) {return new Vector(this.x - vector.x, this.y - vector.y).mag();}angle(vector) {return Math.atan2(vector.y - this.y, vector.x - this.x);}copy() {return new Vector(this.x, this.y);}}// Init canvaslet canvas = document.createElement("canvas"),ctx = canvas.getContext("2d"),H = (canvas.height = window.innerHeight),W = (canvas.width = window.innerWidth);document.body.appendChild(canvas);// Mouselet mouse = {x: W/2,y: H/2};canvas.onmousemove = function(event) {mouse.x = event.clientX - canvas.offsetLeft;mouse.y = event.clientY - canvas.offsetTop;};document.body.onresize = function(event){H = (canvas.height = window.innerHeight);W = (canvas.width = window.innerWidth);}// Let's goclass Arrow {constructor(x, y, target) {this.position = new Vector(x, y);this.velocity = new Vector().fromAngle(Util.random(0,TWO_PI));this.acceleration = new Vector(0, 0);this.target = target;this.travelled_distance = 0;this.min_size = 1;this.max_size = 6;this.size = Util.random(this.min_size, this.max_size);this.zone = this.size * 4;this.topSpeed = Util.map(this.size,this.min_size,this.max_size,40,10);let tailLength = Math.floor(Util.map(this.size, this.min_size, this.max_size, 4, 16));this.tail = [];for (let i = 0; i  {if (other !== this) {let dist = this.position.dist(other.position),max_dist = this.zone + other.size;if (max_dist - dist >= 0) {let angle = other.position.angle(this.position);let force = new Vector().fromAngle(angle);force.setMag(Util.map(dist, 0, max_dist, 2, 0));this.addForce(force);}}});}}let arrows = [];for (let i = 0; i  {a.avoid(arrows);});arrows.forEach(a => {a.render();});frame += 1;requestAnimationFrame(loop);}ctx.lineCap = "round";ctx.lineJoin = "round";loop();
你可能想看:

本文链接:https://addon.ciliseo.com/html5-canvas-ru-he-hui-zhi-ku-xuan-neng-liang-xian-tiao-xiao-guo-dai-ma.html

线条能量酷炫效果代码canvas有一定给大家介绍一下效果图特效直接价值如何
效果效果英文效果图制作效果是什么意思效果图效果器怎么调音质更好效果器和功放机的连接效果图制作软件效果图设计效果最好的痔疮药排行榜效果图ai生成效果图网站效果图素材网站效果图ai软件哪个好效果最好鱼缸过滤器图自制效果器效果图大全效果图图片效果英文效果图英文效果器英文效果拔群效果广告效果遮蔽者效果最大化广告代码代码生成器代码ai编写代码编程教学入门代码网站代码怎么编写代码编程软件代码编辑器代码怎么运行代码随想录代码大全代码在线运行代码练习代码怎么写代码大全可复制代码运行在线工具代码对比代码随想录github代码ai代码高亮代码随想录完整版pdf代码查重线条小狗线条装饰线条小狗壁纸线条画线条小狗图片线条小狗头像线条眉线条小狗是什么品种线条眉一般在多少价格左右线条小狗哪个是公的母的线条小狗电脑壁纸线条灯线条小狗高清电脑桌面壁纸线条小狗简笔画线条素材图片线条小狗电脑壁纸4k全屏线条小狗英文线条小狗gif线条小狗盲盒线条小狗casetify线条科技能量守恒定律能量表霍金斯能量表能量和大卡的换算能量英文能量数字对照表能量是什么意思能量图片大全磁场能量和热量的区别能量舱热疗养生舱可靠吗能量最低原理能量豆能量计能量的平衡任务详细流程能量的英文能量君能量兽之战能量单位能量计算公式能量的平衡能量奇点能量守恒英文能量密度能量英文

网友评论

扫一扫二维码添加客服微信

关于我们建站招商建站服务