В тот момент, когда вы останавливаетесь, вы прекращаете обновлять буферы рисования.SFML всегда с двойной буферизацией, и в каждой итерации вы всегда должны анализировать ввод, обновлять все, что нужно обновить, перерисовывать «скрытый» фрейм и затем переворачивать буферы.По сути, это паттерн "Game Loop".
В вашем коде вы всегда анализируете ввод, обновляете таймер и состояние паузы, основываясь на этом, и вы всегда переворачиваете буферы (с window.display()
).Однако вы перерисовываете «скрытый» буфер кадра только в том случае, если состояние не приостановлено.
Итак, вы видите ожидаемый результат и нашли правильное решение.
В стороне,в вашем коде действительно есть несколько стилевых проблем, включая неинициализированные переменные, которые всегда опасны в C ++.