辽阳网站建设辽阳登录建设部网站

news/2025/9/23 20:34:15/文章来源:
辽阳网站建设辽阳,登录建设部网站,中企动力总部在哪里,建设银行官网网站人事注#xff1a;本博文代码基于ZRender 3.4.3版本开发#xff0c;对应版本库地址#xff1a;ZRender 库。 效果 实现分析 通过上面显示的效果图#xff0c;可以看出#xff0c;这种效果就是在Canvas中生成多个可移动的点#xff0c;然后根据点之间的距离来确定是否连线本博文代码基于ZRender 3.4.3版本开发对应版本库地址ZRender 库。 效果 实现分析 通过上面显示的效果图可以看出这种效果就是在Canvas中生成多个可移动的点然后根据点之间的距离来确定是否连线思路比较简单。 实现问题 保持Canvas 100%显示resize时自动调节Canvas尺寸和内部变量生成圆点实现圆点的移动及边界处理实现原点的直线连接 Canvas设置 html: canvas idmain/canvas css: #main{position: absolute; //用于100%填充left:0;top:0;background: #000;z-index: -1; //方便做背景层使用} ZRender部分 这里主要用到的形状就是Circle和Line先引入这两个组件 [zrender,zrender/graphic/shape/Circle,zrender/graphic/shape/Line], function(zrender, Circle, Line){} 设置全局及配置项用到的变量 var winH window.innerHeight; //同步页面宽、高 var winW window.innerWidth; //同步页面宽、高var opts { //可配置参数background: #000, //Canvas背景色paricalRadius: 2, //粒子半径paricalColor: rgb(0, 255, 0), //粒子颜色lineColor: rgb(0, 255, 0), //连线颜色joinLineDis: 300, //粒子间连线的要求距离particalAmount: 30, //生成的粒子数量speed: 1, //粒子速度 }; var tid; //setTimeout id防抖处理 var particals []; //用于存储partical对象 初始化ZRender var zr zrender.init(main, {width: winW, height: winH});zr.dom.style.backgroundColor opts.background; //设置背景色 窗口 resize 处理 window.addEventListener(resize, function(){clearTimeout(tid);var tid setTimeout(function(){ //防抖处理winW zr.dom.width window.innerWidth;winH zr.dom.height window.innerHeight;zr.refresh();}, 300); //这里设置了300ms的防抖间隔 }, false); 效果 创建粒子类 Partical 总结一下这个类需要以下属性 坐标位置 x, y粒子速度粒子移动角度粒子颜色粒子半径粒子的角度方向变量粒子的ZRender形状实例 方法 更新位置坐标划线 这边直接用ES6的语法来创建类 class Partical {} 构造器 constructor(){this.lines [], //用于存储连线//粒子坐标初始化this.x winW * Math.random();this.y winH * Math.random();this.speed opts.speed Math.random(); //这个random可不加主要是为了制作不同的速度的this.angle ~~(360 * Math.random());this.color opts.paricalColor;this.radius opts.paricalRadius Math.random();this.vector {x: this.speed * Math.cos(this.angle),y: this.speed * Math.sin(this.angle),} this.element new Circle({shape: {cx: this.x,cy: this.y,r: this.radius,},style: {fill: this.color,}}); }; 更新位置坐标方法 updatePosition(){//边界判断if(this.x winW || this.x 0){this.vector.x * -1;}if(this.y winH || this.y 0){this.vector.y * -1;}if(this.x winW){this.x winW;}if(this.x 0){this.x 0;}if(this.y winH){this.y winH;}if(this.y 0){this.y 0;}//更新位置坐标this.x this.vector.x;this.y this.vector.y;//更新形状坐标this.element.shape.cx this.x;this.element.shape.cy this.y;this.element.dirty(); }; 划线方法 drawLines(){//清空lines用于重绘线for(let i 0; i this.lines.length; i ){let l this.lines[i];zr.remove(l); //删除形状l null; //并解除绑定}this.lines []; //删除后清空数组//遍历各个点之间的距离for(let i 0; i particals.length; i ){let p particals[i];//勾股定理获取两点之间的距离let distance Math.sqrt(Math.pow(this.x - p.x, 2) Math.pow(this.y - p.y, 2));if(distance opts.joinLineDis distance 0){let opacity 1 - distance / opts.joinLineDis; //根据距离大小来设置透明度let color opts.lineColor.match(/\d/g); //因为这里要用到透明度所以需要重新组合rgba先把各个颜色值取到数组中let l new Line({shape: {x1: this.x,y1: this.y,x2: p.x,y2: p.y,},style: {stroke: rgba( color[0] , color[1] , color[2] , opacity ), //组建颜色fill: null},});this.lines.push(l); //存入lineszr.add(l); //加入ZRender Storage中}}; } 目前所有核心部分已完成现在来初始化它 var init function(){for (let i 0; i opts.particalAmount; i) {let p new Partical();particals.push(p); // 把粒子实例 存入particals中方便后面操作zr.add(p.element); //加入 ZRender Storage中} }; 效果 开始动画函数让粒子动起来并生成连接线 function loop(){for(let i 0; i particals.length; i ){let p particals[i];p.updatePosition(); //更新位置p.drawLines(); //绘制线段}window.requestAnimationFrame(loop); }; 最终效果 全部代码 !DOCTYPE html html langen headmeta charsetUTF-8titleDocument/titlescript src./esl.js/scriptstyle#main{position: absolute;left:0;top:0;background: #000;z-index: -1;}/style /head bodycanvas idmain/canvasscriptrequire.config({packages:[{name: zrender,location: ./src,main: zrender,},], });require([zrender,zrender/graphic/shape/Circle,zrender/graphic/shape/Line], function(zrender, Circle, Line){/** 作者王乐平* 博客http://blog.csdn.net/lecepin/*///-----全局var-----{var winH window.innerHeight;var winW window.innerWidth;var opts {background: #000, //Canvas背景色paricalRadius: 2,paricalColor: rgb(0, 255, 0),lineColor: rgb(0, 255, 0),joinLineDis: 300,particalAmount: 30,speed: 1,};var tid; //setTimeout id防抖处理var particals []; //用于存储partical对象//-----------------}var zr zrender.init(main, {width: winW, height: winH});zr.dom.style.backgroundColor opts.background;window.addEventListener(resize, function(){clearTimeout(tid);var tid setTimeout(function(){winW zr.dom.width window.innerWidth;winH zr.dom.height window.innerHeight;zr.refresh();}, 300); //这里设置了300ms的防抖间隔}, false);class Partical {constructor(){this.lines [], //用于存储连线//粒子坐标初始化this.x winW * Math.random();this.y winH * Math.random();this.speed opts.speed Math.random(); //这个random可不加主要是为了制作不同的速度的this.angle ~~(360 * Math.random());this.color opts.paricalColor;this.radius opts.paricalRadius Math.random();this.vector {x: this.speed * Math.cos(this.angle),y: this.speed * Math.sin(this.angle),} this.element new Circle({shape: {cx: this.x,cy: this.y,r: this.radius,},style: {fill: this.color,}});};updatePosition(){if(this.x winW || this.x 0){this.vector.x * -1;}if(this.y winH || this.y 0){this.vector.y * -1;}if(this.x winW){this.x winW;}if(this.x 0){this.x 0;}if(this.y winH){this.y winH;}if(this.y 0){this.y 0;}this.x this.vector.x;this.y this.vector.y;this.element.shape.cx this.x;this.element.shape.cy this.y;this.element.dirty();};drawLines(){//清空linesfor(let i 0; i this.lines.length; i ){let l this.lines[i];zr.remove(l);l null;}this.lines [];//遍历各个点之间的距离for(let i 0; i particals.length; i ){let p particals[i];//勾股定理let distance Math.sqrt(Math.pow(this.x - p.x, 2) Math.pow(this.y - p.y, 2));if(distance opts.joinLineDis distance 0){let opacity 1 - distance / opts.joinLineDis;let color opts.lineColor.match(/\d/g);let l new Line({shape: {x1: this.x,y1: this.y,x2: p.x,y2: p.y,},style: {stroke: rgba( color[0] , color[1] , color[2] , opacity ),fill: null},});this.lines.push(l);zr.add(l);}};}}var init function(){for (let i 0; i opts.particalAmount; i) {let p new Partical();particals.push(p);zr.add(p.element);}};function loop(){for(let i 0; i particals.length; i ){let p particals[i];p.updatePosition();p.drawLines();}window.requestAnimationFrame(loop);};init();loop();}); /script /body /html 博客名称王乐平博客 CSDN博客地址http://blog.csdn.net/lecepin 本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平面设计网站有哪些比较好的中山外发加工网

