SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Еденичное нажатие клавиши › Ответ в теме: Еденичное нажатие клавиши
Когда мне нужно было вводить информацию, я искал читал и пришел к выводу что Sfml не предоставляет формы для ввода. После долгих раздумий как реализовать ввод информации так чтоб это ещё и отображалось на экране придумал вод что (это очень глупо но всё же мне помогло ):
Создал главную строковую переменную типа String input;
Для каждой кнопки я создал отдельную переменную string Q =”Q”;// и так для каждой буквы
Потом цикл Ifфов по поводу нажатия той или иной кнопки и к главной переменной input я прибавлял переменную то что ввел, и сразу отрисовывал на экран в виде текста .
Возникла такая же проблема а именно при нажатии одной кнопки мне печатало их сразу по 20-50.
Я добавил в If(Keyboard::isKeyPressed(Keyboard::Q){input=input+Q; while Keyboard::isKeyPressed(Keyboard::Q){// оставил тело пустым }}
Получается что после нажатия кнопки у меня запускается пустой цикл пока я держу эту кнопку. Само собой это глупое решение та как программа зависает пока я держу кнопку и выполняется цикл ничего, но если у вас на экране один фон и вы вводите например своё имя после прохождения для записи рекорда( так как было у меня ) то в принципе это не заметно даже если на фоне играет музыка (она к примеру не виснет ). Пока я не знаю другого решения пользуюсь этим.