python - Pygame Mixer 音乐(多个音乐曲目)
问题描述
我有一个非常简单的问题,但令人惊讶的是没有找到重复的问题。
我的游戏有 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:
所以它只会卸载第一首音乐并加载第二首音乐一次。
推荐阅读
- python-3.x - 如何从 Matplotlib 渐变中选择颜色
- angular - Angular Universal 使用为窗口分配功能
- java - MySQL 检查列中是否已有内容
- android - 使用深色主题时,MaterialDatePicker 和 TimePickerDialog 的样式不同
- python - Python pandas:获取组的第一个值
- ruby-on-rails - 为什么 RailsAdmin 加载我的编辑视图这么慢?
- continuous-integration - 如何在 Gitlab 上运行的 CI 作业中仅重试失败的测试?
- amazon-web-services - AWS API Gateway - 为 CloudWatch Log 启用 $input
- swift - Swift ui macos @Published nil 或 Int
- python - 根据给定的索引对列表连接二维数组行的有效方法