Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame:存储和加载不同的背景音乐_Python_Pygame_Background Music - Fatal编程技术网

Python pygame:存储和加载不同的背景音乐

Python pygame:存储和加载不同的背景音乐,python,pygame,background-music,Python,Pygame,Background Music,有一个主屏幕和一个暂停屏幕的游戏。我希望有一个不同的音乐为每个屏幕播放,从那里他们停止了以前。以下是我的代码的相关部分: 运行时: 如果Options.want\u暂停: 如果load_count==0且Options.want_Music:#单击按钮切换屏幕将load_count重置为0 mpos=pygame.mixer.music.get#u pos()#从主窗口获取音乐的位置 music=pygame.mixer.music.load('Pause music.mp3') pygame.

有一个主屏幕和一个暂停屏幕的游戏。我希望有一个不同的音乐为每个屏幕播放,从那里他们停止了以前。以下是我的代码的相关部分:

运行时:
如果Options.want\u暂停:
如果load_count==0且Options.want_Music:#单击按钮切换屏幕将load_count重置为0
mpos=pygame.mixer.music.get#u pos()#从主窗口获取音乐的位置
music=pygame.mixer.music.load('Pause music.mp3')
pygame.mixer.music.set_pos(ppos/1000)#从以前的音乐位置播放
pygame.mixer.music.play(-1)
装载计数=1
暂停窗口(窗口宽度、窗口高度、宽度、高度)
其他:
如果load_count==0,并且Options.want_Music:
ppos=pygame.mixer.music.get_pos()
music=pygame.mixer.music.load('Main music.mp3')
try:#从第一次开始,然后定义MPO
pygame.mixer.music.set_pos(mpos/1000)
除名称错误外:
pygame.mixer.music.play(-1)
pygame.mixer.music.play(-1)
装载计数=1
设置方向(当前块、宽度、高度)
游戏窗口(游戏宽度、游戏高度、宽度、高度、编号)
#等
如果我不想继续播放音乐,只想从头开始(即,如果我去掉get_pos和set_pos行),它可以正常工作,但上面给出了以下错误:

回溯(最近一次呼叫最后一次): 文件“C:/Vijay Stuff/Coding Stuff/pycharm projects/Summer projects 2020/Tetris/Tetris 1.5.2.py”,第462行,在 pygame.mixer.music.set_pos(mpos/1000) pygame.error:此编解码器不支持设置位置

我还尝试使用pygame.mixer.music.play(-1,mpos/1000)(另一个也是如此),尽管这不会给出错误,但它不能正常工作。基本上,只有当我快速进入另一个屏幕退出时,它才会起作用,这当然是毫无意义的。有解决办法吗


谢谢你的帮助:)

编辑:我找到了答案。您可以创建两个单独的通道:

main_channel = pygame.mixer.Channel(0)
pause_channel = pygame.mixer.Channel(1)
将不同的音乐加载到每个音乐中

main_channel.play(pygame.mixer.Sound(mymusic1), loops=-1, fade_ms=5000)
pause_channel.play(pygame.mixer.Sound(mymusic2), loops=-1, fade_ms=5000)
暂停不需要的一个

pause_channel.pause()
并在必要时调用unpause()/pause()