具有不同图像的粒子.[QML]



我正在使用粒子系统。我的粒子从中心出来,但我希望不同的图像出来。
这些图像的文件路径存储在数组中。我发挥了一项函数来完成该安排并返回每个位置中的一切。
返回的是将要发送到 imageParticle的 source 的路径。

问题是,如果您滚动整个数组,但仅返回最后一个图像的路径,从逻辑上讲,我会得到一个图像,而不是存储在数组中的二十个图像。
有人可以帮我吗?
帮助和建议被公认。

这是我的代码:

import QtQuick 2.0
import QtQuick.Particles 2.0    
Rectangle {
    id: bg
    width: 1920         //360
    height: 1080            //360
    color: "black"
    ParticleSystem {
        id: particleSys
    }            
    Emitter{
        id: particles
        anchors.centerIn: parent
        height: 1; width: 1
        system: particleSys
        emitRate: 30
        lifeSpan: 4000
        lifeSpanVariation: 500
        maximumEmitted: 1000
        size: 5
        endSize: 200                      
        velocity: TargetDirection{      
            targetX: 100; targetY: 100
            targetVariation: 360
            magnitude: 250
        }            
    }         
    property var picturesList: [
        "images/Image1.png", "images/Image2.png", "images/Image3.png", "images/Image4.png", "images/Image5.png", "images/Image6.png", "images/Image7.png", "images/Image8.png", "images/Image9.png", "images/Image10.png",
        "images/Image11.png", "images/Image12.png", "images/Image13.png", "images/Image14.png", "images/Image15.png", "images/Image16.png", "images/Image17.png", "images/Image18.png", "images/Image19.png", "images/Image20.png"
    ]
    function getImage(arr){
        var flag = "";
        for(var i = 0; i < arr.length ; i++){                    
            flag = arr[i];
            console.log("Image: " + arr[i] + " flag: " + flag )   //To check if array is traversing.
        }    
        return flag;
    }
    ImageParticle{            
        property var link: getImage(picturesList)
        source: link
        system: particleSys
    }
    // To check which image is returned.
    MouseArea {  
        anchors.fill: parent
        onClicked: {
            console.log(getImage(picturesList))
        }
    }             
}

我是问上一个问题的人,我在这里带来答案。
我非常清楚,可以有几种解决问题的方法,如果您知道另一种方式,我邀请您分享它。
欢迎有关响应的建议。

在这里我共享代码:

import QtQuick 2.0
import QtQuick.Particles 2.0
Rectangle {
    id: bg
    width: 1920         
    height: 1080        
    color: "black"
    ParticleSystem {
        id: particleSys
    }           
    Emitter{
        id: particles
        anchors.centerIn: parent
        height: 1; width: 1
        system: particleSys
        emitRate: 30
        lifeSpan: 4000
        lifeSpanVariation: 500
        maximumEmitted: 1000
        size: 5
        endSize: 200                          
        velocity: TargetDirection{      //4
            targetX: 100; targetY: 100
            targetVariation: 360
            magnitude: 250
        }            
    }         
    property var picturesList: [
        "images/Image1.png", "images/Image2.png", "images/Image3.png", "images/Image4.png", "images/Image5.png", "images/Image6.png", "images/Image7.png", "images/Image8.png", "images/Image9.png", "images/Image10.png",
        "images/Image11.png", "images/Image12.png", "images/Image13.png", "images/Image14.png", "images/Image15.png", "images/Image16.png", "images/Image17.png", "images/Image18.png", "images/Image19.png", "images/Image20.png"
    ]          
    ItemParticle {
        id: particle
        system: particleSys
        delegate: itemDelegate
    }
    Component {
        id: itemDelegate
        Rectangle {
            id: container
            width: 26*Math.ceil(Math.random()*3); height: width
            color: 'white'
            Image {
                anchors.fill: parent
                anchors.margins: 3
                source: 'images/Image'+Math.ceil(Math.random()*20)+'.png'            
            }
        }
    }            
} 

您可以看到,文件夹中的所有图像将被输出。
我只是简单地将" ImageParticle"更改为" ItemParticle" 和i add a " component" as as所需图像的委托
因此,我们不会使用数组(在上一个代码中省略它(,因为现在只有图像的路径被串联并随机数(选择图像(。
希望您为他们服务,如果您有更好的实施,请告诉他们。

最新更新