Опрос кнопок телефона

В 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.

В определенных случаях вам потребуется дать пользователю возможность ввести некоторый текст. Функции GetKeyPressed и GetKeyClicked не годятся для этого. Ввод текста осуществляется с помощью форм, которые будут описаны далее.





 
К содержанию

 
Скачать новую версию данного учебника в одном архиве

Курс находится в процессе разработки, поэтому архив постоянно обновляется!




 
Hosted by uCoz