В MIDletPascal предусмотрены две функции, позволяющие опрашивать клавиатуру телефона: GetKeyPressed и GetKeyClicked.
Функция GetKeyPressed возвращает код нажатой в данный момент клавиши или KE_NONE если ничего не нажато.
Функция GetKeyClicked возвращает код последней кликнутой (т.е. нажатой и отпущеной) клавиши или KE_NONE если ничего нажато не было.
Стандартные коды клавиш описаны в списке констант:
Эти клавиши имеют одинаковые стандартные коды на всех моделях телефонов.
К сожалению, клавиши стрелок и другие специальные клавиши имеют коды, которые отличаются у разных моделей мобильных телефонов. Чтобы обойти эту проблему, MIDletPascal имеет функцию KeyToAction, которая преобразует код клавиши в код действия. Она получает в качестве единственного параметра код клавиши и возвращает одну из следующих предопределенных констант: GA_NONE, GA_UP, GA_DOWN, GA_LEFT, GA_RIGHT, GA_FIRE, GA_GAMEA, GA_GAMEB, GA_GAMEC, GA_GAMED.
Предлагаемый ниже пример программы позволяет пользователю перемещать по экрану текст, используя для управления клавиши стрелок. Программа завершается, когда пользователь нажимает "Fire" или клавишу нуля.
program MoveText;
var x, y: integer;
keyCode: integer;
begin
repeat
keyCode := GetKeyPressed; // опрос текущей нажатой клавиши
if KeyToAction(keyCode) = GA_UP then y := y - 1;
if KeyToAction(keyCode) = GA_DOWN then y := y + 1;
if KeyToAction(keyCode) = GA_LEFT then x := x - 1;
if KeyToAction(keyCode) = GA_RIGHT then x := x + 1;
SetColor(255, 255, 255); // назначить текущим цветом рисования белый
FillRect(0, 0, GetWidth, GetHeight); // очистка экрана путем рисования
// прямоугольника размером с экран
SetColor(0, 0, 0); // назначить текущим цветом рисования черный
DrawText('Hello world', x, y); // нарисовать текст в заданном месте
Repaint;
Delay(100);
until (keyCode = KE_KEY0) or (KeyToAction(keyCode) = GA_FIRE);
end.
|
|
К содержанию
|
|
![]() |
Скачать новую версию данного учебника в одном архиве
Курс находится в процессе разработки, поэтому архив постоянно обновляется! |