【发布时间】:2019-04-27 16:30:45
【问题描述】:
我正在用 python 和 pygame 制作一个小幻想控制台,但我偶然发现了一个问题。我正在制作一个可以制作 Chiptune 曲调的音乐编辑器,但是当我使用 pygame.mixer.Sound 方法播放它们时,它会暂停所有内容并播放声音。例如,如果我每次英雄捡起东西时播放声音,一切都会冻结,它会播放声音,然后一切都会恢复。起初这没什么大不了的,但它使做背景音乐之类的事情变得不可能。有可能解决这个问题吗?
我尝试过使用 playsound 库,但这也会冻结所有内容。
def music(notes):
note_list = ["c","c2","d","d2","e","e2","f","f2","g","g2","a","a2"]
for i in note_list:
exec("{} = pygame.mixer.Sound('res/sounds/{}.wav')".format(i,i))
for i in notes:
for j in i:
exec("pygame.mixer.Sound.play({})".format(j))
time.sleep(.2)
我希望程序能够使用 pygame.mixer.Sound 方法播放声音并同时做其他事情,但实际发生的是一切都冻结,播放声音,然后一切恢复。
【问题讨论】:
-
我猜你不应该通过
exec调用它。顺便说一句,你为什么这样做? -
我使用 exec 是因为我认为在代码运行时创建变量会更容易。我是一个菜鸟程序员,所以我不太了解它。它可以很好地创建变量。我不认为 exec 是问题所在。即使我手动创建变量,也会出现同样的问题。
-
实际上我从来没有在 pygame 中使用过声音,所以我现在出于好奇正在尝试。但我从未见过它通过
exec调用,所以我认为这就是问题所在。