Android Python Kivy:一次播放多次声音

Android Python Kivy:一次播放多次声音,android,python,audio,kivy,Android,Python,Audio,Kivy,我正在使用Python Kivy进行Android游戏。我想在一个活动中播放一个声音 sound = SoundLoader.load("sound.wav") def onEvent(): sound.play() ,它是有效的。但现在的问题是:一个事件当然可以,在我的情况下,在最后一个事件的声音播放完毕之前,会再次发生。由于声音是基于播放/暂停的想法,我一次播放同一物体的多个声音时遇到了问题。首先可以这样解决: onEvent(): SoundLoader.load("so

我正在使用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中)。

创建声音对象字典,并在具有这些声音的对象的构造函数中一次加载所有声音对象。当您想要播放特定的声音时,请通过地图对象中的固定时间访问并播放。ie sound_dict['hit'].play(),其中'hit'是键,值是SoundLoader.load(“hit.wav”)或sound object,游戏开始前必须加载数据的情况并不少见,因此在游戏开始时进行所有声音对象的初始加载是有意义的。如果我没有弄错的话,这将产生与我的第一种方法相同的效果。时钟对象更适合用于此case@FIns ?! 我想播放声音。问题是,我不能一次多次播放一个声音。如果这是唯一的解决方案。我的意思是,它实际上不利于记忆,但它应该能工作。。