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

qml Emitter 详解

1、概述

Emitter是QML粒子系统中的一个关键组件,用于创建并发射逻辑粒子。这些逻辑粒子本身不会自动渲染,需要使用一个或多个ParticlePainter元素(如ImageParticle、ItemParticle等)来进行可视化显示。Emitter通过定义粒子的发射区域和相关发射参数,如发射速率、生命周期、大小等,来控制粒子的行为。

2、重要属性

Emitter具有多个重要属性,这些属性决定了粒子的发射特性和行为:

  • emitRate:每秒发射的粒子数。默认值为每秒10个粒子。
  • lifeSpan:粒子的生命周期,从开始到消失的时间(毫秒)。默认值为1000毫秒。
  • lifeSpanVariation:粒子生命周期的变化范围。如果设置为50,则粒子寿命可能的范围是950~1050毫秒之间。
  • size:粒子发射时的大小(像素为单位)。默认值为16像素。
  • endSize:粒子生命结束时的大小(像素为单位)。默认值为16像素。如果设置为-1,则粒子的大小将保持在起始大小不变。
  • sizeVariation:粒子大小的变化范围。粒子系统会将此值加到size和endSize属性上,以便产生大小随机变化的粒子。
  • velocity:粒子的起始速度。可以使用PointDirection或StochasticDirection类型来定义。
  • acceleration:粒子的起始加速度。可以使用StochasticDirection类型来定义。
  • shape:发射器的形状。默认形状是一个填充的矩形,对应于发射器的完整边界框。也可以设置为其他形状,如MaskShape等。
  • enabled:是否启用发射器。默认值为true。如果设置为false,则发射器停止发射粒子。
  • maximumEmitted:发射器一次将拥有的最大粒子数。如果小于0,则此发射器可以拥有的粒子数量没有最大限制。
3、重要方法

Emitter提供了一些重要方法,用于控制粒子的发射行为:

  • burst(int count):立即从此发射器发射由count指定的多个粒子。
4、重要信号

Emitter在发射粒子时会发出一些重要信号,这些信号可以用于监听和处理粒子的发射事件:

  • emitParticles(Array particles):发射粒子时会发出此信号。particles是粒子对象的JavaScript数组。可以直接在处理程序onEmitParticles中修改粒子属性。但请注意,由于JavaScript执行速度较慢,因此不建议在高容量粒子系统中使用它。
Window {id: rootvisible: truewidth: 480; height: 160color: "#1f1f1f"ParticleSystem {id: particleSystem}Emitter {id: emitteranchors.left: parent.leftanchors.verticalCenter: parent.verticalCenterwidth: 1; height: 1system: particleSystememitRate: 10lifeSpan: 6400lifeSpanVariation: 400size: 32velocity: AngleDirection {angle: -45angleVariation: 0magnitude: 100}acceleration: AngleDirection {angle: 90magnitude: 25}}ImageParticle {source: "qrc:/res/1.png"system: particleSystemcolor: '#FFD700'colorVariation: 0.2rotation: 0rotationVariation: 45rotationVelocity: 15rotationVelocityVariation: 15entryEffect: ImageParticle.Scale}
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

http://www.lryc.cn/news/520909.html

相关文章:

  • 【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接
  • mybatis-spring @MapperScan走读分析
  • Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
  • 【0x005B】HCI_Write_Default_Erroneous_Data_Reporting命令详解
  • 基于 Python 的学生成绩管理系统设计与实现
  • 【Apache Doris】周FAQ集锦:第 29 期
  • 【C】初阶数据结构3 -- 单链表
  • Autodl安装tensorflow2.10.0记录
  • 【Rust】常见集合
  • SpiderFlow平台v0.5.0之引入selenium插件
  • git push命令
  • 洛谷P1161
  • Python脚本自动发送电子邮件
  • vscode的安装与使用
  • sparkRDD教程之必会的题目
  • Unity 2d描边基于SpriteRender,高性能的描边解决方案
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • js基础---var与let的区别以及const的使用
  • 用css和html制作太极图
  • OJ12:160. 相交链表
  • 软件工程和项目管理领域 - CMMI 极简理解
  • C# 线程基础之 线程同步
  • [c语言日寄]c语言也有“回”字的多种写法——整数交换的三种方式
  • RocketMQ 知识速览
  • 优化 Azure Synapse Dedicated SQL Pool中的 SQL 执行性能的经验方法
  • 详解英语单词“pro bono”:公益服务的表达(中英双语)
  • 16. C语言 字符串详解
  • 使用Buildroot开始嵌入式Linux系统之旅-3
  • [免费]SpringBoot+Vue新能源汽车充电桩管理系统【论文+源码+SQL脚本】
  • 【已解决】【记录】2AI大模型web UI使用tips 本地