перехват нажатия клавиш на клавиатуре
|
|
misterELI |
Вторник, 03.04.2012, 15:09
|
|
Доброго времени суток, форумчане. Не могли бы вы подсказать как научить программу перехватывать нажатие клавиш на клавиатуре. То есть что бы она реагировала на нажатие той или иной клавиши... заранее благодарен...
|
|
|
Эти 0 пользователя(ей) поблагодарили misterELI за это полезное сообщение: |
|
|
Ghost_Ukr |
Вторник, 03.04.2012, 15:41
|
|
Сделать это не сложно,(сам не давно узнал,и начал делать игру на этом движке(Пока что идет на ура)) Вообщем вот Создаешь функцию ("HotKey1")(Вызвать при старте отметь) В код ставишь: Code HotKey::add(False, VK_UP, 'UP1');// И создаешь функцию(UP1) В ее код ставишь то что нужно.(для нажатия клавиши) Могу дать исходник,порылся и нашел)
Добавлено (03.04.2012, 15:41) --------------------------------------------- Вот залил исход http://ufod.at.ua/12345.dvs
|
|
|
Эти 0 пользователя(ей) поблагодарили Ghost_Ukr за это полезное сообщение: |
|
|
mozg-s |
Вторник, 03.04.2012, 18:13
|
|
Code Switch( $key ) { Case VK_UP: { c("image1")->y -=5; Break; }
Case VK_LEFT: { c("image1")->x -=5; Break; }
Case VK_RIGHT: { c("image1")->x +=5; Break; }
Case VK_DOWN: { c("image1")->y +=5; Break; } } А горячие клавиши глючные ,особенно в играх когда больше 2 уровней ,пробуй этот вариант ,он без этих недостатков,проверено на играх.
|
|
|
Эти 0 пользователя(ей) поблагодарили mozg-s за это полезное сообщение: |
|
|
Ghost_Ukr |
Вторник, 03.04.2012, 19:30
|
|
Quote (mozg-s) А горячие клавиши глючные ,особенно в играх когда больше 2 уровней ,пробуй этот вариант ,он без этих недостатков,проверено на играх. Что бы не глючили код правильный нужен)
|
|
|
Эти 0 пользователя(ей) поблагодарили Ghost_Ukr за это полезное сообщение: |
|
|
mozg-s |
Вторник, 03.04.2012, 19:39
|
|
И был правельный ,Но глюки,пришлощь другой вариант подбирать.
|
|
|
Эти 0 пользователя(ей) поблагодарили mozg-s за это полезное сообщение: |
|
|
Resh |
Вторник, 03.04.2012, 19:44
|
|
![](http://develstudio.3dn.ru/microbars/ds-microbar.png) ![](http://develstudio.3dn.ru/microbars/ds-microbar2.png)
|
|
|
Эти 0 пользователя(ей) поблагодарили Resh за это полезное сообщение: |
|
|
mozg-s |
Вторник, 03.04.2012, 19:48
|
|
И такой вариант ,тоже подходит,рабочий.Для конкретного варианта свой вариант упровления.
|
|
|
Эти 0 пользователя(ей) поблагодарили mozg-s за это полезное сообщение: |
|
|
Resh |
Вторник, 03.04.2012, 19:54
|
|
через switch чем плохо если переключишься на другое окно уже не будет реагировать на кнопки, а чтобы реагировала лучше использовать get_key_state
![](http://develstudio.3dn.ru/microbars/ds-microbar.png) ![](http://develstudio.3dn.ru/microbars/ds-microbar2.png)
|
|
|
Эти 0 пользователя(ей) поблагодарили Resh за это полезное сообщение: |
|
|
mozg-s |
Вторник, 03.04.2012, 19:58
|
|
И можно в событие нажатие клавиши поставить.Добавлено (03.04.2012, 19:58) --------------------------------------------- Таких багов не замичал,всё хорошо работает.
|
|
|
Эти 0 пользователя(ей) поблагодарили mozg-s за это полезное сообщение: |
|
|
misterELI |
Среда, 04.04.2012, 03:19
|
|
Заранее прошу прощения за глупые вопросы. В общем так, вариант предложенный Ghost_Ukr не устраивает по той простой причине, что я не понял к чему все эти выкрутасы О_о Как то слишком сложно, думаю должно быть более простое решение. Плюсом имеется такой минус как задержка движения фигуры после первого нажатия и продолжения после. Нет гладкости, с таким люфтом сделать какую нить мало мальски динамичную игру будет сложно.
Следующее вариант с Switch( $key ), я вставил код в событие "нажатие клавиши" в самой форме. Конструкция более проще с получением того же результата как и в варианте Ghost_Ukr, но тот же минус остаётся, нет плавности движения.
А вот с get_key_state я не понял, как этим пользоваться и куда это вставлять? Оо
Вопрос так же висит. Я как понял VK_UP или VK_RIGHT и т.д. это и есть определение той или иной клавиши, то есть сначала пишется "VK_", а после слово идентифицирующее ту или иную клавишу для компилятора. Как этим пользоваться более эффективнее и где взять все значения для каждой клавиши?
P.S. Я как то шкодил давным давно, в школьные годы, на Delphi и помнится мне, что там как то всё достаточно просто решалось. Среда GUI она и в Африке GUI что там что здесь, или я что то недопонимаю? )Добавлено (04.04.2012, 03:19) --------------------------------------------- Кстати, всех с днём WEB разработчика ) 04.04
|
|
|
Эти 0 пользователя(ей) поблагодарили misterELI за это полезное сообщение: |
|
|
Resh |
Среда, 04.04.2012, 08:07
|
|
Коды клавиш вот тебе коды клавиш, get_key_state пользоваться легко скачай исходник посмотри
![](http://develstudio.3dn.ru/microbars/ds-microbar.png) ![](http://develstudio.3dn.ru/microbars/ds-microbar2.png)
|
|
|
Эти 0 пользователя(ей) поблагодарили Resh за это полезное сообщение: |
|
|
misterELI |
Среда, 04.04.2012, 13:22
|
|
Я скачал, только там по ходу исходник битый. Там не нажимается событие "таймер" у таймера О_о. А на форме всего один таймер и тот с картинкой не таймера, а какой то другой. В общем одно из двух или у меня руки кривые, либо исходник битый...Добавлено (04.04.2012, 13:22) --------------------------------------------- И ещё, можно ли использовать не конструкцию вида "VK_...", а в шестнадцатеричном виде или десятеричном?
|
|
|
Эти 0 пользователя(ей) поблагодарили misterELI за это полезное сообщение: |
|
|
Resh |
Среда, 04.04.2012, 13:46
|
|
Quote (misterELI) Я скачал, только там по ходу исходник битый. Там не нажимается событие "таймер" у таймера О_о. А на форме всего один таймер и тот с картинкой не таймера, а какой то другой. В общем одно из двух или у меня руки кривые, либо исходник битый... Ничего исходник не битый просто я делал на DevelStudio 3 а ты открываешь на 2. Можно
![](http://develstudio.3dn.ru/microbars/ds-microbar.png) ![](http://develstudio.3dn.ru/microbars/ds-microbar2.png)
|
|
|
Эти 0 пользователя(ей) поблагодарили Resh за это полезное сообщение: |
|
|
misterELI |
Среда, 04.04.2012, 17:19
|
|
Кул. Ещё два вопроса: 1. if(get_key_state(VK_DELETE)<0){ echo 'Text'; } Почему get_key_state(VK_DELETE) меньше нуля? Можно словами описать логику?
2. Можно ли во всю использовать третью версию? Стабильна ли она?
|
|
|
Эти 0 пользователя(ей) поблагодарили misterELI за это полезное сообщение: |
|
|
Resh |
Среда, 04.04.2012, 17:28
|
|
![](http://develstudio.3dn.ru/microbars/ds-microbar.png) ![](http://develstudio.3dn.ru/microbars/ds-microbar2.png)
|
|
|
Эти 0 пользователя(ей) поблагодарили Resh за это полезное сообщение: |
|
|