Многие мультимедийные библиотеки на C++ имеют функцию обнаружения состояний клавиатуры. Но эти функции являются дефектными, потому что они только обнаруживают, что удерживается ключ, и посылает постоянный сигнал. Я хочу повернуть функцию, подобную этой, чтобы посылать один импульс сигнала, только когда кнопка нажата сама, а не пока она удерживается после нажатия.Включение функции «isKeyPressed» любой библиотеки в «keyPressedOnce»?
я сделал что-то вроде этого (в псевдокоде):
while isKeyPressed { if not isKeyPressed (exit_loop) }
Это не эффективно, потому что даже если это работает, это невозможно проверить для других клавиш, в то время как «в то время как» петля работает, и это также задерживает программу в том, как долго удерживается ключ.
Может ли кто-нибудь подумать о лучшем варианте?
(Кстати, я использовал функцию SFML sf::Keyboard::isKeyPressed()
).
У вас есть одна петля опроса в вашей программе и оберните ее внутри класса наряду с предыдущими состояниями клавиш. Вы можете заставить его регистрировать обратные вызовы, что угодно ... – LogicStuff
Как я мог сделать это более точно? – KKZiomek