0

我正在尝试为 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);
    }

}

当我正常运行文件时,每个方法中的不同声音会在前一个停止时立即进入一个新区域,这很好,但不是我们想要的。

4

1 回答 1

0

我发现了如何解决这个问题,如果有人遇到类似的问题,这就是我所做的:

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);
        }
    }

}

我只需要它等到最后^^

于 2019-06-13T20:47:05.427 回答