需要用上插件:axupimgs插件作者:莫若卿支持版本:5.0.4支持语言:仅中文插件版本:1.6一、axupimgs 插件作用:这是一个tinymce多图片批量上传插件,支持拖拽文件添加,拖拽支持白名单&…

免费站推广网站2022php做门户网站

目录 1. 前言 2. 实验分析 2.1 导入包 2.2 决策树模型构建及树模型的可视化展示 2.3 概率估计 2.4 绘制决策边界 2.5 决策树的正则化(剪枝) 2.6 对数据敏感 2.7 回归任务 2.8 对比树的深度对结果的影响 2.9 剪枝 1. 前言 本文主要分析了决策树的分类和回…

markdown 使用指南

数学公式 分数 \frac{x+y}{2} 效果:\(\frac{x+y}{2}\) 求和 \sum_{x}^{n} \(\sum_{x}^{n}\) 积分 \int \(\int\)

第6.2节 Android Agent制作<三>

第6.2节 Android Agent制作<三>pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

专业外贸网站制作价格网络商城需要什么资质

Jenkins如何创建管理员用户? 接上一篇:企业实战04_Jenkins安装推荐插件https://blog.csdn.net/weixin_40816738/article/details/90383700 文章目录1. 创建管理员用户2. 请求地址Windows和Linux2.1. Windows的浏览器访问地址:2.2. Linux的浏览…

