Перемещение мыши приводит к тому, что события не обновляются

Последние две недели я работал над забавным проектом, игрой. На данный момент, я только что дошел до точки, когда релизы стабильны, и никаких ошибок нет. Кроме одного. И это очень раздражает — тем более, что я понятия не имею, что происходит.

По сути, я использую функцию SFML isKeyPressed, чтобы проверить, нажата ли клавиша, и событие Event :: KeyPressed, чтобы проверить наличие клавиш.

Ошибка заключается в том, что если игрок движется (клавиша удерживается нажатой), а пользователь перемещает мышь, и во время движения мыши отпускает клавишу (клавиша больше не нажимается), игрок будет продолжать двигаться, пока что-то явно не заблокируется его от этого.

Эта серия событий воспроизводима, поэтому это должен быть не мой код, а способ, которым SFML обрабатывает события.

Кто-нибудь знает какие-либо хорошие решения этой проблемы?

(И в некоторой степени связано с этим — если пользователь «держит» окно игры, игра зависает, и мне бы очень хотелось, чтобы этого не произошло).

Если потребуется какой-либо код или более подробная информация (скриншоты и т. Д.), Я с радостью предоставлю. Спасибо!

1

Решение

Если вы хотите проверить наличие ключевых выпусков, вы должны использовать Событие :: KeyReleased событие, а не Событие :: KeyPressed, ты не думаешь?

Но пока вы используете isKeyPressed, вам не нужно проверять, отпущена ли клавиша: просто перемещайте проигрыватель в каждом кадре, в котором нажата ваша клавиша.

1

Другие решения


По вопросам рекламы [email protected]