Как заставить воспроизводиться звук остановки / фоновая музыка методом PlaySound - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь сделать игру в стиле ролевых игр для класса AP, но у меня возникла проблема с попыткой остановить различные звуки при входе в новую область. Есть ли способ прекратить звуки другими методами?

Я пытался работать с 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);
    }

}

Когда я запускаю файл нормально, различные звуки в каждом методе входят, как только предыдущие останавливаются при переходе в новую область, что в порядке, но не желательно.

1 Ответ

0 голосов
/ 13 июня 2019

Я узнал, как решить проблему, если у кого-то возникла подобная проблема, вот что я сделал:

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

}

Мне просто нужно было подождать до конца ^^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...