当前位置: 首页 > wzjs >正文

北海市建设局官方网站望野注音版

北海市建设局官方网站,望野注音版,国外网站建设什么价格低,搜索引擎大全全搜网文章目录 一、粒子系统基础架构1.1 粒子数据结构设计1.2 粒子系统管理器 二、基础粒子效果实现2.1 重力场模拟2.2 弹性碰撞效果 三、高级交互实现3.1 鼠标吸引效果3.2 颜色渐变粒子 四、性能优化策略4.1 粒子池复用4.2 分层渲染 五、复杂效果实现5.1 烟花爆炸效果5.2 流体模拟 …

文章目录

  • 一、粒子系统基础架构
    • 1.1 粒子数据结构设计
    • 1.2 粒子系统管理器
  • 二、基础粒子效果实现
    • 2.1 重力场模拟
    • 2.2 弹性碰撞效果
  • 三、高级交互实现
    • 3.1 鼠标吸引效果
    • 3.2 颜色渐变粒子
  • 四、性能优化策略
    • 4.1 粒子池复用
    • 4.2 分层渲染
  • 五、复杂效果实现
    • 5.1 烟花爆炸效果
    • 5.2 流体模拟


一、粒子系统基础架构

1.1 粒子数据结构设计

class Particle {constructor(x, y) {this.pos = { x, y };this.vel = { x: Math.random()*4 - 2, y: Math.random()*4 - 2 };this.acc = { x: 0, y: 0.1 };this.size = Math.random()*8 + 2;this.life = 200;}update() {this.vel.x += this.acc.x;this.vel.y += this.acc.y;this.pos.x += this.vel.x;this.pos.y += this.vel.y;this.life--;}
}

1.2 粒子系统管理器

class ParticleSystem {constructor() {this.particles = [];this.emitRate = 5;this.gravity = 0.1;}emit(x, y) {for(let i=0; i<this.emitRate; i++) {this.particles.push(new Particle(x, y));}}update() {this.particles = this.particles.filter(p => p.life > 0);this.particles.forEach(p => p.update());}
}

二、基础粒子效果实现

2.1 重力场模拟

