Initial commit
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
||||
// 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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user