...温岭做网站企业宣传ppt案例欣赏

非原创,来源网络。感谢原作者奉献如此精彩文章。原文地址:http://www.jianbitou.com/post/20_websites-learn-master-css.html1. A List Apart CSS Topics A List Apart是一个CSS优秀文章的收集网站,从1999年开始收集文章,关注最佳…

中国建材工程建设协会网站网站建设课程设计心得

support-v4.jar是support library。路径为<sdk>/extras/android/support/v4/android-support-v4.jar.转载于:https://www.cnblogs.com/Magina-learning/p/7899788.html

建设厅网站初始数据入库html5 门户网站模版

选择编程语言需要考虑多个方面&#xff0c;包括语言的特性、社区支持、工作机会、学习曲线等。下面是关于Python Go和Rust的一些介绍。 1.基本语法 1. Python: Python 是一种脚本语言&#xff0c;以简洁、易读的语法著称。以下是 Python 的基本语法示例&#xff1a; # Hello…

做网站的大小wordpress如何去除分类

箭头函数是 es6 提出的this 指针指向 定义箭头函数的全局上下文或函数上下文&#xff0c;是固定的call\apply\bind无法改变箭头函数的this没有 arguments 对象&#xff0c;但是可以访问外部作用域中的 arguments 对象没有 prototype 属性不能用作 generator 函数&#xff0c;不…

珠海市手机网站建设公司WordPress众筹模板

