![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 23.08.2012
Сообщений: 1
|
![]()
//Если ошибся с веткой форума, пожалуйста перенесите.
Пишу на С++ с испльзованием QGLWidget. При обработке нажатых клавиш клавиатуры возникает следующая проблема: Когдя я зажимаю клавишу, камера перемещается на один шаг, затем замирает где-то на полсекундыи начинает двигаться уже без пауз, до следующего нажатия. Код:
keyPressEvent дает такой-же глюк. Хотя может это замаскированная фича. В целом нужно какая-то фича, чтобы реакция на клавиши была как в шутерах(быстро, решительно ![]() Последний раз редактировалось SiNoNoto; 23.08.2012 в 18:29. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
![]()
Все работает верно! =) При вводе текста, зажми клавишу(например буквы) и сам воочую увидишь. Это сделано для удобства набора текста.
А теперь по порядку. У тебя должен быть где-то основной цикл игры(будь то таймер или while(true){} ). Вот как раз в нем и нужно обрабатывать нажатые клавиши. Заведи массив bool KeyboardState[255] = {0}; и при событии нажатия клавиши устанавливаешь соответствующему элементу массива true, а когда отпущена false; Код:
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
![]()
Десятый раз натыкаюсь на эту тему. Надо решить один спорный вопрос. В QT4,5 Метод key() класса QKeyEvent нынче не возращает ASCII код. например для клавиши ESC это 16777216. Делать такой здоровенный массив глупо. Как из этого достать ASCII? Остановился на QKeyEvent::text.toAscii.toHex(), а это не есть хорошо, т.к. нужен int.
----- Все проще простого. Код:
Последний раз редактировалось _PROGRAMM_; 01.05.2014 в 17:27. |
![]() |
![]() |
![]() |
#4 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]() Цитата:
К стати, а зачем вам массив из 255 элементов под всю таблицу ASCII ? У вас что, все этик лавиши (половины из которых даже на клавиатуре нет, лол) задействованы в игре? Есть смысл делать массив только под используемые в игре клавиши управления.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
![]() |
![]() |
![]() |
#5 | ||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#6 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
![]() Цитата:
![]() попробуйте этот вариант: Код:
|
|
![]() |
![]() |
![]() |
#7 | |||||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
![]() Цитата:
![]() Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось _PROGRAMM_; 02.05.2014 в 15:29. |
|||||
![]() |
![]() |
![]() |
#8 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]() Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 25.10.2011
Сообщений: 14
|
![]()
я может чего-то не понимаю, но коды клавиш
влево - 75, вправо - 77 qDebug() << event->key() выдаёт влево - 16777234, вправо - 16777236 qDebug() << event->nativeScanCode() выдаёт влево - 331, вправо - 333 клавиша ввода - 13, но 16777220 key 28 native Последний раз редактировалось Fabeldyr; 28.06.2017 в 12:35. |
![]() |
![]() |
![]() |
#10 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
http://doc.qt.io/qt-5/qt.html#Key-enum nativeScanCode() см исходный код Для виндоуса https://code.woboq.org/qt5/qtbase/sr...r.cpp.html#636 Для линукса https://code.woboq.org/qt5/include/S...cancode.h.html
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка нажатий клавиш во время паузы | iov | Microsoft Office Excel | 4 | 04.05.2012 18:59 |
Эмуляция нажатий клавиш в играх | Boris-Britva | Общие вопросы Delphi | 6 | 24.06.2011 15:20 |
Эмуляция нажатий клавиш | BorisBritva | Общие вопросы Delphi | 1 | 01.11.2010 13:09 |
симуляция нажатий клавиш | 4321 | Общие вопросы Delphi | 14 | 23.10.2008 23:18 |
отслеживание нажатий клавиш | Артэс | Win Api | 6 | 14.06.2008 20:02 |