В 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. |
К содержанию
|
|
![]() |
Скачать новую версию данного учебника в одном архиве
Курс находится в процессе разработки, поэтому архив постоянно обновляется! |