循环异步声音?

问题描述 投票:0回答:1

目前正在从事一个愚蠢/疯狂的项目:仅使用 Turtle 制作一款 8 位 RPG 自上而下游戏。

我遇到的问题之一是背景音乐。我使用winsound模块并确保我的所有声音都使用SND_ASYNC标志,以便我可以在需要时在完成之前将其切断。

我想知道是否有一种方法可以循环播放声音,同时仍保持异步,而不会在完成之前停止前一个声音,但如果需要,仍然能够切断声音并停止循环。

我尝试了 while 循环,但由于它停止了前一个声音,所以它只是在第一秒继续循环。

我考虑过将 SND_NOWAIT 标志与 SND_ASYNC 标志结合起来,但我不知道该怎么做。

然后我尝试使用时间模块并执行

time.sleep(120
让它等待歌曲的持续时间(2 分钟),然后再次播放,但这只是停止声音,因为它是异步的。

python python-3.x winsound
1个回答
0
投票

我考虑过将 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机器,所以请测试一下它是否符合你的要求。

© www.soinside.com 2019 - 2024. All rights reserved.