Предварительная загрузка звука в киве
У меня есть основанная на киви игра, которая должна воспроизводить звук FX. Звуковые объекты загружаются так:
self.boombox = {'moved': SoundLoader.load('dshoof.wav'),
'attacked': SoundLoader.load('dspunch.wav')}
И играл, когда это уместно, как это:
self.parent.boombox['attacked'].play()
В основном это работает, но в первый раз, когда воспроизводится какой-либо конкретный звук, он отстает примерно на полсекунды. Я думаю, это время, которое требуется для загрузки WAV с диска в память. Есть ли способ убедиться, что звуки загружаются во время инициализации, а не ленивым образом, как кажется? Такое поведение наблюдается на ПК на базе Linux, не Android, если это имеет какое-либо отношение.
1 ответ
Как оказалось, его можно взломать. Все, что мне было нужно, это явно настроить проигрыватель на начало файла:
self.boombox = {'moved': SoundLoader.load('dshoof.wav'),
'attacked': SoundLoader.load('dspunch.wav')}
for sound in self.boombox.keys():
self.boombox[sound].seek(0)
Как бы то ни было, но это ничего не меняет в звуке. Тем не менее, это заставляет поставщика звука читать файл прямо сейчас, а не ждать, пока он не будет вызван. И, конечно же, это можно легко сделать во время загрузки уровня вместо того, чтобы возиться с игровым процессом.