【问题标题】:How to loop a sound file in MASM32如何在 MASM32 中循环播放声音文件
【发布时间】:2015-06-06 11:32:12
【问题描述】:

我正在组装一个游戏,我使用PlaySound() 在我的游戏中播放声音文件。

PlaySound()函数播放声音文件,直到声音文件结束(直到达到完整的声音文件长度)。有没有办法循环函数,使其在到达文件末尾后不会停止?

我正在使用 Windows 8 API,并在 Visual Studio 2013 中编写。

【问题讨论】:

  • 仔细查看PlaySound 的文档。有一个你可能感兴趣的标志。:)
  • 在最后一个问题中,建议您阅读文档。阅读文档对您来说效率更高。您目前的计划似乎是请我们在这里为您阅读文档。
  • 我确实读过 :) 没有注意到它。不过你不必那么粗鲁
  • 我没有粗鲁。您是不阅读文档而非常粗鲁的人。如果你真的读过它,那么你不可能看不到SND_LOOP,这再明显不过了。请务必听取您阅读文档的多个请求。

标签: winapi audio assembly masm masm32


【解决方案1】:

如果您查看API documentationPlaySound,您会发现fdwSound 有很多标志。您要查找的标志是SND_LOOPSND_ASYNC

这样的事情(请原谅任何错误。我的masm有点生锈):

mov eax, SND_FILENAME  ;; pszSound is a file name
or eax, SND_LOOP       ;; Play in a loop
or eax, SND_ASYNC      ;; Play in the background
invoke PlaySound, addr sound_file, 0, eax

【讨论】:

  • 我发现了一些问题。我的 playsound 功能在 MAIN 区域。如果我把 SND_LOOP 放在那里,它会让我的游戏崩溃..
  • @user4825345:再次阅读文档(这是您被告知这样做的第三次):“SND_LOOP 声音重复播放,直到使用 pszSound 参数集再次调用 PlaySound为 NULL。如果设置了此标志,您还必须设置 SND_ASYNC 标志“我更新了 Levi 的示例。
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2018-11-26
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多