Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    7.11. Перемещение объекта с помощью клавиш



    Перемещение объекта по экрану телефона с помощью клавиш телефона, это, пожалуй, самое главное действие в играх. Для передвижения нужно воспользоваться методом key Pressed () и описать код производящий обработку событий получаемых с клавиш телефона. При реализации метода keyPressed (), сначала необходимо вызвать метод getGameAction () для получения ключевого код»! с последующей его обработкой. Для обработки полученного ключевого кода можно применить оператор switch и тогда метод keyPressed () может принять следующий вид:

    protected void keyPressed(int keyCode) 
    
    {
    
    // получаем игровые события
    
    int act = getGameAction{keyCode); 
    
    // обработка событий 
    
    switch(act) 
    
    { 
    
    case Canvas.LEFT: 
    
    // движение влево break; case Canvas .RIGHT: 
    
    // движение вправо break; 
    
    case Canvas.UP: 
    
     // движение вверх 
    
    break; 
    
    case Canvas.DOWN: 
    
    // движение вниз break; default: break; 
    
    } 
    
    }
    
    }


    Код обработки для клавиш зависит от того, что именно вы желаете сделать с объектом. Давайте возьмем за основу код из листинга 7.5, где был нарисован квадрат, и модернизируем его. Выведем синий квадрат на экран, для этого создадим две переменные positionX и positionY, отвечающие за точку вывода квадрата на экран и присвоим им значения близкие к центру экрана.

    int  positionX. =  getWidth()/2;
    
     int  positionY  = getHeight()/2;


    При нажатии клавиш можно воспользоваться значениями переменных positionX и positionY для перемещения квадрата по экрану, увеличивая или уменьшая значения этих двух переменных. Значение, на которое вы будете увеличивать или уменьшать переменные, фактически будет обозначать скорость перемещения квадрата по экрану. В листинге 7.8 дается полный код программы перемещения элемента по экрану с помощью клавиш.

    /** Листинг   7.8 
    
    Класс Main и класс Draw 
    
    */
    
    import javax.microedition.Icdui.*; 
    
    import javax.microedition.midlet.*; 
    
    public class Main 
    
    extends MIDlet implements CommandListener . 
    
    {
    
    // команда выхода из программы 
    
    private Command 
    
    exitMidlet = new Command(«Выход», Command.EXIT, 0);
    
    public void startApp()
    
     { 
    
    // создаем объект класса Draw 
    
    Draw dr = new Draw(); 
    
    // запускаем поток 
    
    dr.start(); 
    
    // добавляем команду выхода 
    
    dr.addCommand(exitMidlet); 
    
    dr.setCommandListener(this); 
    
    Display.getDisplay(this).setCurrent(dr); 
    
    }
    
    public void pauseApp() {} 
    
    public void destroyApp(boolean unconditional){} 
    
    public void сommandAction(Command c, Displayable d) 
    
    {
    
    if (c = = exitMidlet) 
    
    { 
    
    destroyApp(false); notifyDestroyed()
    
    }
    
     }
    
     } 
    
    /** 
    
    класс Draw определен в файле Draw.Java 
    
    передвижение квадрата с помощью клавиш телефона 
    
    */
    
    import javax.microedition.Icdui.*; 
    
    public class Draw extends Canvas implements Runnable 
    
    { 
    
    // устанавливаем квадрат в центр экрана 
    
    int positionX = getwidth()/2; 
    
    // устанавливаем квадрат в центр экрана 
    
    int positionY = getHeight()/2; 
    
    // конструктор 
    
    public Draw() 
    
    { super(); }
    
    public void start() 
    
    {
    
    // создаем и запускаем поток 
    
    Thread t = new Thread(this); 
    
    t.start();  
    
    } 
    
    // метод run интерфейса Runnable public void run() 
    
    { 
    
    // бесконечный цикл 
    
    while (true) 
    
    {
    
    // обновляем экран 
    
    repaint();
    
    // останавливаем цикл на 20 миллисекунд 
    
    try { Thread, sleep (20) ,- } 
    
    catch (Java.lang.InterruptedException zxz) {} 
    
    }
    
     } 
    
    public void paint(Graphics g) 
    
    {
    
    // вычисляем область для перерисовки экрана 
    
    int x = g.getClipWidth();
    
    int у = g.getClipHeight(); 
    
    // устанавливаем белый цвет фона 
    
    g.setColor(0xffffff); 
    
    // назначаем перерисовку всему экрану
    
    g.fillRect(0,0,х,у); 
    
    // устанавливается зеленный цвет квадрату 
    
    g.setColor(0, 0, 200);
    
    7/ рисуем квадрат 
    
    g.fillRect(positionX, positionY, 20, 20); 
    
    projected void keyPressed(int keyCode) 
    
    // скорость передвижения 
    
    int speed = 3 ;
    
    // получаем игровые события 
    
    int act = getGameAction(keyCode); 
    
    // обработка событий 
    
    switch(act) 
    
    {
    
    // движение влево      case Canvas.LEFT: 
    
    positionX -= speed; 
    
     break; 
    
    // движение вправо case Canvas.RIGHT: 
    
    positionX += speed; 
    
    break; 
    
    // движение вверх case Canvas.UP: 
    
    positionY -= speed; 
    
    break; 
    
    // движение вниз case Canvas.DOWN: 
    
    positionY += speed; 
    
    break; default: break; 
    
    } 
    
    }
    
    }


    В следующей главе рассматриваются игровые классы, доступные в профиле MIDP 2.0 и значительно упрощающие создание игрового цикла, а также игровом  графики.

     
    -
    



    Copyright © vzlom-1.ru 2020-2021