|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Движение 2-ух объектов одновременно
На форме есть 2 Shape в виде круга. Я прописал их движение на кнопки
Первый передвигается на стрелочки, второй на NUMPAD'e. Проблема в том, что они одновременно двигаться не хотят. Писал через оператор Case, if и задавал горячие клавиши и всё равно двигаются только по очереди. Код:
case Key of VK_UP: begin Gamer1.Top := Gamer1.Top -12; Exit; end; VK_LEFT: begin Gamer1.Left := Gamer1.Left-12; Exit; end; VK_Right: begin Gamer1.Left := Gamer1.Left+12; Exit; end; VK_DOWN: begin Gamer1.Top := Gamer1.Top +12; Exit; end; //end; //case Key of {VK_NUMPAD8: begin Gamer2.Top := Gamer2.Top -12; Exit; end; VK_NUMPAD4: begin Gamer2.Left := Gamer2.Left -12; Exit; end; VK_NUMPAD6: begin Gamer2.Left := Gamer2.Left +12; Exit; end; VK_NUMPAD5: begin Gamer2.Top := Gamer2.Top +12; Exit; end; end;} примерный код. Если объединять в 1 Case то так же двигаются по 1. |
#2
|
||||
|
||||
А NumLock зажечь пробовали? без горящего светодиода коды для основных стрелок и на цифровой части совпадают. Но это тоже не поможет, будет двигаться тот шейп, кого двинули первым, нужно выносить перемещение из обработчика жима на таймер, а из него следить за состоянием клавиш посредством вызова GetKeyboardState для TKeyboardState
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Вешай поток и в нем проверяй через GetKeyState.
|
#4
|
||||
|
||||
Это не совсем так. Если вы будете быстро нажимать и отпускать клавиши, то все будет работать как задумано, а вот если вы зажмете одну клавишу и не отпуская ее нажмете вторую это уже будет не два разных нажатия а одно сложное и обрабатывать его тоже надо соответственно, а для этого есть функция GetAsyncKeyState(). Применительно к вашим шейпам делаем проверку на нажатие клавиши А:
Код:
if GetAsyncKeyState(65) < 0 then Shape2.Left := Shape2.Left - 1; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Да на таймере всёж легче выполнить, вот пример под D7
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |