目前正在从事一个愚蠢/疯狂的项目:仅使用 Turtle 制作一款 8 位 RPG 自上而下游戏。
我遇到的问题之一是背景音乐。我使用winsound模块并确保我的所有声音都使用SND_ASYNC标志,以便我可以在需要时在完成之前将其切断。
我想知道是否有一种方法可以循环播放声音,同时仍保持异步,而不会在完成之前停止前一个声音,但如果需要,仍然能够切断声音并停止循环。
我尝试了 while 循环,但由于它停止了前一个声音,所以它只是在第一秒继续循环。
我考虑过将 SND_NOWAIT 标志与 SND_ASYNC 标志结合起来,但我不知道该怎么做。
然后我尝试使用时间模块并执行
time.sleep(120
让它等待歌曲的持续时间(2 分钟),然后再次播放,但这只是停止声音,因为它是异步的。
我考虑过将 SND_NOWAIT 标志与 SND_ASYNC 标志结合起来, 但我不知道该怎么做。
windsound.PlaySound(sound, flags)
文档
它的解释取决于标志的值,标志可以是 下面描述的常数的按位或组合。
这意味着如果您想应用多个标志,您应该使用按位或 (
|
)。因此,可以按照以下方式循环播放 song.wav
import winsound
winsound.PlaySound("song.wav", winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_LOOP)
我手头没有Windows机器,所以请测试一下它是否符合你的要求。