【问题标题】:How to force stop sound/bgm being played through PlaySound method如何通过 PlaySound 方法强制停止播放声音/bgm
【发布时间】: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... 函数,或DirectSoundXAudio2 API,甚至是第3 方音频播放库。

标签: c++ playsound


【解决方案1】:

我找到了解决问题的方法,如果有人遇到类似的问题,这就是我所做的:

void menu()
{
    while(startMusic==1)
    {
        PlaySound(TEXT("C:/finalprojectmusic/passaway.wav"), NULL, SND_FILENAME|SND_ASYNC);
        for(int i=0; i<=passawayLength;i++)
        {
            if(starter==1)
            {
                return;
            }
            _sleep(1000);
        }
    }   
}

void landscape()
{
    while(starter==1)
    {
        PlaySound(TEXT("C:/finalprojectmusic/oddish.wav"), NULL, SND_FILENAME|SND_ASYNC);
        for(int i=0; i<=oddishLength;i++)
        {
            if(battleOn==1)
            {
                return;
            }
            _sleep(1000);
        }
    }

}

void battle()
{
    while(battleOn==1)
    {
        PlaySound(TEXT("C:/finalprojectmusic/finboss.wav"), NULL, SND_FILENAME|SND_ASYNC);
        for(int i=0; i<=finbossLength;i++)
        {
            _sleep(1000);
        }
    }

}

我只需要它等到最后^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多