SFML Невозможно воспроизвести звук при нажатии клавишиC++

Программы на C++. Форум разработчиков
Anonymous
SFML Невозможно воспроизвести звук при нажатии клавиши

Сообщение Anonymous »

Я пытаюсь создать небольшую программу, которая воспроизводит звук при каждом нажатии клавиши. В основном я делаю это, чтобы изучить SFML и улучшить свои навыки в cpp.
Глядя на схожие проблемы, у меня есть и sf::SoundBuffer, и sf::Sound как отдельные члены игрового класса. Код работает достаточно, чтобы нажатия клавиш регистрировались (проверялось, просто закрывая окно), но он отказывается воспроизводить какой-либо звук. Я дважды проверил расположение звуковых файлов, которым звоню, и все получилось. Буду очень признателен за любую помощь!
ниже показано, как я загружаю звук и нажатия клавиш.
Примечание о нажатиях клавиш, которые я пробовал использовать как this->, так и просто вызывая Член и его функции. ни то, ни другое, похоже, не работает
void Game::loadSound(sf::SoundBuffer buff, sf::Sound sound, std::string file)
{
buff.loadFromFile(file);
sound.setBuffer(buff);
sound.setVolume(50);
}

void Game::initSounds()
{
loadSound(buffer1, drum1, "../sounds/Drum1.wav");
loadSound(buffer2, drum2, "../sounds/Drum2.wav");
loadSound(buffer3, drum3, "../sounds/Drum3.wav");
loadSound(buffer4, drum4, "../sounds/Drum4.wav");
loadSound(buffer5, spock, "../sounds/Spock.wav");
loadSound(buffer6, spike, "../sounds/Spike.wav");
}

void Game::pollEvents()
{
//Event Polling
while (this->window->pollEvent(this->event))
{
switch(this->event.type)
{
case sf::Event::Closed:
this->window->close();
break;
case sf::Event::KeyPressed:
switch(this->event.key.code)
{
case sf::Keyboard::Escape:
this->window->close();
break;
case sf::Keyboard::Num1:
drum1.play();
break;
case sf::Keyboard::Num2:
drum2.play();
break;
case sf::Keyboard::Num3:
drum3.play();
break;
case sf::Keyboard::Num4:
this->drum4.play();
break;
case sf::Keyboard::Num0:
this->spike.play();
break;
case sf::Keyboard::Num9:
this->spock.play();
break;
}
// if(event.key.code == sf::Keyboard::Escape)
// this->window->close();
break;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -keystroke

Вернуться в «C++»