![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
![]()
Здравствуйте, у меня есть такой вопрос:
Есть на форме игрок, он движется с помощью стрелок. И есть анимация. Но есть проблема, когда нажимаю обе кнопки вместе, вверх + влево или вверх + право, анимация начинает смешиваться ... как мне запретить нажимания двух клавиш одновременно?!
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни ![]() |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
По-моему их никак не запретить... Нажатия этих клавиш все равно идут последовательно.
Я бы пересмотрел механизм анимации. Возможно сделал бы двойную буфферизацию.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
![]()
Ясно. А если использовать W-S-A-D как управление, то их одновременное нажатие можно будет запретить?
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни ![]() |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Если не ошибаюсь винда (думаю о ней идет речь) может одновременно какбы слить в одно нажатие только CTRL ALT SHIFT с другой любой клавишей. Остальные обрабатываться последовательно должны. Врядли удастся их запретить.
Впрочем попробуй так: в OnKeyDown запоминай в некую скажем глобальную переменку код нажатой клавиши. В OnKeyUp эту переменку сбрасывай в ноль. Если в OnKeyDown при нажатии другой клавиши эта переменка чему-то равна то не обрабатывать. Т.е. запоминать первую нажатую, и пока она не отпущена другие не обрабатывать. Это предположение с потолка, но думаю поможет.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
![]()
Спасибо Stilet, буду разбираться)
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни ![]() |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
![]()
можно попробовать во время нажатия клавиши проверить состояние всех остальных (например что-то типа PRESSED) ... и если результат отрицательный - выполнять нужное
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... ![]() |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 22.08.2013
Сообщений: 12
|
![]()
if ((GetAsyncKeyState(VK_left)<>0) and (GetAsyncKeyState(VK_right)<>0)) then
GetAsyncKeyState(VK_left); вот если кто то жмет 2 сразу кнопки то человек идет в лево :D |
![]() |
![]() |
![]() |
#8 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Либо сделать дополнительную анимацию для ходьбы про диагоналям и работать с ней.
Либо выставить приоритет для анимации "горизонтальной" ходьбы, и при движении по диагонали показывать только её (т.е. если нажата кнопка влево - безусловно показывать анимацию влево, независимо от нажатия кнопок вверх или вниз). Сделать второе можно через опрос клавиатуры и установкой некоего состояния у объекта спрайта или объекта-игрока, примерно так: Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрет движения курсора | Ko$ | Общие вопросы Delphi | 0 | 22.05.2013 17:28 |
Запрет нажатия кнопки и запрет неправильного ввода данных | De_Kurlzz | Помощь студентам | 1 | 15.06.2011 15:14 |
имитация нажатия клавиш | RAVAL(c) | HTML и CSS | 10 | 07.02.2011 12:29 |
перехват нажатия клавиш | skalt12 | Общие вопросы Delphi | 4 | 17.08.2009 13:06 |