music.fadeout()
に問題があります。私が理解しているように、音楽はフェードアウト後に停止されます。なぜ、以下のコードでは、フェードアウト中にサウンドを再生できますが、後で再生することはできませんか?サウンドはフェードアウト後にミックスされています。 mixer.get_busy()
はTrueを返します。フェードアウト完了後にmusic.fadeout()がサウンドをブロックするように見える
.fadeout()
の代わりにmusic.stop()
を使用すると、音楽が停止した後でサウンドが再生されます。
私はここで何が欠けていますか?私は(あなたの答えで覆われていたとは思わない
if not game_over:
if music_on:
pygame.mixer.music.fadeout(3000)
fadeout_start = ticks
#pygame.mixer.music.stop()
if fadeout_start + 3000 < ticks:
pygame.mixer.music.stop()
music_on = False
EDIT
私の特定の問題テッドが、私はそれを解決するためにこれをやった一方
if not game_over:
if music_on:
pygame.mixer.music.fadeout(3000)
#pygame.mixer.music.stop()
music_on = False
私は音楽(K_1)を起動し、それを停止して(K_2)、次にサウンドオブジェクト(K_5)を再生すると、 、mixer.get_busyはTrueで、サウンドは聞こえるように再生されます。しかし、上記を繰り返してもK_2を使わずに音楽(K_3)をフェードアウトすると、mixer.get_busyはTrueですが、可聴音はありません。
Pydocsは、単純なmusic.stop()と同じ方法でフェードアウト後に音楽が停止することを示唆しているようです。
import pygame
from pygame.locals import *
import sys
pygame.init()
pygame.mixer.init()
pygame.display.set_mode((200,200))
pygame.display.set_caption("Sound tester")
clock = pygame.time.Clock()
pygame.mixer.music.load("theme.mid")
sound = pygame.mixer.Sound("missile.wav")
playing = pygame.mixer.get_busy()
while True:
clock.tick(30)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYUP:
if event.key == pygame.K_1:
pygame.mixer.music.play(-1)
elif event.key == K_2:
pygame.mixer.music.stop()
elif event.key == K_3:
pygame.mixer.music.fadeout(2000)
elif event.key == K_4:
pygame.mixer.music.stop()
elif event.key == K_5:
sound.play(-1)
elif event.key == K_6:
pygame.mixer.stop()
music_playing = pygame.mixer.music.get_busy()
if music_playing:
print("music playing")
else:
print("no music")
sound_playing = pygame.mixer.get_busy()
if sound_playing:
print("Sound playing")
else:
print("no sound")
フェードアウトは、フェードアウトの後、 'pygame.mixer.music.stop()'のような音楽を止めます。申し訳ありませんが、あなたの問題を再現することはできません。私が音楽をフェードアウトするとき、私はまだ音楽が消えている間に音を止めて止めることができます。 –
ああ、drat。とにかく返信をありがとうございます。 –
音楽とサウンドファイルが何かあなたが共有したいと思っているのであれば、それらに問題があるかどうかをテストできますか? –