我得到了这段代码:
a_0 = pygame.mixer.sound("a.mp3",)
a = pygame.mixer.music
b_0 = pygame.mixer.music.load("b.mp3")
b = pygame.mixer.music
c_0 = pygame.mixer.music.load("c.mp3",)
c = pygame.mixer.music
d_0 = pygame.mixer.music.load("d.mp3")
d = pygame.mixer.music
e_0 = pygame.mixer.music.load("e.mp3",)
e = pygame.mixer.music
当我想使用以下声音播放
d (that emans d.mp3)
时:d.play()
它只会播放列表中的最后一个声音,这意味着
e.mp3
而不是d.mp3
。我在这里做错了什么?
最佳答案
pygame.music.mixer.load()
不返回任何内容。因此,您不能将其分配给变量。它加载到混音器中,并准备播放。 Documentation
您需要具有要播放的歌曲的列表或字典,然后每当要播放一首歌曲时,都需要将其加载到调音台中并进行播放:
def play_song(name):
pygame.mixer.music.load(name)
pygame.mixer.music.set_volume(0.3) # you can also set the volume
pygame.mixer.music.play(loops=-1)
这是专门针对
mixer.music
的。pygame.mixer.Sound
返回一个Sound对象,您可以将其保存以供以后使用:documentation。因此,您可以将声音目录加载到python列表中。sounds_list = []
sounds_list.append(pygame.mixer.Sound('gun_fire.wav'))
sounds_list.append(pygame.mixer.Sound('coin_pickup.wav'))
# add more sounds
关于python - 为什么Pygame只播放最后一个声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770122/