Qt Quick Particles Beispiele – System
Dies ist eine Sammlung von Beispielen zur Verwendung von Affektoren im QML-Partikelsystem.

Dies ist eine Sammlung kleiner QML-Beispiele zur Verwendung von Affektoren im Partikelsystem. Jedes Beispiel ist eine kleine QML-Datei, die einen bestimmten Typ oder eine bestimmte Funktion hervorhebt.
Der dynamische Vergleich stellt die Verwendung des Partikelsystems einem ähnlichen Effekt gegenüber, der mit dem folgenden Code erzielt wird, der Image-Typen dynamisch instanziiert.
Item {
id: fakeEmitter
function burst(number) {
while (number > 0) {
let item = fakeParticle.createObject(root)
item.lifeSpan = Math.random() * 5000 + 5000
item.x = Math.random() * (root.width / 2) + (root.width / 2)
item.y = 0
number--
}
}
Component {
id: fakeParticle
Image {
id: container
property int lifeSpan: 10000
width: 32
height: 32
source: "qrc:///particleresources/glowdot.png"
PropertyAnimation on y { from: -16; to: root.height - 16; duration: container.lifeSpan; running: true }
SequentialAnimation on opacity {
running: true
NumberAnimation { from: 0; to: 1; duration: 500 }
PauseAnimation { duration: container.lifeSpan - 1000 }
NumberAnimation { from: 1; to: 0; duration: 500 }
ScriptAction { script: container.destroy(); }
}
}
}
}Beachten Sie, dass die „Image“-Objekte nicht zufällig eingefärbt werden können.
„Start“ und „Stop“ legen lediglich den Ausführungs- und den Pausenstatus eines „ ParticleSystem “ fest. Während das System im gestoppten oder pausierten Zustand keine Simulation durchführt, wird die Simulation bei einem Neustart von vorne begonnen, während die Fortsetzung der Simulation an der Stelle erfolgt, an der sie unterbrochen wurde.
„Timed group changes“ ist ein Beispiel, das den Typ „ ParticleGroup “ veranschaulicht. Während es normalerweise ausreicht, Gruppen über einen String-Namen zu referenzieren, lassen sich durch das Setzen von Eigenschaften an Gruppen zusätzliche Effekte erzielen. Die erste Gruppe hat eine variable Dauer, wechselt jedoch immer zur zweiten Gruppe.
ParticleGroup {
name: "fire"
duration: 2000
durationVariation: 2000
to: {"splode":1}
}Die zweite Gruppe verfügt über einen „ TrailEmitter “ sowie eine feste Dauer für die Emission in die dritte Gruppe. Indem der „ TrailEmitter “ als direktes untergeordnetes Element des „ ParticleGroup “ platziert wird, wählt er automatisch diese Gruppe als zu verfolgende Gruppe aus.
ParticleGroup {
name: "splode"
duration: 400
to: {"dead":1}
TrailEmitter {
group: "works"
emitRatePerParticle: 100
lifeSpan: 1000
maximumEmitted: 1200
size: 8
velocity: AngleDirection {angle: 270; angleVariation: 45; magnitude: 20; magnitudeVariation: 20;}
acceleration: PointDirection {y:100; yVariation: 20}
}
}Die dritte Gruppe hat einen „Affector“ als direktes untergeordnetes Element, wodurch der Affector automatisch auf diese Gruppe ausgerichtet wird. Der Affector bewirkt, dass, sobald Partikel in diese Gruppe eintreten, eine „Burst“-Funktion für einen anderen Emitter aufgerufen werden kann, wobei die x- und y-Koordinaten dieses Partikels verwendet werden.
ParticleGroup {
name: "dead"
duration: 1000
Affector {
once: true
onAffected: (x, y)=> worksEmitter.burst(400,x,y)
}
}Falls „ TrailEmitter “ für mehrere Emitter nicht Ihren Anforderungen entspricht, können Sie Emitter auch dynamisch erstellen und dabei weiterhin denselben „ ParticleSystem “ und dasselbe Bildpartikel verwenden
for (var i = 0; i < 8; i++) {
let obj = emitterComp.createObject(root)
obj.x = x
obj.y = y
obj.targetX = Math.random() * 240 - 120 + obj.x
obj.targetY = Math.random() * 240 - 120 + obj.y
obj.life = Math.round(Math.random() * 2400) + 200
obj.emitRate = Math.round(Math.random() * 32) + 32
obj.go()
}Beachten Sie, dass dieser Effekt – ein Schwarm fliegender Regenbogenspeere – besser mit „ TrailEmitter “ umgesetzt werden sollte. In diesem Beispiel wird er nur mit dynamischen Emittern realisiert, um das Konzept einfacher zu veranschaulichen.
„Multiple Painters“ zeigt, wie man die Malreihenfolge einzelner Partikel steuert. Während die Malreihenfolge von Partikeln innerhalb eines „ImagePainter“ nicht streng definiert ist, folgen „ ImageParticle “-Objekte den normalen Z-Reihenfolge-Regeln für Qt Quick Elemente. In diesem Beispiel können Sie das Innere der Partikel über die schwarzen Ränder hinaus malen, indem Sie ein Paar „ImageParticles“ verwenden, von denen jedes unterschiedliche Teile desselben logischen Partikels malt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.