Python Kivy:一次播放多个声音
Python Kivy: Play sound multiple times at once
我正在使用 Python Kivy 进行 Android 游戏。我想在活动中播放声音
sound = SoundLoader.load("sound.wav")
def onEvent():
sound.play()
,它有效。但现在的问题是:事件当然可以,在我的情况下,会在上一个事件的声音播放完毕之前再次发生。由于声音是基于 play/pause 的想法,所以我在一次播放同一对象的多个声音时遇到了问题。首先可以这样解决:
onEvent():
SoundLoader.load("sound.wav").play()
因为这会一直创建一个新对象,所以能够在另一个事件播放声音的同时播放它。但是使用这种方法的问题很明显,因为每次事件发生都必须加载声音,所以会延迟播放。
有没有更有用的方法来做到这一点?
{ 如果您不明白我在说什么,或者只是没有看到问题,请随时提问}
您可以通过加载多个声音实例来解决此问题。
例如
sounds = [SoundLoader.load("sound.wav") for _ in range(10)]
index = 0
然后
def play():
sounds[index].play()
index = (index + 1) % len(sounds)
您加载的声音越多,您可以同时播放的实例就越多(在此示例中为 10)。
我正在使用 Python Kivy 进行 Android 游戏。我想在活动中播放声音
sound = SoundLoader.load("sound.wav")
def onEvent():
sound.play()
,它有效。但现在的问题是:事件当然可以,在我的情况下,会在上一个事件的声音播放完毕之前再次发生。由于声音是基于 play/pause 的想法,所以我在一次播放同一对象的多个声音时遇到了问题。首先可以这样解决:
onEvent():
SoundLoader.load("sound.wav").play()
因为这会一直创建一个新对象,所以能够在另一个事件播放声音的同时播放它。但是使用这种方法的问题很明显,因为每次事件发生都必须加载声音,所以会延迟播放。
有没有更有用的方法来做到这一点?
{ 如果您不明白我在说什么,或者只是没有看到问题,请随时提问}
您可以通过加载多个声音实例来解决此问题。 例如
sounds = [SoundLoader.load("sound.wav") for _ in range(10)]
index = 0
然后
def play():
sounds[index].play()
index = (index + 1) % len(sounds)
您加载的声音越多,您可以同时播放的实例就越多(在此示例中为 10)。