// 初始化时设置重力
class GravityParticle extends Particle {constructor(x, y) {super(x, y);this.acc.y = 0.3; // 增强重力效果}
}// 鼠标点击触发粒子发射
canvas.addEventListener('click', (e) => {const rect = canvas.getBoundingClientRect();const x = e.clientX - rect.left;const y = e.clientY - rect.top;particleSystem.emit(x, y);
});

2.2 弹性碰撞效果

class BounceParticle extends Particle {update() {super.update();// 水平边界碰撞if(this.pos.x < 0 || this.pos.x > canvas.width) {this.vel.x *= -0.8;this.pos.x = Math.max(0, Math.min(this.pos.x, canvas.width));}// 垂直边界碰撞if(this.pos.y < 0 || this.pos.y > canvas.height) {this.vel.y *= -0.8;this.pos.y = Math.max(0, Math.min(this.pos.y, canvas.height));}}
}

三、高级交互实现

3.1 鼠标吸引效果

class AttractorParticle extends Particle {constructor(x, y) {super(x, y);this.attraction = 0.02;}update(mousePos) {super.update();const dx = mousePos.x - this.pos.x;const dy = mousePos.y - this.pos.y;const distance = Math.sqrt(dx*dx + dy*dy);if(distance < 200) {const force = (200 - distance) * this.attraction;this.vel.x += (dx/distance) * force;this.vel.y += (dy/distance) * force;}}
}

3.2 颜色渐变粒子

class GradientParticle extends Particle {constructor(x, y) {super(x, y);this.colorStart = `hsl(${Math.random()*360}, 80%, 60%)`;this.colorEnd = `hsl(${Math.random()*360}, 80%, 30%)`;}draw(ctx) {const gradient = ctx.createRadialGradient(this.pos.x, this.pos.y, 0, this.pos.x, this.pos.y, this.size);gradient.addColorStop(0, this.colorStart);gradient.addColorStop(1, this.colorEnd);ctx.beginPath();ctx.arc(this.pos.x, this.pos.y, this.size, 0, Math.PI*2);ctx.fillStyle = gradient;ctx.fill();}
}

四、性能优化策略

4.1 粒子池复用

class PooledParticleSystem extends ParticleSystem {constructor() {super();this.pool = [];}emit(x, y) {for(let i=0; i<this.emitRate; i++) {const particle = this.pool.length ? this.pool.pop() : new Particle(x, y);particle.reset(x, y);this.particles.push(particle);}}remove(particle) {this.pool.push(particle);}
}

4.2 分层渲染

function render() {ctx.clearRect(0, 0, canvas.width, canvas.height);// 背景层(透明粒子)backgroundParticles.forEach(p => p.draw(ctx));// 交互层(高亮粒子)interactiveParticles.forEach(p => p.draw(ctx));requestAnimationFrame(render);
}

五、复杂效果实现

5.1 烟花爆炸效果

class FireworkParticle extends Particle {constructor(x, y) {super(x, y);this.vel.y = -Math.random()*6 - 8;this.acc.y = 0.05;this.size = Math.random()*15 + 5;}draw(ctx) {ctx.beginPath();ctx.arc(this.pos.x, this.pos.y, this.size, 0, Math.PI*2);ctx.fillStyle = `hsl(${Math.random()*360}, 80%, 60%)`;ctx.fill();}
}

5.2 流体模拟

class FluidParticle extends Particle {constructor(x, y) {super(x, y);this.density = Math.random()*50 + 10;}update() {super.update();this.vel.x *= 0.95;this.vel.y *= 0.95;}draw(ctx) {ctx.beginPath();ctx.arc(this.pos.x, this.pos.y, this.size, 0, Math.PI*2);ctx.fillStyle = `rgba(0, 255, 255, ${this.density/100})`;ctx.fill();}
}

到这里,这篇文章就和大家说再见啦!我的主页里还藏着很多 篇 Vue 实战干货,感兴趣的话可以点击头像看看,说不定能找到你需要的解决方案~
创作这篇内容花了很多的功夫。如果它帮你解决了问题,或者带来了启发,欢迎:
点个赞❤️ 让更多人看到优质内容
关注「前端极客探险家」🚀 每周解锁新技巧
收藏文章⭐️ 方便随时查阅
📢 特别提醒:
转载请注明原文链接,商业合作请私信联系
感谢你的阅读!我们下篇文章再见~ 💕

在这里插入图片描述

http://www.dtcms.com/wzjs/827649.html

相关文章:

  • 网站产品后台界面怎么做有没有可以做兼职的网站
  • 台州建设公司网站中国建筑人才网怎么样
  • 泵 品牌网站建设哪个网站生鲜配送做的好处
  • 学php做网站某品牌休闲零食网站建设规划书
  • 网站开发分为哪几块传统网站建设 成本
  • 营销型科技网站网站建设自适应网站
  • 网站优化方案书美橙专业建站
  • 服务器 网站建设 过程网站建设的好不好
  • 网站建设报价费用是多少免费网站自助建站系统
  • 建设网站怎么创建数据库虚拟商品自动发货网站搭建教程
  • 山东省建设局网站监理员考试最快做网站的语言
  • 专业的建站公司都具备什么条件非企广告推广是不是违法
  • 乐山网站开发临海市建设规划局网站
  • 学习网站建设难吗wordpress 插件 图片
  • 网站后台百度统计图如何做的python破解wordpress
  • 浏览网站模板上海专业网络推广公司
  • 做网站代理需要办什么执照二维码网页制作价格
  • 服装 营销型网站案例wordpress+本地编辑
  • 学做名片的网站网上快速赚钱方法
  • 网站设计制作从哪怎么做宣传网页
  • 广东建设厅网站p2p网站建设报价2p排名
  • 网页源码怎么做网站40岁以上的设计师都去哪了
  • 网站外链建设平台三星网上商城怎么查物流
  • 网站开发学习教程昆明网站建设方案优化
  • 建立网站得多少钱珠海企业网站建设公司
  • 炫酷网站有哪些2018做网站 工具
  • php网站首页模板厦门百度推广开户
  • 医院门户网站模板wordpress开发小程序
  • 网站建设实训不足网站建设海南
  • 做旅游网站的工作流程图wordpress修改文章模板