Ответ в теме: Еденичное нажатие клавиши

#573
MicroSDA
MicroSDA
Участник
Сообщений:64

Зарегистрирован:
24.04.2015

Репутация:22

Когда мне нужно было вводить информацию, я искал читал и пришел к выводу что Sfml не предоставляет формы для ввода. После долгих раздумий как реализовать ввод информации так чтоб это ещё и отображалось на экране  придумал вод что (это очень глупо но всё же мне помогло ):

Создал главную строковую переменную типа String input;

Для каждой кнопки я создал отдельную переменную string Q =”Q”;// и так для каждой буквы

Потом цикл Ifфов по поводу нажатия той или иной кнопки и к главной переменной input я прибавлял переменную то что ввел, и сразу отрисовывал на экран в виде текста .

Возникла такая же проблема а именно при нажатии одной кнопки мне печатало их сразу по 20-50.

Я добавил в If(Keyboard::isKeyPressed(Keyboard::Q){input=input+Q;  while Keyboard::isKeyPressed(Keyboard::Q){// оставил тело пустым }}

Получается что после нажатия кнопки у меня запускается пустой цикл пока я держу эту кнопку. Само собой это глупое решение та как программа зависает пока я держу кнопку и выполняется цикл ничего, но если у вас на экране один фон и вы вводите например своё имя после прохождения для записи рекорда( так как было у меня ) то в принципе это не заметно даже если на фоне играет музыка (она к примеру не виснет ). Пока я не знаю другого решения пользуюсь этим.