Russian Qt Forum
Ноябрь 23, 2024, 15:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Quick
(Модератор:
navrocky
) >
Отключить задержку автоповтора клавиш
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Отключить задержку автоповтора клавиш (Прочитано 8008 раз)
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Отключить задержку автоповтора клавиш
«
:
Октябрь 14, 2014, 16:01 »
Если я в реальном времени двигаю по сцене предметы с помощью клавиатуры, и если я зажму клавишу, то перед её автоповтором есть задержка, что создаёт лаг. Как это убрать? Как решение можно делать постоянный poll нажатых клавиш, но считаю это слишком затратным.
Записан
Bepec
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #1 :
Октябрь 14, 2014, 18:47 »
Это вопрос к операционной системе. Именно она ставит автозадержку. Настраивается платформозависимо.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Отключить задержку автоповтора клавиш
«
Ответ #2 :
Октябрь 14, 2014, 19:01 »
Цитата: Bepec от Октябрь 14, 2014, 18:47
Это вопрос к операционной системе. Именно она ставит автозадержку. Настраивается платформозависимо.
Если она (и только она) ставит автозадержку, то как игры её игнорируют? Значит задержка управляется, если только не используется бесконечный поллинг в самой игре.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Отключить задержку автоповтора клавиш
«
Ответ #3 :
Октябрь 14, 2014, 20:13 »
Цитата: Alex Custov от Октябрь 14, 2014, 16:01
Если я в реальном времени двигаю по сцене предметы с помощью клавиатуры, и если я зажму клавишу, то перед её автоповтором есть задержка, что создаёт лаг. Как это убрать? Как решение можно делать постоянный poll нажатых клавиш, но считаю это слишком затратным.
Не знаю что здесь poll, может простенько по таймеру и там проверять клавишу
Записан
Bepec
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #4 :
Октябрь 14, 2014, 21:01 »
А движок игры сам отлавливает состояния клавиш каждый тик. Что равнозначно постоянному опросу клавиатуры.
Записан
Отражение луны
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #5 :
Октябрь 14, 2014, 22:24 »
Тебе не нужен автоповтор, тебе нужно ловить состояние нажатия клавиши. Иначе говоря, тебе нужны pressed(KeyEvent event) и released(KeyEvent event) из
http://qt-project.org/doc/qt-5/qml-qtquick-keys.html#pressed-signal
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Отключить задержку автоповтора клавиш
«
Ответ #6 :
Октябрь 14, 2014, 23:44 »
Цитата: Отражение луны от Октябрь 14, 2014, 22:24
Тебе не нужен автоповтор, тебе нужно ловить состояние нажатия клавиши. Иначе говоря, тебе нужны pressed(KeyEvent event) и released(KeyEvent event) из
http://qt-project.org/doc/qt-5/qml-qtquick-keys.html#pressed-signal
не понимаю как это решит проблему с задержкой перед автоповтором (которую нужно полностью убрать). У меня уже используется Keys.onPressed.
Записан
Отражение луны
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #7 :
Октябрь 15, 2014, 02:59 »
Цитата: Alex Custov от Октябрь 14, 2014, 23:44
не понимаю как это решит проблему с задержкой перед автоповтором (которую нужно полностью убрать). У меня уже используется Keys.onPressed.
Если ты можешь отловить момент нажатия клавиши, то можешь уже начать двигать объект по сцене с нужной тебе скоростью, и остановить объект, когда клавиша отпущена.
Может, стоит описать задачу более подробно?
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Отключить задержку автоповтора клавиш
«
Ответ #8 :
Октябрь 21, 2014, 20:41 »
Цитата: Отражение луны от Октябрь 15, 2014, 02:59
Если ты можешь отловить момент нажатия клавиши, то можешь уже начать двигать объект по сцене с нужной тебе скоростью, и остановить объект, когда клавиша отпущена.
Это не подходит по банальной причине того, что события "key released" могут теряться. Например, во время переключения окна с помощью Alt+Tab.
Цитата: Отражение луны от Октябрь 15, 2014, 02:59
Может, стоит описать задачу более подробно?
При нажатии на клавишу персонаж сдвигается на 5 точек. При зажатии клавиши он постоянно двигается, всё как обычно в играх. При этом возникает лаг автоповтора клавиши.
В сущности, я решил остановится на бесконечном поллинге, других вариантов не вижу.
Записан
Отражение луны
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #9 :
Октябрь 21, 2014, 22:17 »
В играх обычно объекты движутся равномерно, а не толчками. В qml для этого уместно использовать анимацию. Key released действительно могут теряться, если приложение теряет фокус ввода, и документация говорит, что это единственный случай, когда это может происходить. Чтобы ловить потерю приложением фокуса, полагаю, нужен
http://qt-project.org/doc/qt-5/qquickwindow.html
Записан
Bepec
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #10 :
Октябрь 21, 2014, 22:18 »
толчками они движутся, увы. Правда красивая анимация и скорость отрисовки прячут всё
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Отключить задержку автоповтора клавиш
«
Ответ #11 :
Октябрь 22, 2014, 08:43 »
Цитата: Alex Custov от Октябрь 21, 2014, 20:41
В сущности, я решил остановится на бесконечном поллинге, других вариантов не вижу.
Все-таки чем не устраивает просто по таймеру?
Записан
Bepec
Гость
Re: Отключить задержку автоповтора клавиш
«
Ответ #12 :
Октябрь 22, 2014, 10:16 »
Это и есть поллинг) Один из его вариантов
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...