Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизKeyDown Найти похожие ветки
← →
Nikss (2006-08-25 09:58) [0]Здравствуйте! Подскажите, пожалуйста, ответ на такой глупый вопрос: у меня есть процедура FormKeyDown, в которой в случае нажатия определенной клавиши обрабатывается соответствующее событие. Мне нужно в другой процедуре записать такое условие: "пока ни одна из предусмотренных клавиш не нажата, выполнять такое-то действие". Как это записать?
← →
Ketmar © (2006-08-25 10:11) [1]игру пишем?
вариантов много.
а) изменить логику работы программы;
б) appEvents.OnIdle();
в) таймер.
пока хватит.
← →
Сергей М. © (2006-08-25 10:15) [2]var SomeKeyPressed: Boolean; //глоб.переменная
в обработчике FormKeyDown:
if Key := ... then SomeKeyPressed := True;
..
в процедуре:
while not (Application.Terminated or SomeKeyPressed) do begin
DoSomething;
Application.ProcessMessages;
end;
SomeKeyPressed := False;
← →
DevilDevil © (2006-08-25 16:29) [3]
KeyArray : array[0..255] of boolean;
OnCreate:
var i : integer;
begin
for i := 0 to 255 do KeyArray[i] := false;
end;
OnKeyDown:
KeyArray[Key] := true;
OnKeyUp:
KeyArray[Key] := false;
function IsKeyPressed(Key : byte) : boolean;
begin
Result := KeyArray[Key];
end;
Кидаешь на форму компонент ApplicationEvents
По событиюOnIdle
пишешь:begin
if KeyPressed(VK_ESCAPE) then Application.Terminate;
if KeyPressed(VK_LEFT) then ; //переместить игрока влев
if KeyPressed(VK_RIGHT) then ; //переместить игрока вправо
// и т.д.
end;
← →
DevilDevil © (2006-08-25 16:51) [4]в процедуре
OnIdle
сразу послеbegin
надо написатьDone := false;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c