如何从我的 window 的中心生成粒子? (qml)

How to generate particles from the center of my window? (qml)

我在 qml 中使用 粒子系统 ,但我希望我的粒子 来自我的矩形。

以上我可以告诉你已经完成了,但我不喜欢的是粒子出现无方向性
我想让粒子从中心均匀地分布到两端,但我不知道该怎么做。
如果有人我可以提出一些想法。
我附上我的代码。

接受解决我问题的更正、想法或建议。

import QtQuick 2.0
import QtQuick.Particles 2.0

Rectangle {
    id: bg
    width: 360
    height: 360
    color: "black"

    ParticleSystem {
        id: particleSys
    }

    Emitter{
        id: emitter
        anchors.centerIn: parent
        height: 14; width: 16
        system: particleSys
        emitRate: 80
        lifeSpan: 4000
        lifeSpanVariation: 500
        maximumEmitted: 1000
        size: 5
        endSize: 40           

        velocity: TargetDirection{     
            targetX: 0; targetY: 0
            targetVariation: 360
            magnitude: 250
        }
    }

    ImageParticle{
        source: "images/blueBlip.png"      //My image
        system: particleSys
    }
} 

谢谢。

我就是提问的人
我找到了解决我的问题的方法。

要发射有序粒子,您可以使用 burst() 方法

此事件允许我们从发射器发射一定数量的粒子。您可以根据需要对其进行操作。

我是通过 Timmer 实现的:

Timer{
    interval: 500; running: true; repeat: true
    onTriggered: particles.burst(particles.emitRate)
}

代码如下所示:

import QtQuick 2.0
import QtQuick.Particles 2.0

Rectangle {
    id: bg
    width: 360
    height: 360
    color: "black"

    ParticleSystem {
        id: particleSys
    }

    Emitter{
        id: particles
        anchors.centerIn: parent
        height: 14; width: 16
        system: particleSys
        emitRate: 80
        lifeSpan: 4000
        lifeSpanVariation: 500
        maximumEmitted: 1000
        size: 5
        endSize: 40           

        velocity: TargetDirection{     
            targetX: 0; targetY: 0
            targetVariation: 360
            magnitude: 250
        }

        Timer{
              interval: 500; running: true; repeat: true
              onTriggered: particles.burst(particles.emitRate)
        }
    }

    ImageParticle{
        source: "images/blueBlip.png"      //My image
        system: particleSys
    }
} 

如果有人知道更有效的方法或有人可以改进它...贡献您的答案。
谢谢

谢谢!

虽然你不需要计时器!您只需调用 particles.burst() 一次即可启动。每半秒调用一次可能会减慢速度;相反,您应该将发射器开始时间设置为 0。

import QtQuick 2.0
import QtQuick.Particles 2.0

Rectangle {
id: bg
width: 360
height: 360
color: "black"

   ParticleSystem {
       id: particleSys
   }

   Emitter{
       id: particles

       startTime: 0

       anchors.centerIn: parent
       height: 14; width: 16
       system: particleSys
       emitRate: 80
       lifeSpan: 4000
       lifeSpanVariation: 500
       maximumEmitted: 1000
       size: 5
       endSize: 40           

       velocity: TargetDirection{     
           targetX: 0; targetY: 0
           targetVariation: 360
           magnitude: 250
        }
    }

    ImageParticle {
        source: "images/blueBlip.png"      //My image
        system: particleSys
    }
} 

或者您可以在特定事件上调用 particles.burst(),例如 Component.onCompleted:

      Emitter{
      id: particles
      anchors.centerIn: parent
      height: 14; width: 16
      system: particleSys
      emitRate: 80
      lifeSpan: 4000
      lifeSpanVariation: 500
      maximumEmitted: 1000
      size: 80
      endSize: 100

      velocity: TargetDirection{
          targetX: 0; targetY: 0
          targetVariation: 360
          magnitude: 250
      }

      Component.onCompleted: {
          particles.burst(particles.emitRate)
      }
  }