| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Copyright (C) 2016 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
- import QtQuick
- import QtMultimedia
- Item {
- id: multiSoundEffect
- property url source
- property int maxInstances: 2
- property var __cachedInstances
- property int __currentIndex: 0
- property real soundVolume: 1.0
- signal playingChanged(url source, bool playing)
- Component {
- id: soundEffectComp
- SoundEffect {
- source: multiSoundEffect.source
- onPlayingChanged: multiSoundEffect.playingChanged(source, playing)
- }
- }
- onSourceChanged: {
- __cachedInstances = []
- __currentIndex = 0
- if (source != Qt.resolvedUrl("")) {
- var i
- for (i = 0; i < maxInstances; i++) {
- var soundEffect = soundEffectComp.createObject(multiSoundEffect)
- if (soundEffect === null)
- return
- __cachedInstances.push(soundEffect)
- }
- }
- }
- function play() {
- if (__cachedInstances === undefined || __cachedInstances.length === 0)
- return
- if (__cachedInstances[__currentIndex].playing) {
- __cachedInstances[__currentIndex].stop()
- __currentIndex = (__currentIndex + 1) % __cachedInstances.length
- }
- __cachedInstances[__currentIndex].volume = soundVolume
- __cachedInstances[__currentIndex].play()
- }
- }
|