【发布时间】:2019-10-27 12:57:06
【问题描述】:
我正在尝试为 AP 课程制作 rpg 风格的游戏,但在进入新区域时尝试停止不同的声音时遇到了问题。有没有办法终止其他方法的声音?
我尝试过使用 ASYNC,但它根本不播放声音(这可能是由于多线程/方法同时运行)以及 SND_FILENAME |异步。我对我使用的概念不太熟悉,任何指导都会大有帮助。
三种发声方法:
void menu()
{
while(startMusic==1)
{
PlaySound(TEXT("C:/finalprojectmusic/passaway.wav"), NULL, SND_FILENAME);
}
}
void landscape()
{
while(starter==1)
{
PlaySound(TEXT("C:/finalprojectmusic/oddish.wav"), NULL, SND_FILENAME);
}
}
void battle()
{
while(battleOn==1)
{
PlaySound(TEXT("C:/finalprojectmusic/finboss.wav"), NULL, SND_FILENAME);
}
}
当我正常运行文件时,每个方法中的不同声音会在前一个停止时立即进入一个新区域,这很好,但不是我们想要的。
【问题讨论】:
-
PlaySound()是非常基本的,并且它可以做的事情非常有限。如果您在使用ASYNC标志时遇到问题,那么您可能使用不正确。但是,如果您需要比PlaySound()提供的更多的音频播放控制,您最好直接使用waveOut...函数,或DirectSound 或XAudio2 API,甚至是第3 方音频播放库。