qml写一个好看的粒子特效
时间: 2023-11-07 19:03:32 浏览: 87
好的,下面是一个简单的粒子特效的 QML 代码示例,你可以根据需要进行调整:
```qml
import QtQuick 2.15
Item {
id: root
width: 400
height: 400
anchors.centerIn: parent
Rectangle {
id: particle
width: 10
height: 10
color: "#ff0000"
radius: width / 2
opacity: 0.8
visible: false
property real vx: 0
property real vy: 0
property real life: 0
property real maxLife: 100
property real gravity: 0.5
function reset(x, y) {
particle.x = x
particle.y = y
particle.vx = Math.random() * 6 - 3
particle.vy = Math.random() * -10 - 5
particle.life = particle.maxLife
particle.visible = true
}
function update() {
particle.x += particle.vx
particle.y += particle.vy
particle.vy += particle.gravity
particle.opacity = particle.life / particle.maxLife
particle.life--
if (particle.life <= 0) {
particle.visible = false
}
}
}
Timer {
id: timer
interval: 16
running: true
repeat: true
onTriggered: {
for (var i = 0; i < 10; i++) {
var p = particle.createObject(root)
p.reset(root.width / 2, root.height / 2)
}
for (var i = 0; i < root.children.length; i++) {
var child = root.children[i]
if (child.visible) {
child.update()
}
}
}
}
}
```
这个粒子特效使用了一个定时器,在定时器运行时会在屏幕中央随机产生 10 个粒子。每个粒子有一个 vx 和 vy 属性,分别表示 x 和 y 方向的速度。在每次定时器触发时,更新所有可见的粒子的位置和透明度,并将其生命周期减 1,如果生命周期小于等于 0,则将其隐藏。
你可以根据需要调整粒子的颜色、大小、数量、速度等属性,以实现你想要的效果。
阅读全文