我有一个基于kivy的游戏应该播放一些声音FX。声音对象加载如下:
self.boombox = {'moved': SoundLoader.load('dshoof.wav'),
'attacked': SoundLoader.load('dspunch.wav')}
并在适当的时候播放:
self.parent.boombox['attacked'].play()
它主要起作用,但是第一次播放任何特定声音时,它会滞后约半秒钟。我想这是将WAV从磁盘加载到内存所需的时间。有没有办法确保在初始化过程中加载声音,而不是以懒惰的方式加载? 在基于Linux的PC(非Android)上观察到此行为,如果这有任何相关性的话。
答案 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)
无论如何,这样的事情都会发生,它对声音没有任何改变。但是,它强制声音提供程序立即读取文件,而不是等到它被调用。当然,这可以在级别加载期间轻松完成,而不是搞乱游戏玩法。