tsParticles Circle Shape 圆形粒子形状使用指南:安装、加载与源码实现解析
tsParticles Circle Shape 圆形粒子形状使用指南安装、加载与源码实现解析【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticles导读tsparticles/shape-circle是 tsParticles 生态中负责把粒子渲染为圆形的官方形状插件也是引擎内置的默认粒子形状其包描述中即标注为 default particle shape。本文以 shapes/circle/README.md 为主线系统讲解该插件的安装方式、加载顺序、配置映射与常见陷阱并结合 CircleDrawer.ts、Utils.ts 等源码揭示圆形绘制的底层实现与angle参数的真实含义。读完本文你将能够在 CDN、ESM、CommonJS 三种场景下独立接入圆形粒子并能利用angle范围绘制扇形粒子。一、快速上手清单按照官方 README 的 Quick checklist接入tsparticles/shape-circle只需三步安装tsparticles/engine或直接使用下方的 CDN 打包文件在调用tsParticles.load(...)之前调用本包提供的加载函数loadCircleShape(...)在tsParticles.load(...)的配置中填写对应的形状选项particles.shape.type: circle。其中第 2 步的顺序是硬性要求loadCircleShape通过引擎的插件管理器把circle形状注册进shapeDrawers若先执行tsParticles.load(...)再注册引擎在解析粒子形状时将找不到对应的 drawer。二、CDN / Vanilla JS / jQuery 用法对于不使用打包工具的纯浏览器场景只需要引入一个 JS 文件即可引入tsparticles.shape.circle.min.js之后它会向全局暴露loadCircleShape函数这一全局暴露逻辑见 browser.ts文件把loadCircleShape挂载到globalThis并同时写入__tsParticlesInternals。脚本加载完成后即可像下面这样初始化粒子动画(async () { await loadCircleShape(tsParticles); await tsParticles.load({ id: tsparticles, options: { /* options */ /* here you can use particles.shape.type: circle */ }, }); })();要点说明id对应页面中用于承载画布的容器元素 IDoptions中把particles.shape.type设为circle即可由于loadCircleShape返回 Promise务必使用await确保形状注册先于tsParticles.load完成。三、ESM / CommonJS 安装与导入该包同时兼容 ES Module 与 CommonJS先通过包管理器安装$ npm install tsparticles/shape-circle或使用 yarn$ yarn add tsparticles/shape-circle注意tsparticles/shape-circle将tsparticles/engine声明为 peerDependency见 package.json 中peerDependencies字段因此在模块化场景中需要同时安装引擎本体。安装后CommonJS 项目可以这样引入const { tsParticles } require(tsparticles/engine); const { loadCircleShape } require(tsparticles/shape-circle); (async () { await loadCircleShape(tsParticles); })();ES Module 项目则使用importimport { tsParticles } from tsparticles/engine; import { loadCircleShape } from tsparticles/shape-circle; (async () { await loadCircleShape(tsParticles); })();从包配置看tsparticles/shape-circle通过exports字段同时提供多种入口main指向dist/cjs/index.jsCommonJS、module指向dist/esm/index.jsESM、browser指向dist/browser/index.js并额外导出了./lazy子路径供按需懒加载使用。仓库中的 index.lazy.ts 展示了懒加载实现——CircleDrawer通过动态import()按需加载适合希望缩减首屏 bundle 体积的场景。四、配置选项映射官方 README 给出了两条关键的配置映射关系主选项键particles.shape.type: circle形状专属选项键particles.shape.options.circle对应的 JSON 配置模板如下{ particles: { shape: { type: circle, options: { circle: {} } } } }options.circle为对象其内部字段由 ICircleShapeData.ts 定义目前只包含一个可选字段angle类型为引擎的RangeValue。angle的含义是粒子圆周弧线的覆盖范围可接受单个数值或{ min, max }结构单位为度。它并非圆形的尺寸尺寸由particles.size控制而是控制绘制的弧线范围——这也是本形状区别于其他多边形形状的核心扩展点。从 CircleDrawer.ts 的particleInit实现可以看到完整的解析逻辑const shapeData particle.shapeData as ICircleShapeData | undefined, angle shapeData?.angle ?? { max: maxAngle, // 360 min: minAngle, // 0 }; particle.circleRange isObject(angle) ? { min: degToRad(angle.min), max: degToRad(angle.max) } : { min: minAngle, max: degToRad(angle), };即未配置angle时circleRange为{ min: 0, max: 360° }即完整圆形angle为单值n时弧线范围是0到n度angle为{ min, max }对象时弧线范围从min度到max度。circleRange最终保存在粒子的circleRange属性上见 CircleParticle.ts该类型为Particle { circleRange?: IRangeValue }随后在绘制阶段被消费。例如把angle设为180粒子会呈现为半圆设为{ min: 0, max: 90 }粒子则呈现为 90° 扇形。五、绘制实现的源码级解析圆形粒子的绘制最终落在 Utils.ts 的drawCircle函数export function drawCircle(data: IShapeDrawDataCircleParticle): void { const { context, particle, radius } data; particle.circleRange ?? { min: minAngle, max: doublePI }; const circleRange particle.circleRange; context.arc(originPoint.x, originPoint.y, radius, circleRange.min, circleRange.max, false); }这段代码展示了几个实现细节默认circleRange兜底为0到doublePI即2π弧度与 README 中空对象即可用的行为一致实际绘制使用 Canvas 2D 的context.arc(x, y, radius, startAngle, endAngle, false)以原点(0, 0)为圆心、粒子半径radius为半径从circleRange.min画到circleRange.max逆时针方向false表示按默认顺时针方向闭合弧线particleInit中已把角度从度转换为弧度degToRad绘制层直接使用弧度值因此外部配置可以放心使用习惯的度单位。此外CircleDrawer.ts 还实现了getSidesCount()并固定返回12。这一数值会被引擎用于需要多边形边数的计算场景——在 engine/src/Core/Particle.ts 中粒子初始化时会调用shapeDrawer?.getSidesCount并把返回值赋给particle.sides若形状未实现该方法则回退为默认值 24。从源码结构看sides主要用于旋转、多边形相关计算圆形在视觉上无需边数但提供该实现可保证引擎内部算法的一致性。六、常见陷阱排查官方 README 明确列出了三类高频问题结合源码可以进一步定位原因在loadCircleShape(...)之前调用tsParticles.load(...)导致circle尚未注册进引擎的shapeDrawers粒子初始化时找不到 drawer 而无法绘制。解决办法是严格遵循先注册、后加载的顺序且确保loadCircleShape的 Promise 已经 resolve。启用高级选项前未校验 peer 依赖angle等形状专属选项依赖tsparticles/engine提供的类型与工具函数如RangeValue、degToRad、isObject模块化场景下请确认引擎版本与形状包版本匹配。一次改动多个选项组导致回归难以定位建议一次只修改一个选项组例如先只改particles.shape再单独调particles.size便于快速隔离问题。七、进一步探索完整圆形形状源码目录shapes/circle/src引擎默认边数回退逻辑engine/src/Core/Particle.ts形状绘制器接口定义engine/src/Core/Interfaces/IShapeDrawer.ts仓库中还包含大量以circle作为默认形状之一的真实配置示例例如 style.tstype: [circle, square, triangle, star, polygon]、imageMask.ts可作为接入参考。本文所述安装命令、加载函数签名与配置键均以当前仓库shapes/circle目录下的 README、源码与包配置为准圆形粒子作为引擎默认形状多数集成场景如tsParticles.load直接使用即使不显式加载该包也能工作但需要自定义angle弧线行为或保持形状注册显式化时按本文步骤加载即可。【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

x64dbg 插件开发核心 API 全指南:`_plugin_` 系列导出函数详解

x64dbg 插件开发核心 API 全指南:`_plugin_` 系列导出函数详解

x64dbg 插件开发核心 API 全指南:_plugin_ 系列导出函数详解 【免费下载链接】x64dbg An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. 项目地址: https://gitcode.com/gh_mirrors/x6/x64dbg 导读…

2026/9/21 2:12:09 阅读更多 →
Vuetify 与 UnoCSS Vuetify preset 集成实战:按需生成工具类、CSS 层叠层顺序与 Safelist 配置

Vuetify 与 UnoCSS Vuetify preset 集成实战:按需生成工具类、CSS 层叠层顺序与 Safelist 配置

Vuetify 与 UnoCSS Vuetify preset 集成实战:按需生成工具类、CSS 层叠层顺序与 Safelist 配置 【免费下载链接】vuetify 🐉 Vue Component Framework 项目地址: https://gitcode.com/gh_mirrors/vu/vuetify 导读 本文基于 Vuetify 官方文档与仓…

2026/9/19 21:15:31 阅读更多 →
基于国产高分影像的海岛监视监测系统:从变化检测到业务化落地

基于国产高分影像的海岛监视监测系统:从变化检测到业务化落地

1. 项目缘起与核心问题拆解1.1 为什么盯上了海岛监视这件事第一次接触海岛监视监测这个方向,是因为一个很现实的问题:传统海岛管理长期依赖人工巡查和零星上报,一个县级海域动辄几百个岛礁,靠船跑一圈少说几天,遇到天气…

2026/9/20 22:24:13 阅读更多 →

最新新闻

测序数据可视化:从BAM到bigWig的UCSC工具链实战指南

测序数据可视化:从BAM到bigWig的UCSC工具链实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:37:51 阅读更多 →
MATLAB配置MinGW编译器全指南:从安装到排错一次搞定

MATLAB配置MinGW编译器全指南:从安装到排错一次搞定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:36:51 阅读更多 →
GY-906与STM32F103C8T6的I²C稳定通信实战指南

GY-906与STM32F103C8T6的I²C稳定通信实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:35:51 阅读更多 →
Matlab/Simulink与FlightGear飞行器可视化仿真平台搭建指南

Matlab/Simulink与FlightGear飞行器可视化仿真平台搭建指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:35:51 阅读更多 →
BrewUI 详解:macOS 上 Homebrew 的图形化包管理利器

BrewUI 详解:macOS 上 Homebrew 的图形化包管理利器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:35:50 阅读更多 →
AI芯片设计入门的三道硬门槛:NPU、编译器与验证闭环

AI芯片设计入门的三道硬门槛:NPU、编译器与验证闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:35:50 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →