Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отлов нажатий клавиш по форме 
V
    Опции темы
Кирилл
Дата 6.1.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



Здрасьте!
Хочу я написать простую 2D (а может потом и 3D) аркаду с управлением с клавы. Но одна проблемка - событие MousMove только для активного обьекта. И что, обрабатывать для всех обьектов?  smile А как делают по нормальному?
Я не программист, я только учусь...
PM MAIL   Вверх
nv_xor
Дата 6.1.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2007

Репутация: нет
Всего: нет



Наверное под объектами понимаются какие либо контролы. Если так, то скорее всего нужно использовать Hooks, т. к. контролы - это окна, со своей оконной процедурой. Хотя я даже не представляю, как это реализовать на VB.
PM MAIL   Вверх
cardinal
Дата 6.1.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Попробуй вот это...
http://www.activevb.de/tipps/vb6tipps/tipp0070.html


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nv_xor
Дата 7.1.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2007

Репутация: нет
Всего: нет



Проверять состояние клавиш с помощью таймера, думаю, для игр это мало подходит...
PM MAIL   Вверх
RomanVb
Дата 7.1.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.5.2006

Репутация: нет
Всего: нет



Кирилл, так тебе управление с клавы надо или MousMove ?
PM MAIL   Вверх
cardinal
Дата 7.1.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(nv_xor @  7.1.2007,  07:29 Найти цитируемый пост)
Проверять состояние клавиш с помощью таймера, думаю, для игр это мало подходит... 

VB для игр тоже мало подходит, но т.к.
Цитата(Кирилл @  6.1.2007,  19:38 Найти цитируемый пост)
Хочу я написать простую 2D (а может потом и 3D) аркаду с управлением с клавы.

то может и этого хватит...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Кирилл
Дата 7.1.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



cardinal, спасибо, работает
Цитата(RomanVb @  7.1.2007,  12:33 Найти цитируемый пост)
Кирилл, так тебе управление с клавы надо или MousMove ?

Сорри, ошибся - не MousMove, аKeyPress
cardinal, а что делает GetAsyncKeyState?

Это сообщение отредактировал(а) Кирилл - 7.1.2007, 18:10
PM MAIL   Вверх
cardinal
Дата 7.1.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
http://forum.codenet.ru/showpost.php?p=504...mp;postcount=16


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Кирилл
Дата 7.1.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



Thank you! I understand english very bad, and so
RUSHION PLEASE!!!  smile  smile  smile 
PM MAIL   Вверх
cardinal
Дата 8.1.2007, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Not my problem, english is a must for a programmer! smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Black_Star
Дата 8.1.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Давно я тут не был...

Итак. 
Кирилл, правильно думаешь, что таймером отслеживать ерундово smile
Рульный метод примерно такой:
Код

private sub Form_Load()
  me.show
  Do
    Call (обработка движения)
    Call (прорисовка)
    Call (еще что-нибудь)
    DoEvents
  Loop until GetAsyncKeyState(vbKeyEscape)<0
  end
end sub

PM ICQ   Вверх
Кирилл
Дата 9.1.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



То есть что-то типа цикла ожидания? Но как тогда быть с противниками? Их только через таймер. А можно распознавать, какое произошло событие?
PM MAIL   Вверх
Кирилл
Дата 9.1.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



А почему плохо с таймером?
И что возвращает функция GetAsyncKeyState? Как её использовать?

Это сообщение отредактировал(а) Кирилл - 9.1.2007, 16:33
PM MAIL   Вверх
Black_Star
Дата 9.1.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Кирилл, странно. Я думал ты разобрался с примером, предложенным выше.
GetAsyncKeyState(vbKeyEscape) будет меньше 0 если нажата клавиша ESC.
Цитата

Call (еще что-нибудь)

и подразумевал обработку противников... и еще чего-либо.
DoEvents и служит для того, чтобы прога не "зависла" в тупом цикле, а обрабатывала события системы.

PM ICQ   Вверх
Кирилл
Дата 9.1.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 7.11.2006
Где: Воронеж

Репутация: 1
Всего: 1



Код

    Do
        If DoEvents Then
            Select Case a
                Case GetAsyncKeyState(vbKeyEscape) < 0
                    End
                Case GetAsyncKeyState(vbKeyUp) < 0
                    Command1.Top = Command1.Top + 100
                Case GetAsyncKeyState(vbKeyDown) < 0
                    Command1.Top = Command1.Top - 100
            End Select
        End If
    Loop


Цитата(Black_Star @  9.1.2007,  17:35 Найти цитируемый пост)
GetAsyncKeyState(vbKeyEscape) будет меньше 0 если нажата клавиша ESC.

У меня она ВСЕГДА<0!
Вернее не так - пишу debug.print, получаю 0, но выполняется всёравно
Забиваю первый case - выполняется второй.
Забиваю второй - идёт третий
Не понимать...

Цитата(Black_Star @  9.1.2007,  17:35 Найти цитируемый пост)
...и подразумевал обработку противников... и еще чего-либо.

Но для них нужна задержка, а то скорость перемещения будет зависето только от скорости выполнения цикла. По мойму плохо...

Это сообщение отредактировал(а) Кирилл - 9.1.2007, 21:40
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0905 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.