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

HarmonyOS 6 ArkUI 粒子动画(Particle)干扰场特性使用文档

文章目录

    • 干扰场(DisturbanceField)核心
      • 1. 作用
      • 2. 干扰场参数
    • 示例代码逐模块解析
      • 1 页面布局结构
      • 2 粒子基础配置
      • 3 干扰场完整配置
        • 对应功能解析:
    • 整体运行效果
    • 完整代码
    • 总结

干扰场(DisturbanceField)核心

1. 作用

干扰场用于在粒子运动过程中,对指定区域内的粒子施加动态扰动,使粒子运动轨迹不再是固定的直线/抛物线,而是呈现随机、流动、扭曲、风力吹动般的复杂效果,极大提升视觉真实感与炫酷程度。

2. 干扰场参数

参数含义
strength扰动强度
shape干扰场形状(Rect / Circle)
size干扰场区域宽高
position干扰场在粒子容器中的坐标位置
feather干扰场边缘羽化程度(边缘柔和度)
noiseScale噪声缩放(扰动细节大小)
noiseFrequency噪声频率(扰动变化快慢)
noiseAmplitude噪声幅度(扰动剧烈程度)

示例代码逐模块解析

1 页面布局结构

Stack(){// 黑色背景底板Text().width(300).height(300).backgroundColor(Color.Black)// 粒子动画组件Particle({...}).width(300).height(300).disturbanceFields([{...}])// 干扰场配置}.width('100%').height('100%').align(Alignment.Center)
  • 使用Stack居中展示粒子动画
  • 黑色背景增强粒子颜色与扰动效果的视觉表现
  • 粒子容器尺寸:300x300

2 粒子基础配置

粒子本身为圆点类型(POINT),配置如下:

  • 半径:10
  • 最大数量:500
  • 生命周期:10秒
  • 发射速度:10个/秒
  • 发射区域:矩形
  • 颜色渐变:白 → 粉 → 橙 → 粉
  • 透明度:淡入 → 淡出
  • 缩放:从0放大到0.5
  • 加速度:固定向上(90°)随机加速

3 干扰场完整配置

.disturbanceFields([{strength:10,// 扰动强度shape:DisturbanceFieldShape.RECT,// 干扰场形状:矩形size:{width:100,height:100},// 干扰场区域大小position:{x:100,y:100},// 干扰场位置feather:15,// 边缘羽化noiseScale:10,// 噪声缩放noiseFrequency:15,// 噪声频率noiseAmplitude:5// 噪声幅度}])
对应功能解析:
  1. strength: 10
    扰动强度为10,控制粒子被“吹动”的力度。

  2. shape: DisturbanceFieldShape.RECT
    干扰场为矩形区域

  3. size: { width: 100, height: 100 }
    干扰场区域大小为100x100

  4. position: { x: 100, y: 100 }
    干扰场出现在粒子容器(100,100)坐标处。

  5. feather: 15
    干扰场边缘羽化值15,让区域边界更柔和,粒子过渡自然。

  6. noiseScale: 10
    噪声细节缩放,控制扰动纹理的大小。

  7. noiseFrequency: 15
    噪声变化频率,数值越高扰动变化越快、越密集。

  8. noiseAmplitude: 5
    噪声幅度,控制扰动的剧烈程度、偏移距离。


整体运行效果

  1. 黑色背景上生成彩色上升圆点粒子
  2. 粒子自动:淡入 → 放大 → 变色 → 向上漂浮 → 淡出
  3. 粒子经过(100,100) 位置的100x100矩形干扰场时:
    • 轨迹被扰动、扭曲、偏移
    • 呈现流动、风力、波动效果
  4. 整体视觉流畅、炫酷、高度符合官方高级粒子动效规范

完整代码

@Entry@Componentstruct ParticleExample3{build(){Stack(){Text().width(300).height(300).backgroundColor(Color.Black)Particle({particles:[{emitter:{particle:{type:ParticleType.POINT,// 粒子类型config:{radius:10// 圆点半径},count:500,// 粒子总数lifetime:10000// 粒子生命周期,单位ms},emitRate:10,// 每秒发射粒子数position:[0,0],shape:ParticleEmitterShape.RECTANGLE// 发射器形状},color:{range:[Color.Red,Color.Yellow],// 初始颜色范围updater:{type:ParticleUpdater.CURVE,// 变化方式为曲线变化config:[{from:Color.White,// 变化起始值to:Color.Pink,// 变化终点值startMillis:0,// 开始时间endMillis:3000,// 结束时间curve:Curve.EaseIn// 变化曲线},{from:Color.Pink,to:Color.Orange,startMillis:3000,endMillis:5000,curve:Curve.EaseIn},{from:Color.Orange,to:Color.Pink,startMillis:5000,endMillis:8000,curve:Curve.EaseIn},]}},opacity:{range:[0.0,1.0],// 粒子透明度的初始值从[0.0,1.0]随机产生updater:{type:ParticleUpdater.CURVE,config:[{from:0.0,to:1.0,startMillis:0,endMillis:3000,curve:Curve.EaseIn},{from:1.0,to:0.0,startMillis:5000,endMillis:10000,curve:Curve.EaseIn}]}},scale:{range:[0.0,0.0],updater:{type:ParticleUpdater.CURVE,config:[{from:0.0,to:0.5,startMillis:0,endMillis:3000,curve:Curve.EaseIn}]}},acceleration:{// 加速度的配置,从大小和方向两个维度变化,speed表示加速度大小,angle表示加速度方向speed:{range:[3,9],updater:{type:ParticleUpdater.RANDOM,config:[1,20]}},angle:{range:[90,90]}}}]}).width(300).height(300).disturbanceFields([{strength:10,shape:DisturbanceFieldShape.RECT,size:{width:100,height:100},position:{x:100,y:100},feather:15,noiseScale:10,noiseFrequency:15,noiseAmplitude:5}])}.width('100%').height('100%').align(Alignment.Center)}}

运行效果如图:


总结

  1. 干扰场必须挂载在 Particle 组件上
    使用.disturbanceFields([])语法。

  2. 支持配置多个干扰场
    数组中可放入多个区域,实现全局/局部扰动。

  3. 噪声参数组合控制效果
    noiseScalenoiseFrequencynoiseAmplitude共同决定扰动风格。

  4. feather 羽化值让效果更自然
    避免区域边缘出现生硬突变。

  5. 性能建议
    干扰场属于高级特性,适度调整强度与区域以保证流畅运行。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

http://www.jsqmd.com/news/783555/

相关文章:

  • 从入门到进阶:大模型学习的正确打开方式
  • AI智能体竞技场:零代码可视化多智能体系统实战
  • 动态域名解析工具diny:基于Cloudflare API的轻量级DDNS解决方案
  • 日常开发小记录
  • AirPodsDesktop深度解析:打破生态壁垒的Windows音频革命
  • VS Code 又官宣了一个 Agent 新玩具!有点东西!
  • 论文阅读:MMA: Multi-Modal Adapter for Vision-Language Models
  • 如何在Java面试中脱颖而出?掌握这些高级技巧就够了
  • 佛山市添明再生资源:南海区口碑好的钢渣回收厂家 - LYL仔仔
  • ReVa:基于MCP协议的AI逆向工程助手,提升Ghidra分析效率
  • 陕西中坤羽衡环保:新城乙烯基耐高温涂料批发公司有哪些 - LYL仔仔
  • 上饶黄金回收怎么选?3 区 8 县 1 市全覆盖,6 大品牌上门回收 + 实时金价 + 当场结款 - 金掌柜黄金回收
  • 2026年易碎品柔爪抓取方案主流款式与适配场景 - 品牌2026
  • AI+高通量实验驱动电池级碳酸锂工艺优化:从数据到决策的闭环实践
  • 2026年道路筑路设备采购完全指南:德州霖垚与五大品牌深度横评 - 企业名录优选推荐
  • 如何彻底解决显卡驱动冲突问题:Display Driver Uninstaller深度解析与实战指南
  • CCAA考试通过率是多少? - 众智商学院官方
  • CANN算子库AttentionUpdate接口文档
  • CANN/metadef自动映射函数注册
  • Agent 开发范式演进:从环境工程出发,“简化”多源实时上下文
  • 亨得利卡地亚官方认证服务渠道:2026年原厂配件、认证技师与全国7家直营网点全公开,400电话一键预约 - 亨得利腕表维修中心
  • 告别爬虫,用API高效获取App Store趋势数据:Python实战指南
  • 2026年山东沥青加温设备与道路养护筑路设备源头厂家深度横评指南 - 企业名录优选推荐
  • 2026年沥青加温设备与筑路设备源头厂家深度选购指南|德州霖垚专业对接 - 企业名录优选推荐
  • CANN/ops-math矩阵乘法压缩反量化算子
  • 从系统排名看趋势:国内CRM市场竞争格局的新变化与机遇 - Blue_dou
  • unity RaycastHit详解 - 冷夜
  • CANN/pyasc向量最小值函数
  • AI Agent团队技能包:集成OpenClaw、Claude Code与tmux实现自动化开发
  • 一文吃透HDLC协议|从帧结构到封装解封装