ボタンが選択されているかどうかをチェックするボタン クラスを作成しました (マウスがボタンの上に置かれている場合)。ボタンを選択、選択解除、またはクリックすると、wav ファイルが再生されます。問題は、サウンドの再生とボタンの状態の変化の間に大きな遅延があることです。プログラムはすべてのフレームをチェックして、サウンドを再生するための条件が満たされているかどうかを確認する必要がありますが、fps は問題ではないようです (60 fps と 600 fps で同じ遅延が発生します)。のバッファ値を減らしてみましたpygame.mixer.init()
が、それでも違いはありません。
サウンド ファイル:
buttonSoundSelect = pygame.mixer.Sound(os.path.join(soundPath, "button1.wav"))
buttonSoundUnselect = pygame.mixer.Sound(os.path.join(soundPath, "button2.wav"))
buttonSoundClick = pygame.mixer.Sound(os.path.join(soundPath, "button3.wav"))
buttonSounds = [buttonSoundSelect, buttonSoundUnselect, buttonSoundClick]
オブジェクトの作成:
playButton = button(textInactive = "Play", font = mainFont, sounds = buttonSounds, command = playAction)
ボタンが選択されているかどうかを確認するボタン クラスのコード (これは、.display
フレームごとに呼び出されるメソッド内にあります):
if pygame.mouse.get_pos()[0] >= self.x and pygame.mouse.get_pos()[0] <= self.x + self.width and \
pygame.mouse.get_pos()[1] >= self.y and pygame.mouse.get_pos()[1] <= self.y + self.height:
self.surfaceActive.blit(self.textSurfaceActive, (self.width / 2 - self.font.size(self.textActive)[0] / 2,
self.height / 2 - self.font.size(self.textActive)[1] / 2))
self.surface.blit(self.surfaceActive, (self.x, self.y))
if self.selected == False:
if self.sounds != None:
self.sounds[0].stop()
self.sounds[1].stop()
self.sounds[2].stop()
self.sounds[0].play()
self.selected = True
else:
self.surfaceInactive.blit(self.textSurfaceInactive, (self.width / 2 - self.font.size(self.textInactive)[0] / 2,
self.height / 2 - self.font.size(self.textInactive)[1] / 2))
self.surface.blit(self.surfaceInactive, (self.x, self.y))
if self.selected == True:
if self.sounds != None:
self.sounds[0].stop()
self.sounds[1].stop()
self.sounds[2].stop()
self.sounds[1].play()
self.selected = False
ボタンがクリックされたかどうかをチェックするボタン クラスのコード (これは.clickEvent
、マウスの左ボタンがクリックされたときに呼び出されるメソッド内にあります):
if self.command != None:
if pygame.mouse.get_pos()[0] >= self.x and pygame.mouse.get_pos()[0] <= self.x + self.width and \
pygame.mouse.get_pos()[1] >= self.y and pygame.mouse.get_pos()[1] <= self.y + self.height:
if self.sounds != None:
self.sounds[2].play()
self.command()
だから私の質問は、なぜ長い遅延があるのですか?それを短くすることはできますか?