我正在将Python Kivy用于Android游戏。我想在事件上播放声音

sound = SoundLoader.load("sound.wav")
def onEvent():
    sound.play()

,并且有效。但是现在的问题是:当然可以发生一个事件,在我看来,从最后一个事件开始播放声音之前,事件将再次发生。由于声音是基于播放/暂停的想法,因此在一次播放同一对象的多个声音时遇到了问题。首先可以这样解决:
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)。

关于android - Python Kivy:一次播放多次声音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32976349/

10-16 11:36