Создание игр для мобильных телефонов - [18]

Шрифт
Интервал

Понятие о мидлетах

Sun Microsystems использует суффикс «let» для обозначения различных типов программ, создаваемых с помощью Java. Апплеты (applet), сервлеты (servlet), спотлеты (spotlet) и теперь мидлеты (MIDlet) – это лишь часть из них. Мидлеты – это программы, разработанные с использованием J2ME API, которые запускаются в мобильной среде. Мидлетам требуется особая среда выполнения. Эта среда главным образом состоит из менеджера приложений (application manager), который выполняет функции выбора и запуска мидлетов на мобильном устройстве. Этот менеджер приложений для мидлетов отвечает за создание обрамляющего окна мидлета.

Внутри мидлета

Пожалуй, не столь удивительно, что каждый мидлет должен быть производным от стандартного класса, являющегося частью MIDP API. Этот класс расположен в пакете javax.microedition.midlet и носит название MIDlet. Хотя этот класс определяет несколько методов, три из них очень важны для разработки собственных мидлетов:

► startApp() – запустить мидлет;

► pauseApp() – приостановить выполнение мидлета;

► destroyApp() – удалить мидлет.

Чтобы лучше понять, как эти методы влияют на мидлет, важно уяснить, что мидлет имеет три различных состояния, определяющих его работу: Active (Активное), Paused (Приостановленное) и Destroyed (Разрушенное). Этим трем состояниям соответствуют три метода, которые обычно напрямую вызываются менеджером приложения среды выполнения. В некоторых случаях вы можете вызывать их самостоятельно, особенно метод destroyApp(). Эти методы объединены термином «методы жизненного цикла» (life cycle methods), потому что они управляют жизненным циклом мидлета. Именно эти методы позволяют менеджеру приложений управлять несколькими мидлетами и предоставлять каждому из них доступ к ресурсам устройства.

Жизненный цикл мидлета

Жизненный цикл состоит из трех частей, о которых вы только что узнали. В обычном мидлете большая часть времени проходит в состояниях Active и Paused, а при закрытии мидлета он переходит в состояние Destroyed до тех пор, пока не будет полностью удален из памяти. В большинстве случаев вы переопределяете методы жизненного цикла мидлета, потому как важно выделять и высвобождать ресурсы мобильного телефона в соответствии с каждым из состояний. Например, при запуске игрового мидлета, вероятно, возникает необходимость создать объекты и/или загрузить данные. Когда выполнение мидлета приостанавливается, целесообразно высвободить часть ресурсов, закрыть соединения с сетью и приостановить воспроизведение музыки в игре. И, наконец, при условии разрушения мидлета необходимо высвободить память, а также сохранить нужные данные.

Помните, что мидлет может входить и выходить из состояний Active и Paused не один раз в течение жизненного цикла. Но если мидлет войдет в состояние Destroyed, он уже не сможет вернуться обратно. С этой точки зрения, отдельный игровой мидлет может прожить лишь одну жизнь.

Команды мидлета

Кроме переопределения методов жизненного цикла, большинство мидлетов реализуют метод commandAction(), обработчик событий, определенный интерфейсом javax.microedition.ldui.CommandListener. Команды используются для контроля игровых мидлетов и инициализации таких действий, как приостановка игры, сохранение данных, изменение настроек и выход из игры. Команды мидлета доступны через экранные кнопки (soft button) или меню и должны обрабатываться методом commandAction().

...

В копилку Игрока

Экранные кнопки (soft buttons) – это специальные кнопки, расположенные на дисплее мобильного телефона. Они предназначены для выполнения специальных команд мидлетов. Щелчок по кнопке выполняет команду, с которой эта кнопка связана. Щелчки по кнопкам для управления игрой обрабатываются иначе, чем нажатия экранных кнопок. Подробнее вы узнаете об этом из главы 6.

Дисплей, экраны и холсты

Одна из важнейших концепций мидлетов, которой стоит уделить внимание, – это класс Display, представляющий собой менеджер экрана мобильного устройства. Класс Display определен в пакете javax.microedition.lcdui, как и GUI-классы. Этот класс отвечает за управление экраном и вводом пользователя.

Вам не придется создавать объект Display, обычно вы получаете ссылку на объект Display в методе startApp() игрового мидлета, после чего настраиваете экран и пользовательский интерфейс. Для каждого мидлета, выполняемого на устройстве, существует только одно представление Display.

Другой важный класс, имеющий отношение к экрану устройства, – это javax.miccroedition.lcdui.Canvas, который представляет собой абстрактную поверхность для рисования, размер которой равен размеру экрана. Холст (canvas) используется для выполнения прямых операций рисования, например, рисования линий и кривых или отображения картинок. Как вы, вероятно, можете догадаться, холсты формируют основу для вывода игровых изображений. На самом деле существует специальный класс javax.microedition.lcdui.GameCanvas, который предназначен для создания графики для игр. Класс GameCanvas отличается от класса Canvas тем, что поддерживает высокоэффективные средства отображения анимации, часто применяемой в играх.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Программное обеспечение и его разработка

Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.


Создание инструмента научных исследований на основе XML: Проблемы и методология

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


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Идиомы и стили С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Тонкости дизассемблирования

Очень часто под рукой не оказывается ни отладчика, ни дизассемблера, ни даже компилятора, чтобы набросать хотя бы примитивный трассировщик. Разумеется, что говорить о взломе современных защитных механизмов в таких условиях просто смешно, но что делать если жизнь заставляет?..