文章目录 程序安全退出执行代码的基本:信号拦截执行代码的改进:信号拦截包装器实践捕获键盘输入示例代码go-svc介绍程序及服务的控制是指在计算机系统中对程序和服务进行管理、监控和调控的过程。这个过程可以涉及到多个方面,包括资源管理、运行状态监测、安全性控制等。本质…

怎么做网站能够增加人气网站开发分层

最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类。 最开始的时候用 Python 学会了 os.system() 这个方法是很多比如 C&#xff0c;Perl 相似的。 os.system(cat /proc/cpuinfo) 但是这样是无法获得到输出和返回值的&#xff0c;继续 Goog…

权威的顺德网站建设济南软件公司排名

1.分为三类 健康的桃子叶片 &#xff0c;251张 桃疮痂病一般&#xff0c;857张 桃疮痂病严重&#xff0c;770 张 2. GUI界面识别效果和predict.py识别效果如视频所示桃子叶片病害识别&#xff08;Python代码&#xff0c;pyTorch框架&#xff0c;深度卷积网络模型&#xff0…

个人网站备案电话访谈有哪些好的网站模版

这些人的赚钱思路是真灵活&#xff01; 这几天刷到艾维奇采访之昊的视频&#xff0c;做口语教育真赚钱&#xff0c;lv的包包随便买&#xff0c;住大房子&#xff0c;三辆车&#xff0c;有评论晒图一个九百的课&#xff0c;卖了1.3万份&#xff0c;直接千万到账。 然后我又想到…

seo是什么?东莞网站seo方法

分享嘉宾&#xff1a;卞东海 百度 高级研发工程师编辑整理&#xff1a;蒋郭鑫 河海大学出品平台&#xff1a;DataFunTalk导读&#xff1a;由于大数据时代的发展&#xff0c;知识呈指数级增长&#xff0c;而知识图谱技术又在近年来逐步火热&#xff0c;因此诞生了利用知识图谱技…

淘宝网站开发类目没法上架商品平台网站建设所需资质

1.3 List(列表)列表由一系列按特定顺序排列的元素组成。在Python中&#xff0c;用方括号[ ]来表示列表&#xff0c;并用逗号来分隔其中的元素。1.3.1 访问列表元素在Python中&#xff0c;第一个列表元素的索引为0&#xff0c;而不是1。>>> bicycles [trek, cannondal…

LVS 服务器 知识

LVS 服务器 集群 集群分类按分发器类型分 – LVS集群 – Nginx集群 – haproxy集群 – F5集群按业务类型分 – web集群 – 数据库集群 – 缓存集群 – …按功能分类:负载均衡集群 – LBC: 分担服务的总体压力 高可用…

万网站长上海网站推广营销设计

sys.default_constraints 是 SQL Server 的系统视图&#xff0c;它包含了数据库中所有默认约束的信息。默认约束是数据库对象&#xff08;如表中的列&#xff09;的约束&#xff0c;它为列定义了一个默认值&#xff0c;当在插入新行时没有为该列提供值时&#xff0c;将使用这个…

服装行业做推广网站wordpress 图片集

本文详解的讲解了使用IDEA创建Maven项目&#xff0c;及Maven的基础入门。 1、打开IDEA&#xff0c;右上角选择File->New->Project 2、如图中所示选择Maven&#xff08;可按自己所需添加&#xff0c;否则加载时速度很慢&#xff09; 3、添加项目所需Groupld,ArtifactId,Ve…

企业网站模板psd如何制作有关西安的网站

Safari浏览器&#xff1a; 1.safari执行history.go(-1);需要添加return false; Chrome浏览器 1.Chrome浏览器要预读图片&#xff0c;需要通过对图片的预加载。注&#xff1a;预加载前一定要将<img>加入<body> 1 /* 预加载图片 node-<img> func-回调函数 *…

市场调研数据网站深圳手机网站模板

官方链接&#xff1a;空间锚点 | PICO 开发者平台 注意&#xff1a;该功能只能打包成APK在PICO 4 Ultra上真机运行&#xff0c;无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上&#xff0c;勾选…