上一周完成了地图与飞线的实现,使用的是 d3.js + svg,后发现可能存在性能隐患。
当飞线数量多的时候,页面上则有多个 svg <path> 结点,并且每条飞线有头部、结束圆圈、蒙板等效果,则页面上的结点数是 飞线数*其他部件数。将会是一个较大的值。
画布罩在整个 HTML 上,共两层 Canvas 画布,底层绘制世界地图,表层绘制飞线。
二次贝塞尔曲线公式
(其中 起始点 p0, 控制点 p1, 终点 p2)
t 从 0 变到 1,每个 t 的变化时,就绘制一帧;
飞线的速度就取决于增量变化的大小,增量越小,动画就越细致。
如何表现 t ?
给每一个飞线对象单独一个 t 属性,每绘制完一帧,t = t + 增量(固定值);
requestAnimationFrame 动画
与 SVG 飞线 相比:
渐变消失: ctx.globalAlpha
使用 globalAlpha 和 临时 Canvas;
但有两个弊端:
模拟数据来源于B2B 外贸单日询盘量,总数共 596 条, 单次同时绘制 50 条 飞线情况下:
具体如下:
动画帧数保持在 42-60 左右,动画流畅;
动画帧数保持在 12-43 左右,视觉上仔细看略有卡顿;
CPU 占用率在 20%-30% 浮动
CPU 占用率高于 100%
皆无内存泄漏问题。 SVG 飞线的 JS heap 总大小略高于 Canvas 飞线。
测试了 Canvas 飞线,在同时绘 50 条、100 条、200 条、300 条、400 条 时的动画流畅度。
主板跳线的连接方式:1、把所有排线理在一起,根据上面的标注,先来明确每根线的定义:a、电源开关:POWERSW,可能用名:POWER、POWERSWITCH、ON/OFF、POWERSETUP、PWR等,功能定义:机箱前面的复位按钮。b、复位/重启开关:RESETSW,可能用名:RESET、ResetSwicth、ResetSetup、RST等,功能定义:机箱前面的开机按钮。c、电源指示灯:+/-可能用名:POWERLED、PLED、PWRLED、SYSLED等d、硬盘状态指示灯:HDD LED,可能用名:HD LEDe、内置小喇叭:SPEAKER,可能用名:SPK,功能定义:主板工作异常报警器。f、音频连接线:AUDIO,可能用名:FPAUDIO,功能定义:机箱前置音频,一般都是一个整体。g、USB连接前置接口的,一般都是一个整体。2、在主板上找到各针脚的位置。3、全部连接线插完后,检查所有硬件安装是否正确并已经坚固。同时检查所有连接线是否正确并已经坚固。4、检查完成后,在机箱上按开机按钮,检查所有指示灯显示是否正常。5、指示灯检查正常后,用U盘和耳机等,检查前置USB及前置音频是否正常。6、检查一切正常后盖上机箱。排线连接工作完成。提示:所有 *** 作请在电源断电后进行。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)