2016-07-03 10 views
2

私は、いくつかのサウンドFXを再生するはずのkivyベースのゲームを持っています。サウンドオブジェクトは、次のようにロードされます。kivyのプレロードサウンド

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

そして、適切な場合はいつでも、このような演奏:それは主に動作しますが、任意の特定のサウンドが再生されて初めて、それはおよそ0.5秒遅れ

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) 

、それは音については何も変わりません。ただし、サウンドプロバイダーは、呼び出されるまで待つのではなく、今すぐファイルを読み込まなければなりません。そして、もちろん、これはゲームプレイを混乱させるのではなく、レベルローディング中に簡単に行うことができます。