diff --git a/src/core/ParticleSystemStar.qml b/src/core/ParticleSystemStar.qml index e7754b876..7ccc7eb43 100644 --- a/src/core/ParticleSystemStar.qml +++ b/src/core/ParticleSystemStar.qml @@ -1,74 +1,74 @@ /* GCompris - ParticleSystemStar.qml * * Copyright (C) 2014 Bruno Coudoin * * Authors: * Bruno Coudoin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import QtQuick 2.6 import QtQuick.Particles 2.0 import GCompris 1.0 /** * A ParticleSystem component using star image particles. * @ingroup components * * Used for click effects. * * Because of problems on some Android devices leading to crashes must be * used via the wrapper @ref ParticleSystemStarLoader. * * @inherit QtQuick.ParticleSystem * @sa ParticleSystemStarLoader */ ParticleSystem { id: particles anchors.fill: parent + running: false /// @cond INTERNAL_DOCS property alias emitter: clickedEmitter property alias clip: imageParticle.clip - /// @endcond Emitter { id: clickedEmitter anchors.fill: parent emitRate: 20 lifeSpan: 800 lifeSpanVariation: 400 sizeVariation: 12 size: 24 * ApplicationInfo.ratio system: particles velocity: PointDirection {xVariation: 100; yVariation: 100;} acceleration: PointDirection {xVariation: 50; yVariation: 50;} velocityFromMovement: 50 enabled: false } ImageParticle { id: imageParticle source: "qrc:/gcompris/src/core/resource/star.png" anchors.fill: parent color: "white" blueVariation: 0.5 greenVariation: 0.5 redVariation: 0.5 clip: true smooth: false autoRotation: true } } diff --git a/src/core/ParticleSystemStarLoader.qml b/src/core/ParticleSystemStarLoader.qml index 24e6b763d..26689d827 100644 --- a/src/core/ParticleSystemStarLoader.qml +++ b/src/core/ParticleSystemStarLoader.qml @@ -1,50 +1,60 @@ /* GCompris - ParticleSystemStarLoader.qml * * Copyright (C) 2014 Bruno Coudoin * * Authors: * Bruno Coudoin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import QtQuick 2.6 import GCompris 1.0 /** * A QML loader that wraps ParticleSystemStar. * @ingroup components * * Wrapper loading/activating a @ref ParticleSystemStarLoader only if * the Android systems supports fragment shaders according to * ApplicationInfo.hasShader. * * @inherit QtQuick.Loader * @sa ParticleSystemStar ApplicationInfo.hasShader */ Loader { anchors.fill: parent active: ApplicationInfo.hasShader /** * Emits count particles from the particle emitter immediately. * * Cf. Emitter.burst */ function burst(val) { - if(active) + if(active) { + item.start() item.emitter.burst(val) + stopParticleSystem.restart() + } + } + + Timer { + id: stopParticleSystem + interval: item.emitter.lifeSpan + item.emitter.lifeSpanVariation + repeat: false + onTriggered: item.stop() } onLoaded: item.clip = clip source: "ParticleSystemStar.qml" }