Навигация сайта

  • Главная
  • Статьи
  • Учебники
  • Программы
  • Друзья сайта
Delphi программирование клавиатуры

Обработка ввода с клавиатуры

Автор неизвестен
Опубликовал: Администратор
29.05.2007г.

Я модифицировал обработчик OnKeyDown для обработки нажатий клавиш курсора, которые используются для передвижения анимационных объектов по экрану, как представлено в листинге 1.

Листинг 1 Передвижение анимационных объектов с помощью клавиш курсора.

//////////////////////////////Код Delphi

procedure TForm1.FormKeydown (Sender: TObject; var Key: Word;    

Shift: TShiftState) ;    
var Speed : integer ;    

Anoption : integer ;    
begin
Speed := 4 ;    

if ssShift in Shift then Speed := I ;    
case Key of    

VK_ESCAPE, VK_F12 : Close ;    
VK_LEFT : XVelocity := -Speed ;    
VK_RIGHT : XVelocity := Speed ;    
VK_UP    : YVelocity := -Speed ;    
VK_doWN : YVelocity := Speed ;    
VK_SHIFT : begin

if Abs( XVelocity ) > I then XVelocity := XVelocity div 4 ;    
if Abs( YVelocity ) > I then YVelocity := YVelocity div 4 ;    

end ;    

byte( '0' )..byte( '9' )   : begin
Anoption := Key -48 ;    

if Anoption <= Animations. Count then MoveOption : = Anoption    
end ;    
end ;    
end;


Если удерживать клавишу Shift, анимационный объект будет передвигаться в четыре раза медленней, для этого необходимо определять значение локальной переменной Speed. Я добавил поля скоростей XVelocity и YVelocity, которые получают значение при нажатии какой-либо из клациш курсора. Клавиша Shift при нажатии снижает скорость, если она еще недоста точно медленная. Клавиши от 0 до 9 определяют значение MoveOption, которое указывает, каким объектам перемещаться. Заметьте, что наличие мониторинга нажатия определенной клавиши означает, что анимационный объект может по-разному реагировать на различные комбинации клавиш. В этом случае, вы можете передвигать спрайты по диагонали, если вы будете удерживать сразу две клавиши управления курсором. Теперь необходимо ввести обработчик ОnКеуUp для учета количества отжатия клавиши. Это представлено в листинге 2.    

Листинг 2 Отслеживание отжатых клавиш.

//////////////////////////////Код Delphi

procedure TForm1.FormKeyUp (Sender: TObject; var Key: Word;    
Shift: TShiftState);    

begin
// проверка отпускания клавиши управления курсором

case Key of    
VKJLEFT,    

VK_RIGHT : XVelocity := 0 ;    
VK_UP,    

VK_doWN  : YVelocity :== 0 ;    
VK_SHIFT : begin
XVelocity :== XVelocity * 4 ;    
YVelocity := YVelocity * 4 ;    
end ;    
end ;    
end;



Как вы видите, движение прекращается в горизонтальном и вертикальном направлениях, если клавиша управления курсором отпущена, и скорость увеличивается в четыре раза, если отпускается клавиша Shift.

 

Техническая поддержка и аудит сайта.