繁体   English   中英

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 到 go 到下一首音乐曲目。 但我希望第一首音乐在特定事件(如计时器或计数器)后停止并立即开始下一首曲目。

我想到了这样的事情,但没有用。 (我需要指出的是,在我的程序中,我想在 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:

所以它只会卸载第一首音乐并加载第二首音乐。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM