Предварительная загрузка звука в киве

У меня есть основанная на киви игра, которая должна воспроизводить звук 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)

Как бы то ни было, но это ничего не меняет в звуке. Тем не менее, это заставляет поставщика звука читать файл прямо сейчас, а не ждать, пока он не будет вызван. И, конечно же, это можно легко сделать во время загрузки уровня вместо того, чтобы возиться с игровым процессом.

Другие вопросы по тегам