Pygame 混音器音乐(多首音乐曲目)
Pygame Mixer music (multiple music tracks)
我有一个非常简单的问题,但令人惊讶的是没有找到重复的问题。
我的游戏有 2 个音乐曲目,我想在第一首音乐自然用完之前切换到其他音乐。
mixer.music.load('music.mp3')
mixer.music.queue("music_phase2.mp3")
mixer.music.play(1, 0.0, 3000)
通常我可以使用 music.queue 转到下一首音乐曲目。但我希望第一首音乐在特定事件(如计时器或计数器)后停止并立即开始下一首曲目。
我想过类似的方法,但没有用。
(我需要提到的是,在我的程序中,我想在 while 循环中加载音乐,所以这可能会导致问题。)
这部分代码处理音乐。计数器达到 10 后,第一首音乐会停止。
但是第二首音乐没有开始播放(只是沉默)。
from pygame import mixer
pygame.mixer.init()
running = True
mixer.music.load('music.mp3')
mixer.music.play(1, 0.0, 3000)
# main loop
while running:
if logic.counter > 10:
mixer.music.stop()
mixer.music.unload()
mixer.music.load('music_phase2.mp3')
mixer.music.play(1, 0.0, 3000)
#code doesnt end here but the rest shouldnt influence the music
我发现了你的错误。
您正在做:
while running:
if logic.counter > 10:
mixer.music.stop()
mixer.music.unload()
mixer.music.load('music_phase2.mp3')
mixer.music.play(1, 0.0, 3000)
问题是,logic.counter
一直在增加!我没有在代码中的任何地方看到任何应该阻止 logic.counter
增加的标志或东西!
意思是一旦logic.counter
达到11,就进入if
块。 但是,它会在12时进入if
,重新加载音乐。一次又一次。永远。您需要将其更改为:
if logic.counter == 10:
所以它只会卸载第一首音乐并加载第二首音乐。
我有一个非常简单的问题,但令人惊讶的是没有找到重复的问题。
我的游戏有 2 个音乐曲目,我想在第一首音乐自然用完之前切换到其他音乐。
mixer.music.load('music.mp3')
mixer.music.queue("music_phase2.mp3")
mixer.music.play(1, 0.0, 3000)
通常我可以使用 music.queue 转到下一首音乐曲目。但我希望第一首音乐在特定事件(如计时器或计数器)后停止并立即开始下一首曲目。
我想过类似的方法,但没有用。 (我需要提到的是,在我的程序中,我想在 while 循环中加载音乐,所以这可能会导致问题。) 这部分代码处理音乐。计数器达到 10 后,第一首音乐会停止。 但是第二首音乐没有开始播放(只是沉默)。
from pygame import mixer
pygame.mixer.init()
running = True
mixer.music.load('music.mp3')
mixer.music.play(1, 0.0, 3000)
# main loop
while running:
if logic.counter > 10:
mixer.music.stop()
mixer.music.unload()
mixer.music.load('music_phase2.mp3')
mixer.music.play(1, 0.0, 3000)
#code doesnt end here but the rest shouldnt influence the music
我发现了你的错误。 您正在做:
while running:
if logic.counter > 10:
mixer.music.stop()
mixer.music.unload()
mixer.music.load('music_phase2.mp3')
mixer.music.play(1, 0.0, 3000)
问题是,logic.counter
一直在增加!我没有在代码中的任何地方看到任何应该阻止 logic.counter
增加的标志或东西!
意思是一旦logic.counter
达到11,就进入if
块。 但是,它会在12时进入if
,重新加载音乐。一次又一次。永远。您需要将其更改为:
if logic.counter == 10:
所以它只会卸载第一首音乐并加载第二首音乐。