每当我使用“playsound”在后台播放声音时,我的游戏的其余部分都不会加载
Posted
技术标签:
【中文标题】每当我使用“playsound”在后台播放声音时,我的游戏的其余部分都不会加载【英文标题】:Whenever I use the "playsound" to play sound in the background the rest of my game does not load 【发布时间】:2019-01-05 16:33:39 【问题描述】:我决定使用playsound()
在我的程序中添加背景声音。但是,当我使用 playsound 运行程序时,实际游戏在歌曲播放完毕之前不会加载:
from playsound import playsound
#type 'pip install playsound' in command prompt to install library
import random
playsound('audio.mp3')
while True:
min = 1
max = 6
roll_again = "yes"
while roll_again == "yes" or roll_again == "y":
print("Rolling the dices...")
print("The values are....")
print(random.randint(min, max))
print(random.randint(min, max))
roll_again = raw_input("Roll the dices again?")
通常我希望在加载和播放骰子游戏时在后台播放声音,但它不是这样工作的。
【问题讨论】:
playsound
不是 Python 本身的一部分。它来自哪个图书馆?将该库添加到您问题的标签中。并将代码缩减为minimal reproducible example——尽可能短的代码,它会在不更改运行时产生您所询问的问题。包括一个让人们重现问题的 MCVE 还可以确保人们可以测试他们的答案,并验证其他人提出的答案的正确性。另请参阅SSCCE 定义,它密切相关(尽管它本身不是 Stack Overflow 规则的一部分)。
(现在你的代码在没有更改的情况下无法运行根本——只提供了一个函数而没有调用它,没有import
s 等)。
好的,我已经完成了,希望它有助于找到解决方案。
是的,这很有帮助。
【参考方案1】:
来自the playsound
module 的文档:
还有一个可选的第二个参数
block
,默认设置为True
。将其设置为False
会使函数异步运行。
因此,如果你想让它在后台运行一次,你需要使用:
playsound('audio.mp3', block=False)
...或者,如果您希望它在后台重复运行,等到一个实例完成后再开始下一个实例,您可以为此目的启动一个线程:
import threading
from playsound import playsound
def loopSound():
while True:
playsound('audio.mp3', block=True)
# providing a name for the thread improves usefulness of error messages.
loopThread = threading.Thread(target=loopSound, name='backgroundMusicThread')
loopThread.daemon = True # shut down music thread when the rest of the program exits
loopThread.start()
while True:
raw_input("Put your gameplay loop here.")
【讨论】:
以上是关于每当我使用“playsound”在后台播放声音时,我的游戏的其余部分都不会加载的主要内容,如果未能解决你的问题,请参考以下文章
C++ 中的 Playsound() 播放 windows 错误声音,我已经包含了 winmm.lib
如何使用 (IBAction)playsound:(id)sender 播放声音 [关闭]