如何在PyGame中同时播放多首歌曲?

5 投票
2 回答
9805 浏览
提问于 2025-04-16 17:38

我现在已经让它运行起来了,但我想问有没有更好的方法来处理时间延迟的问题。因为我希望有两个不同的脚本同时运行,并且希望它们按照特定的顺序播放,同时我的图片也要按顺序出现。这些图片的脚本很长,而且也有时间延迟。

#!/usr/bin/env python
import pygame
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
print "hey I finaly got this working!"
sounda= pygame.mixer.Sound('D:/Users/John/Music/Music/FUN.OGG')
soundb= pygame.mixer.Sound('D:/Users/John/Music/Music/Still Alive.OGG')
soundc= pygame.mixer.Sound('D:/Users/John/Music/Music/turret.OGG')
soundd= pygame.mixer.Sound('D:/Users/John/Music/Music/portalend.OGG')
sounda.play()
pygame.time.delay(11000)
soundb.play()<P>
pygame.time.delay(180000)
soundc.play()
pygame.time.delay(90000)
soundd.play()

2 个回答

0

下面这个脚本会加载四个声音文件(从sound_0.wav到sound_3.wav),并播放它们。

sounds = []
for i in range(4):
    sound = pygame.mixer.Sound('sound_%d.wav'%i)
    sound.play()
    sounds.append(sound)
6

你有没有查看过 pygame.Mixer 模块?默认情况下,你可以同时播放8首歌曲。

如果你使用 pygame.mixer.music,那么你一次只能播放一首歌。

如果你使用 pygame.mixer.sound,你就可以同时播放最多8首歌曲。

音乐模块是用来流式播放音乐的(它不会一次性加载整个音乐文件)。

声音模块是用来在游戏中播放不同的声音的(声音会完全加载到内存中)。

所以,在你的例子中,如果你想同时播放4首歌曲:

import pygame
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
print "hey I finaly got this working!"
sounds = []
sounds.append(pygame.mixer.Sound('D:/Users/John/Music/Music/FUN.OGG'))
sounds.append(pygame.mixer.Sound('D:/Users/John/Music/Music/Still Alive.OGG'))
sounds.append(pygame.mixer.Sound('D:/Users/John/Music/Music/turret.OGG'))
sounds.append(pygame.mixer.Sound('D:/Users/John/Music/Music/portalend.OGG'))
for sound in sounds:
    sound.play()

撰写回答