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}
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!