09.02.2025г.05:17
Добро пожаловать на DevelStudio.3dn.ru — Уникальное для DevelStudio!
ГлавнаяФорумУрокиПримерыИсходникиНов. СообщенияЗаказать исходникВаша ссылка
Участники · Правила форума · Поиск · RSS
  • Страница 1 из 2
  • 1
  • 2
  • »
перехват нажатия клавиш на клавиатуре
misterELI
Вторник, 03.04.2012, 15:09
Группа:
 
Пользователь
Сообщений:
 
7
Репутация:
 
0

Доброго времени суток, форумчане. Не могли бы вы подсказать как научить программу перехватывать нажатие клавиш на клавиатуре. То есть что бы она реагировала на нажатие той или иной клавиши... заранее благодарен...
 
Ghost_Ukr
Вторник, 03.04.2012, 15:41
Группа:
 
Пользователь
Сообщений:
 
24
Репутация:
 
0

Сделать это не сложно,(сам не давно узнал,и начал делать игру на этом движке(Пока что идет на ура))
Вообщем вот
Создаешь функцию ("HotKey1")(Вызвать при старте отметь)
В код ставишь:
Code
HotKey::add(False, VK_UP, 'UP1');//

И создаешь функцию(UP1)
В ее код ставишь то что нужно.(для нажатия клавиши)
Могу дать исходник,порылся и нашел)

Добавлено (03.04.2012, 15:41)
---------------------------------------------
Вот залил исход
http://ufod.at.ua/12345.dvs
 
mozg-s
Вторник, 03.04.2012, 18:13
Группа:
 
Пользователь
Сообщений:
 
98
Репутация:
 
5

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 уровней ,пробуй этот вариант ,он без этих недостатков,проверено на играх.
 
Ghost_Ukr
Вторник, 03.04.2012, 19:30
Группа:
 
Пользователь
Сообщений:
 
24
Репутация:
 
0

Quote (mozg-s)
А горячие клавиши глючные ,особенно в играх когда больше 2 уровней ,пробуй этот вариант ,он без этих недостатков,проверено на играх.

Что бы не глючили код правильный нужен)
 
mozg-s
Вторник, 03.04.2012, 19:39
Группа:
 
Пользователь
Сообщений:
 
98
Репутация:
 
5

И был правельный ,Но глюки,пришлощь другой вариант подбирать.
 
Resh
Вторник, 03.04.2012, 19:44
Группа:
 
Администраторы
Сообщений:
 
527
Репутация:
 
45

Code
if(get_key_state(VK_DELETE)<0){
echo 'Text';
}

Скачать исходник

 
mozg-s
Вторник, 03.04.2012, 19:48
Группа:
 
Пользователь
Сообщений:
 
98
Репутация:
 
5

И такой вариант ,тоже подходит,рабочий.Для конкретного варианта свой вариант упровления.
 
Resh
Вторник, 03.04.2012, 19:54
Группа:
 
Администраторы
Сообщений:
 
527
Репутация:
 
45

через switch чем плохо если переключишься на другое окно уже не будет реагировать на кнопки, а чтобы реагировала лучше использовать get_key_state

 
mozg-s
Вторник, 03.04.2012, 19:58
Группа:
 
Пользователь
Сообщений:
 
98
Репутация:
 
5

И можно в событие нажатие клавиши поставить.

Добавлено (03.04.2012, 19:58)
---------------------------------------------
Таких багов не замичал,всё хорошо работает.

 
misterELI
Среда, 04.04.2012, 03:19
Группа:
 
Пользователь
Сообщений:
 
7
Репутация:
 
0

Заранее прошу прощения за глупые вопросы. В общем так, вариант предложенный 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

 
Resh
Среда, 04.04.2012, 08:07
Группа:
 
Администраторы
Сообщений:
 
527
Репутация:
 
45

Коды клавиш вот тебе коды клавиш, get_key_state пользоваться легко скачай исходник посмотри

 
misterELI
Среда, 04.04.2012, 13:22
Группа:
 
Пользователь
Сообщений:
 
7
Репутация:
 
0

Я скачал, только там по ходу исходник битый. Там не нажимается событие "таймер" у таймера О_о. А на форме всего один таймер и тот с картинкой не таймера, а какой то другой. В общем одно из двух или у меня руки кривые, либо исходник битый...

Добавлено (04.04.2012, 13:22)
---------------------------------------------
И ещё, можно ли использовать не конструкцию вида "VK_...", а в шестнадцатеричном виде или десятеричном?

 
Resh
Среда, 04.04.2012, 13:46
Группа:
 
Администраторы
Сообщений:
 
527
Репутация:
 
45

Quote (misterELI)
Я скачал, только там по ходу исходник битый. Там не нажимается событие "таймер" у таймера О_о. А на форме всего один таймер и тот с картинкой не таймера, а какой то другой. В общем одно из двух или у меня руки кривые, либо исходник битый...

Ничего исходник не битый просто я делал на DevelStudio 3 а ты открываешь на 2.
Можно

 
misterELI
Среда, 04.04.2012, 17:19
Группа:
 
Пользователь
Сообщений:
 
7
Репутация:
 
0

Кул. Ещё два вопроса:
1. if(get_key_state(VK_DELETE)<0){
echo 'Text';
}
Почему get_key_state(VK_DELETE) меньше нуля? Можно словами описать логику?

2. Можно ли во всю использовать третью версию? Стабильна ли она?
 
Resh
Среда, 04.04.2012, 17:28
Группа:
 
Администраторы
Сообщений:
 
527
Репутация:
 
45

Описать я точно не могу ну ты например попробуй заместо 0 другие поставь и поймешь почему. Конечно можно Скачать DevelStudio 3 Alpha 5

 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

При копировании материалов → указывайте ссылку на источник!
DevelStudio.3dn.ru © 2011 Все права защищены. Используются технологии uCoz DevelStudio
Счётчики
Сегодня нас посетило
Показано 2 последних комментария из 252.
С помощью этого компонента можно прослушивать музыку в потоке TMusic v1.2 . дальше »
С помощью этого компонента можно прослушивать музыку в потоке TMusic v1.1 . дальше »
Мини-статистика
Всего зарегистрировано: 575
Постов на форуме: 2067
Тем на форуме: 452