使用Qt Quick Particle System粒子系统实现烟花效果

使用Qt Quick Particle System粒子系统实现烟花效果

参考网址: https://blog.csdn.net/yafeilinux/article/details/86530616


import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Particles 2.12

Window {
    visible: true
    width: 800
    height: 600
    title: qsTr("Hello World")
    color: "black";

    //粒子系统
    ParticleSystem{
        id:particles;
        anchors.fill: parent;
        ImageParticle{
            groups: ["stage1"];
            source: "qrc:///particleresources/star.png";
            alphaVariation: 0.4;
            colorVariation: 0.9;
        }
        Emitter{
            id: burstEmitter;
            x:400;
            y:480;
            group: "stage1";
            emitRate: 1;
            lifeSpan: 1500;
            size: 50; endSize: 10; sizeVariation: 30;
            acceleration: PointDirection{y:100}
            velocity: AngleDirection{angle: 270;magnitude: 400;angleVariation: 40; magnitudeVariation: 50;}
        }
        ImageParticle{
            groups: ["stage2"];
            source: "qrc:///particleresources/glowdot.png";
            //color: "white";
            color: "#33333333";
        }

        TrailEmitter{  //添加一个冒烟的小尾巴
            group: "stage2"; follow: "stage1";
            emitRatePerParticle: 100; lifeSpan: 2400;
            lifeSpanVariation: 400;
            acceleration: PointDirection{y: -60}
            velocity: AngleDirection{angle: 270; magnitude: 40; angleVariation: 22; magnitudeVariation: 5;}
            size: 9;endSize: 0;sizeVariation: 8;
        }
        //下面添加爆炸效果
        ImageParticle {
            id: imageParticle
            groups: ["stage3"]
            source: "qrc:///particleresources/star.png"
            alpha: 0
            colorVariation: 0.2
            entryEffect: ImageParticle.Scale
            rotation: 60
            rotationVariation: 30
            rotationVelocity: 45
            rotationVelocityVariation: 15
        }

        Emitter {
            id: burstEmitter2
            group: "stage3"
            emitRate: 4000; lifeSpan: 3000;
            size: 10; endSize: 5; sizeVariation:10
            enabled: false
            velocity: CumulativeDirection {
                AngleDirection {angleVariation: 360; magnitudeVariation: 80;}
                PointDirection {y: 20}
            }
            acceleration: PointDirection {y: 10 }
        }
        //使星在对应的点爆炸,需要进行一下特殊处理来获取前面粒子发射到空中的位置
        Affector {
            system: particles
            width: parent.width
            height: 10; y: 90
            once: true
            groups: "stage1"
            onAffectParticles: {
                for (var i=0; i<particles.length; i++) {
                    burstEmitter2.burst(300, particles[i].x, particles[i].y);
                    imageParticle.color = Qt.rgba(particles[i].red, particles[i].green, particles[i].blue, particles[i].alpha)
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值