c темы - почему mmsystem (используя mciSendString) не воспроизводит звуковой файл?

Я хочу, чтобы моя игра играла в sfx. В начале я открываю какой-нибудь mp3 файл mciSendString("open Muzle.mp3 alias Muzle");,

Моя проблема в том что mciSendString("play Muzle from 0"); по-прежнему вызывает небольшое отставание, и игра должна играть часто звуки.

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

У меня есть эта функция сейчас:

void Shout(string SoundName){
    string FNstr;
    wstring FNwstr;
    FNstr = "play " + SoundName + " from 0";
    FNwstr.assign(FNstr.begin(), FNstr.end());
    mciSendString(FNwstr.c_str(), NULL, 0, NULL);
    Sleep(2000);
    cout << "Test woi\n";
}

(Я тоже пытался без Sleep. Интересно, нужно ли мне это, потому что, если поток достигает конца, он может быть удален, а звук прекращен... Я не уверен, как работают потоки или mmsystem)

Если я просто позвоню Shout() функция, он будет воспроизводить звук, сделать сон (2000), а затем cout. Все работало нормально Но я должен использовать темы, поэтому я стараюсь:

thread(Shout, "Muzle");

и я получил ошибку: abort() был вызван. Я понял, что мне может понадобиться отсоединить нить:

thread t(Shout, "Muzle");
t.detach();

При этом все выглядело нормально и нормально (через 2 секунды я вижу надпись "Test woi" на консоли), но звук не воспроизводился.

Хм, так что спасибо, что прочитали все ^.^ . Вы знаете, как решить эту проблему?

1 ответ

Вы, вероятно, должны иметь ОДНУ постоянную нить, которая: 1. Ожидает завершения звука, прежде чем двигаться дальше (при условии, что вы хотите, чтобы он работал). Вы можете, вероятно, просто использовать опцию "ждать", чтобы сделать это. 2. Когда звук не воспроизводится, ждет команды для воспроизведения следующего звука - одним из таких решений будет использование канала для отправки сообщений в поток, но вы можете использовать другие методы.

Другие вопросы по тегам