Иллюстрированный самоучитель по программированию мобильных телефонов

Обработка событий с клавиш телефона

В профиле MIDP 2.0 предусмотрена улучшенная обработка событий получаемых с клавиш телефона. Используя метод getKeyState () можно определять состояние клавиш телефона и действовать адекватным образом. 'В демонстрационном примере к этому разделу мы выведем на экран мячик, созданный при помощи класса MySprite являющимся подклассом класса Sprite.

В листинге 8.2 представлен код примера, в котором на экране рисуется синий мяч, а с помощью клавиш телефона Up, Down, Left и Right этот мяч можно передвигать по экрану. Листинг 8.2 состоит из трех классов: MainGame, MyGameCanvas и MySprite, расположенных в трех разных файлах MainGame.java, MyGameCanvas.java и MySprite.java.

Листинг 8.2. Класс MainGame.

import javax.microedition.Icdui.*;
import javax.microedition.midlet.*;
public class MainGame extends MIDlet implements
CommandListener
{
// команда выхода
private Command exitMidlet = new Command("Выход",
Command.EXIT, 0);
// объект класса MyGameCanvas
private MyGameCanvas mr;
public void startApp()
{
// обрабатываем исключительную ситуацию
try
{
// инициализируем объект класса
MyGameCanvas mr = new MyGameCanvas();
// запускаем поток mr.start();
// добавляем команду выхода
mr.addCommand(exitMidlet);
mr.setCommandLis'tener (this);
// отражаем текущий дисплей
Display.getDisplay(this).setCurrent(mr);
}
catch (Java.io.lOException zxz) {};
}
public void pauseApp() {}
public void destroyApp(boolean unconditional)
{
// останавливаем поток
if(mr!= null) mr.stopt);
}
public void commandAction (Command c, Displayable d;)
{
if (с == exitMidlet)
{
destroyApp(false); notifyDestroyed();
}
}
}
/**
файл MyGameCanvas.Java класс MyGameCanvas
*/
import java.io.*;
import javax.microedition.Icdui.*;
import javax.microedition. Icdui.game.*;
public class MyGameCanvas extends GameCanvas implements
Runnable
{
// создаем объект класса MySprite
private MySprite bol;
// создаем объект класса Lay'erManager
private LayerManager lm;
// логическая переменная
boolean z;
public MyGameCanvas() throws IOException
{
// обращаемся к конструктору суперкласса Canvas
super(true);
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.