1 Star 1 Fork 0

叶继增 / ark-particle-animation

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Vue 3 + TypeScript + Vite

仿明日方舟官网 Logo 粒子动画,拉取后记得yarn install or npm install

主要使用三个类:Particle、LogoImg、ParticleCanvas

  1. Particle:记录粒子位置、颜色、大小、动画耗时 和 x/y 方向上的移动速度,提供绘制粒子方法draw、更新方法update、替换方法change
  2. LogoImg:记录图片解析后的粒子数组信息particleData
  3. ParticleCanvas:记录目标画布、画布中的粒子数组和鼠标在画布中的位置,提供绘制画布方法drawCanvas、改变粒子数组方法changeImg

流程:

  • 实例化一个ParticleCanvas对象prtCanvas
  • 点击某个图片clickLogo时调用prtCanvas.changeImg(particleData)方法传入其粒子数组信息。
    • 首次 changeImg,直接赋值
    • 非首次,对比粒子数组 移除/生成粒子,并随机映射

这里就已经实现粒子动画了,粒子的生成和移动就不细说了看代码!

然后就是吸引/排斥:

  • 鼠标在实例对象prtCanvas对应的画布移动时触发mousemove回调,根据回调参数重新计算鼠标位置mouseX/mouseY
    • prtCanvas的绘制画布方法drawCanvas一直随着事件循环在执行,drawCanvas中遍历画布粒子数组并调用每一项的update方法并传入重新计算后的mouseX/mouseY
    • particle.update中又根据距离和设置好的引力/斥力重新计算vx/vy...
this.ParticleArr.forEach((particle) => {
  particle.update(this.mouseX, this.mouseY);
  particle.draw();
});

Particle 的 draw 方法符合面向对象的写法是接收一个 content 上下文参数,图方便就直接读取了 😁

欢迎关注我的掘金主页,一起学习更多前端知识

空文件

简介

仿明日方舟官网 Logo 粒子动画 展开 收起
JavaScript 等 4 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/ye-jizeng/ark-particle-animation.git
git@gitee.com:ye-jizeng/ark-particle-animation.git
ye-jizeng
ark-particle-animation
ark-particle-animation
main

搜索帮助

53164aa7 5694891 3bd8fe86 5694891