Qt Quick Exemples de particules - Émetteurs
Il s'agit d'une collection d'exemples utilisant les émetteurs dans le système de particules QML.

Il s'agit d'une collection de petits exemples QML relatifs à l'utilisation des Emitters dans le système de particules. Chaque exemple est un petit fichier QML mettant l'accent sur un type ou une caractéristique particulière.
Velocity from motion donne l'effet d'un fort mouvement de particules en déplaçant principalement les émetteurs :
Emitter { id: trailsNormal system: sys1 emitRate: 500 lifeSpan: 2000 y: mouseArea.pressed ? mouseArea.mouseY : circle.cy x: mouseArea.pressed ? mouseArea.mouseX : circle.cx velocity: PointDirection {xVariation: 4; yVariation: 4;} acceleration: PointDirection {xVariation: 10; yVariation: 10;} velocityFromMovement: 8 size: 8 sizeVariation: 4 }
Burst and pulse appelle les méthodes burst et pulse sur deux émetteurs identiques.
if (root.lastWasPulse) { burstEmitter.burst(500); root.lastWasPulse = false; } else { pulseEmitter.pulse(500); root.lastWasPulse = true; }
Notez que la méthode burst prend comme argument le nombre de particules à émettre et que la méthode pulse prend comme argument le nombre de millisecondes pendant lesquelles l'émission doit se faire. Cela donne un comportement légèrement différent, ce qui est facile à voir dans cet exemple.
L'émetteur personnalisé se connecte au signal emitParticles pour définir des valeurs arbitraires sur les données des particules lorsqu'elles sont émises ;
onEmitParticles: (particles) => { for (var i=0; i<particles.length; i++) { let particle = particles[i]; particle.startSize = Math.max(02,Math.min(492,Math.tan(particle.t/2)*24)); let theta = Math.floor(Math.random() * 6.0); particle.red = theta == 0 || theta == 1 || theta == 2 ? 0.2 : 1; particle.green = theta == 2 || theta == 3 || theta == 4 ? 0.2 : 1; particle.blue = theta == 4 || theta == 5 || theta == 0 ? 0.2 : 1; theta /= 6.0; theta *= 2.0*Math.PI; theta += sys.convert(sys.petalRotation);//Convert from degrees to radians particle.initialVX = sys.petalLength * Math.cos(theta); particle.initialVY = sys.petalLength * Math.sin(theta); particle.initialAX = particle.initialVX * -0.5; particle.initialAY = particle.initialVY * -0.5; } }
Ceci est utilisé pour émettre des particules incurvées en six rayons rotatifs.
EmitMask définit un masque d'image sur l'émetteur, pour émettre une forme arbitraire.
shape: MaskShape { source: "images/starfish_mask.png" }
Maximum émis n'émet pas plus d'un certain nombre de particules à la fois. Cet exemple permet de voir facilement ce qui se passe lorsque la limite est atteinte.
Forme et direction émet des particules à partir d'une ellipse non remplie, à l'aide d'un paramètre de forme et de direction. TargetDirection
shape: EllipseShape {fill: false} velocity: TargetDirection { targetX: root.width/2 targetY: root.height/2 proportionalMagnitude: true magnitude: 0.5 }
Cela envoie les particules vers le centre de l'ellipse à une vitesse proportionnelle, en conservant le contour de l'ellipse lorsqu'elles se déplacent vers le centre.
TrailEmitter utilise ce type pour ajouter des particules de fumée qui suivent les particules de feu dans la scène.
onEmitParticles: (particles) => { for (var i=0; i<particles.length; i++) { let particle = particles[i]; particle.startSize = Math.max(02,Math.min(492,Math.tan(particle.t/2)*24)); let theta = Math.floor(Math.random() * 6.0); particle.red = theta == 0 || theta == 1 || theta == 2 ? 0.2 : 1; particle.green = theta == 2 || theta == 3 || theta == 4 ? 0.2 : 1; particle.blue = theta == 4 || theta == 5 || theta == 0 ? 0.2 : 1; theta /= 6.0; theta *= 2.0*Math.PI; theta += sys.convert(sys.petalRotation);//Convert from degrees to radians particle.initialVX = sys.petalLength * Math.cos(theta); particle.initialVY = sys.petalLength * Math.sin(theta); particle.initialAX = particle.initialVX * -0.5; particle.initialAY = particle.initialVY * -0.5; } }
© 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.