2016-07-03 65 views
2

我有一個基於kivy的遊戲,應該可以播放一些聲音效果。聲音對象被加載這樣的:在kivy中預加載聲音

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

,發揮適當的時候是這樣的:

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

它主要工作,但第一次任何特定的聲音播放時,它滯後約半秒鐘。我想這是從磁盤加載WAV到內存所需的時間。有什麼辦法可以確保聲音在初始化過程中被加載,而不是以一種懶惰的方式加載嗎? 在基於Linux的PC(非Android)上觀察到此行爲,如果這與任何相關性相關。

+0

在課程級別而不是'__init__'方法中執行 –

+0

@JoranBeasley請你解釋一下(至少爲什麼)? – KeyWeeUsr

回答

1

它可以被破解,因爲它結果。所有我需要的是設置玩家明確的文件的開頭:

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

由於類似的東西會一直做無論如何,它的變化一無所知的聲音。但是,它迫使聲音提供者立即閱讀文件,而不是等到它被調用。當然,這可以在水平加載過程中輕鬆完成,而不是搞亂遊戲。