Возникли проблемы в управлении спрайтом. Коды клавиш управления храню в (int keyLeft, keyRight), они могут изменяться. Появляется системная задержка винды перед непрерывным вводом клавиши. Если цикл while закрываю после строки window.close(), спрайт движется постоянно влево или вправо после однократного нажатия клавиши.
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
if (sf::Event::KeyPressed) {
if(event.key.code==keyLeft) ball.x-=15+platSpeed/2,0;
else if(event.key.code==keyRight) ball.x+=15+platSpeed/2,0;
else if(event.key.code==27) menu(window, text);
}
}
Попробуйте использовать sf::Keyboard::isKeyPressed(), вместо Event. Также цикл проверки события "Closed" лучше делать отдельно от обработки. Например вот так:
struct Keys {
sf::Keyboard::Key keyLeft = sf::Keyboard::A;
sf::Keyboard::Key keyRight = sf::Keyboard::D;
sf::Keyboard::Key keyMenu = sf::Keyboard::F;
} keys;
while (window.isOpen()) {
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
if(sf::Keyboard::isKeyPressed(keys.keyLeft))
ball.x-=15+platSpeed/2,0;
if(sf::Keyboard::isKeyPressed(keys.keyLeft))
ball.x+=15+platSpeed/2,0;
if(sf::Keyboard::isKeyPressed(keys.keyMenu))
menu(window, text);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей