我遇到music.fadeout()
問題。據我瞭解,音樂將在淡出後停止。那爲什麼呢,下面的代碼是否允許在淡出期間播放聲音,但不能播放之後?在淡出之後,這些聲音混合在一起; mixer.get_busy()
返回True。music.fadeout()似乎會在完成淡出後屏蔽聲音
如果我用music.stop()
代替.fadeout()
音樂播放停止後播放聲音。
我在這裏錯過了什麼?
if not game_over:
if music_on:
pygame.mixer.music.fadeout(3000)
#pygame.mixer.music.stop()
music_on = False
在此期間我做這個來解決它:
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
編輯
我的具體問題特德,我不認爲在你的答案覆蓋(可能我只是密集)如下所示:
當我開始音樂(K_1),然後停止它(K_2),然後播放聲音對象(K_5) ,mixer.get_busy爲True,聲音可聽地播放。但是,如果我重複上述步驟但淡出音樂(K_3)而不是使用K_2停止,則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")
Fadeout會在淡出時間之後停止音樂,如'pygame.mixer.music.stop()'。我很抱歉,但我無法複製您的問題。當我淡出音樂時,我仍然可以播放並在音樂淡出時停止播放聲音。 –
啊,drat。無論如何,非常感謝你的答覆。 –
如果音樂和聲音文件是你願意分享的東西,也許我們可以測試它們是否存在問題? –