以kivy预加载声音

时间:2016-07-03 03:55:44

标签: python audio kivy

我有一个基于kivy的游戏应该播放一些声音FX。声音对象加载如下:

self.boombox = {'moved': SoundLoader.load('dshoof.wav'),
                'attacked': SoundLoader.load('dspunch.wav')}

并在适当的时候播放:

self.parent.boombox['attacked'].play()

它主要起作用,但是第一次播放任何特定声音时,它会滞后约半秒钟。我想这是将WAV从磁盘加载到内存所需的时间。有没有办法确保在初始化过程中加载声音,而不是以懒惰的方式加载? 在基于Linux的PC(非Android)上观察到此行为,如果这有任何相关性的话。

1 个答案:

答案 0 :(得分:1)

事实证明,它可以被黑客攻击。我只需要将播放器明确地设置为文件的开头:

self.boombox = {'moved': SoundLoader.load('dshoof.wav'),
                'attacked': SoundLoader.load('dspunch.wav')}
for sound in self.boombox.keys():
    self.boombox[sound].seek(0)

无论如何,这样的事情都会发生,它对声音没有任何改变。但是,它强制声音提供程序立即读取文件,而不是等到它被调用。当然,这可以在级别加载期间轻松完成,而不是搞乱游戏玩法。