• Принципы создания картинок для сотовых телефонов
  • Создание анимации
  • Создание flash-анимации
  • Написание игр с помощью J2ME
  • Необходимые инструменты
  • Модель приложения
  • Компиляция и запуск приложения
  • Глава 6

    СОЗДАНИЕ КАРТИНОК, АНИМАЦИИ И ИГР

    Где искать мелодии и как их создавать самостоятельно, вы уже знаете. Эта глава будет посвящена картинкам, анимациям и играм для мобильных телефонов. Прочитав эту главу, вы научитесь самостоятельно создавать анимированные картинки средствами Macromedia Flash, а также программировать простейшие игры на языке Java.

    Принципы создания картинок для сотовых телефонов

    Сегодня картинки стали неотъемлемой частью мобильного телефона. Еще во времена черно-белых экранов было популярно устанавливать различные изображения, а когда экраны стали цветными, причем приобрели довольно высокое разрешение (более 128 x 128 точек), на телефонах стали хранить целые галереи изображений и даже фотографии. Однако где взять эти самые картинки? Ответ прост: нужно всего лишь отправить SMS на нужный номер. Устраивает? Если нет, тогда предлагаю еще более простое решение – создать картинку самому. Все, что от вас потребуется, – это доступ к компьютеру и пара минут свободного времени.

    У многих пользователей на жестком диске хранится множество различных цифровых изображений. Тогда зачем покупать картинки, если своих более чем достаточно? Их нужно просто немного доработать, чтобы изображения корректно отображались на экране телефона.

    Итак, что вам понадобится? Естественно, компьютер и программа для работы с графикой. Не обязательно для этого устанавливать мощный графический пакет: вполне достаточно будет обычного приложения для просмотра изображений с минимальными возможностями редактирования. В качестве примера будем использовать очень популярное приложение ACDSee.

    Для начала нужно выбрать изображение, которое вы хотите отправить на свой мобильный телефон. Допустим, вы желаете установить на телефон изображение, представленное на рис. 6.1.


    Рис. 6.1. Картинка, которую будем «готовить» для телефона.


    Как видите, соотношение сторон рисунка совсем не соответствует соотношению сторон экрана мобильного телефона. К тому же изображение имеет разрешение 397 x 570 точек, а экранов с таким разрешением точно нет. Размеры мобильного изменить вряд ли удастся, поэтому нужно менять размеры изображения.

    Для этого следует открыть изображение в соответствующем приложении (в данном случае ACDSee 6) и перейти в режим редактирования (в ACDSee для этого используют команду Modify > Edit Mode (Изменить > Режим правки) или сочетание клавиш Ctrl+E).

    Ниже, на рис. 6.2, представлено окно программы ACDSee в режиме редактирования. Справа находится панель редактирования, на которой расположен список инструментов. Из всего списка вам понадобятся только инструменты Crop (Обрезка) и Resize (Изменить размер).

    Следующий шаг – изменение соотношения сторон рисунка. Если экран вашего мобильного имеет форму квадрата, то рисунок тоже нужно сделать квадратным. Как этого добиться? Очень просто – обрезать лишнее.

    Итак, нажимаем кнопку Crop (Обрезка), расположенную на панели инструментов справа. На экране появится рамка, позволяющая выбрать область обрезки (рис. 6.3).


    Рис. 6.2. Окно редактора ACDSee.


    Рис. 6.3. Режим обрезки изображения.


    Обратите внимание, что нужно получить квадратное изображение, поэтому рамка должна иметь квадратную форму. Чтобы облегчить себе задачу, можно установить размеры рамки вручную. Делают это, указав на панели редактирования значения полей Width (Ширина) и Height (Высота). Если сложно выбрать нужную высоту и ширину рамки, можно установить флажок Constrain cropping proportion (Придерживаться пропорций при обрезке) и выбрать соотношения сторон.

    После того как вы определились с размером рамки и установили ее в нужную позицию, нажмите кнопку Done (Готово), чтобы удалить часть изображения, находящуюся вне ее.

    Теперь пора уменьшить изображение, чтобы его разрешение совпадало с разрешением экрана телефона. Для этого перейдите в режим Resize (Изменить размер), нажав кнопку Resize (Изменить размер) на панели инструментов.

    На панели редактирования, расположенной в правой части окна, вы можете видеть поля Width (Ширина) и Height (Высота), предназначенные для установки ширины и высоты изображения. Допустим, экран имеет разрешение 128 x 128 точек, значит, нужно установить ширину и высоту изображения равными 128 (рис. 6.4.).


    Рис. 6.4. Режим изменения размера изображения.


    После того как вы изменили размеры, нажмите кнопку Done (Готово) и сохраните изображение, нажав кнопку

    расположенную на панели инструментов в верхней части экрана.

    Теперь осталось только загрузить изображение в телефон. Если вы хотите провести дополнительное редактирование, например изменить яркость, контрастность, можно воспользоваться соответствующими инструментами панели редактирования.

    Для профессиональной работы с изображениями используют такие графические редакторы, как Adobe Photoshop, CorelDRAW и Macromedia FreeHand. Они позволяют существенно доработать картинку, добавить в нее новые объекты и т. п.

    Еще раз напомним общий алгоритм преобразования изображения перед отправкой на мобильный телефон.

    1. Открыть изображение в графическом редакторе.

    2. Обрезать лишние части изображения, то есть соотношение сторон изображения должно быть равным соотношению сторон экрана мобильного телефона.

    3. Масштабировать изображение. Вы должны установить ширину и высоту равными ширине и высоте экрана телефона. В этом случае картинка будет развернута на весь экран.

    4. Сохранить изображение в формате, поддерживаемом мобильным телефоном. Если мобильный поддерживает формат JPG, используйте его, так как он обеспечивает наилучшее соотношение размер/качество.

    На этом закончим рассмотрение создания картинок для мобильных телефонов. У вас есть общий алгоритм работы и конкретный пример. После некоторой практики преобразование изображения в нужный формат будет занимать не более 3-5 минут.

    Создание анимации

    Современные мобильные телефоны поддерживают не только статичные изображения, но и анимированные GIF-файлы. Все больше пользователей ставят в качестве заставки на экран телефона динамичные изображения, ведь они гораздо привлекательнее.

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

    Создать динамичное изображение совсем несложно. Все, что от вас потребуется, – это минут 15–20 свободного времени и, кончено, фантазия.

    Итак, для начала нужно создать кадры, из которых будет состоять анимация. Это можно сделать в любом графическом редакторе: Microsoft Paint, CorelDRAW или Adobe Photoshop. Например, на рис. 6.5 изображено окно Microsoft Paint, в котором создан один из кадров будущей анимации.


    Рис. 6.5. Пример кадра в Microsoft Paint.


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

    Когда все кадры созданы, пора собирать из них анимированный файл. Для этого будем использовать программу GIF Movie Gear, демонстрационную версию которой можно бесплатно скачать с сайта www.moviegear.com. Это приложение предоставляет все необходимые инструменты для создания полноценной анимированной картинки: масштабирование, установка времени задержки, предварительный просмотр и др.

    Запустим программу GIF Movie Gear (рис. 6.6).

    Чтобы приступить к созданию анимированного файла, нажмите кнопку Insert Frames (Вставить кадры). В результате в окно будет добавлен первый кадр. Для добавления остальных кадров воспользуйтесь сочетанием клавиш Ctrl+I. Откроется окно проводника, в котором вас попросят выбрать нужный файл. Чтобы добавить файл, дважды щелкните на нем кнопкой мыши. Повторите эту процедуру для всех кадров вашей анимации, причем добавляйте их по порядку. Это избавит вас от дополнительной работы в будущем. Если вы хотите загрузить уже готовую анимированную картинку, чтобы ее отредактировать, воспользуйтесь кнопкой Open File (Открыть файл).


    Рис. 6.6. Окно программы GIF Movie Gear.


    В результате у вас должно получиться нечто похожее на то, что вы видите на рис. 6.7.

    Теперь давайте настроим параметры анимации. Сначала установим время, в течение которого кадр будет находиться в активном состоянии. Для этого выделите нужный кадр и установите время задержки в поле с изображением часов, расположенном на панели инструментов (рис. 6.8).

    Обратите внимание, что время задержки устанавливается в условных единицах. Одна условная единица равна 1/100 секунды.


    Рис. 6.7. Кадры для будущей анимации.


    Рис. 6.8. Установка задержки.


    После установки времени задержки нужно задать геометрические размеры анимации. Сделать это можно, выполнив команду Animation > Resize (Анимация > Изменение размера). Появится соответствующее окно (рис. 6.9).

    Задайте значения Width (Ширина) и Height (Высота) и нажмите кнопку OK. Оптимальная высота и ширина зависят от размеров дисплея мобильного телефона.

    Вам, конечно же, захочется посмотреть, что получилось, еще до загрузки файла в телефон. Сделать это очень просто – воспользуйтесь комбинацией клавиш Ctrl+P или нажмите кнопку Play (Воспроизвести) на панели инструментов. В результате на экране появится проигрыватель GIF-анимации (рис. 6.10), в котором вы и увидите результат ваших трудов.


    Рис. 6.9. Масштабирование анимации.


    Рис. 6.10. Проигрыватель GIF-анимации.


    Когда все сделано, остается только сохранить все одним файлом на жестком диске. Для этого используйте команду меню File > Save GIF Animation As (Файл > Сохранить GIF-анимацию как).

    Осталось только загрузить анимацию в телефон.

    Еще хотелось бы рассказать об одной несложной, но очень полезной функции программы GIF Movie Gear – оптимизации анимированного файла.

    По умолчанию в выходном файле сохраняются все кадры изображения полностью, в результате чего размер файла может оказаться большим, чем хотелось бы. Однако ведь обычно при переходе от кадра к кадру изменяется лишь небольшая часть изображения, иногда даже менее 10 %. Так вот, программа GIF Movie Gear оптимизирует файл так, что сохраняется не весь кадр, а только часть, отличающаяся от предыдущего.

    Чтобы воспользоваться функцией оптимизации, выполните команду Animation > Optimize (Анимация > Оптимизировать) или воспользуйтесь комбинацией клавиш Ctrl+T. Появится соответствующее окно (рис. 6.11).


    Рис. 6.11. Настройки оптимизации.


    Установите флажок Shrink palettes (global and local) (Смешать палитры (глобальную и локальную)). Это позволит уменьшить размер файла за счет объединения палитр.

    Справа вы можете видеть информацию о размере текущего файла и файла после оптимизации. Как видите, в нашем случае он уменьшится на 23,1 %, что очень даже неплохо. В некоторых случаях размер оптимизированного файла может быть в два и более раза меньше, чем размер неоптимизированного. Для завершения процесса оптимизации нажмите кнопку OK.

    В результате будут удалены все неиспользуемые фрагменты изображений. Окно программы примет следующий вид (рис. 6.12).

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

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


    Рис. 6.12. Оптимизированные кадры анимации.

    Создание flash-анимации

    Очень многие современные мобильные телефоны имеют среди прочего программного обеспечения проигрыватель flash-анимации. Это позволяет загружать файлы с расширением SWF и просматривать их на экране мобильного.

    В этом разделе рассмотрим, как создать простой flash-ролик, чтобы потом его можно было экспортировать в телефон. Для работы понадобится программа Macromedia Flash. В качестве примера используется версия Adobe Flash CS3, но вы можете использовать и другую версию данной программы, поскольку изменения в интерфейсе несущественны. Вы не найдете здесь подробного описания приложения и профессиональных приемов работы с ним; для этого обратитесь к соответствующей литературе. В этом разделе будут даны некоторые рекомендации, касающиеся создания роликов именно для мобильных телефонов.

    Для начала запустите редактор flash-графики Adobe Flash CS3 (рис. 6.13).

    Как видите, рабочая область имеет размер 550 x 400 точек, а размеры экранов мобильных телефонов намного меньше. Нужно заметить, что векторная графика отличается легкой масштабируемостью, то есть размер файла и качество изображения не зависят от размера рабочей области. Вы можете создать документ размером 550 x 400 точек, а потом уменьшить его до размера 55 x 40 точек. Однако лучше всего задать размеры заранее. В таком случае гарантированно не будет искажений, и ролик отобразится на весь экран.


    Рис. 6.13. Программа Adobe Flash CS3.


    Чтобы уменьшить размер рабочей области flash-анимации, щелкните правой кнопкой мыши на рабочей области программы и в открывшемся контекстном меню выберите пункт Document Properties (Свойства документа) (рис. 6.14).

    Здесь следует установить высоту и ширину будущего ролика. Лучше всего будет, если эти параметры совпадут с размерами экрана телефона. Для примера создадим анимацию размером 128 x 128 точек. Для указания ширины служит поле width (ширина), а для высоты – поле height (высота). Для подтверждения изменений нажмите кнопку OK.


    Рис. 6.14. Свойства документа.


    Рабочая область готова, можно приступать к рисованию. Не будем придумывать что-то сложное, а нарисуем простую вертушку, как в примере с GIF-анимацией (рис. 6.15).

    Теперь заставим рисунок двигаться, а для этого нужно создать как минимум еще один ключевой кадр. Щелкните правой кнопкой мыши на одном из кадров, например на 12-м. В открывшемся контекстном меню выберите пункт Insert Keyframe (Вставить ключевой кадр).

    Установите указатель временной шкалы на созданный ключевой кадр. Выполните команду меню Modify > Transform > Rotate 90 CCW (Изменить > Трансформация > Поворот на 90° по часовой стрелке). Таким образом вы повернете вертушку на 90° по часовой стрелке.

    Сейчас нужно воспользоваться автоматическим заполнением кадров для построения гладкой анимации. Для этого щелкните правой кнопкой мыши на одном из кадров, расположенных между ключевыми. В открывшемся контекстном меню выберите пункт Create Motion Twin (Создать расчетную анимацию). В результате временная шкала станет похожей на шкалу, изображенную на рис. 6.16.

    Простейший flash-ролик создан. Вы можете нажать клавишу Enter, чтобы просмотреть его.

    Теперь нужно этот ролик сохранить. Для этого используйте команду File > Export > Export Movie (Файл > Экспорт > Экспорт фильма) или комбинацию клавиш Ctrl+Alt+Shift+S. После определения места хранения и имени файла появится окно с настройками экспорта файла (рис. 6.17).


    Рис. 6.15. Готовый рисунок.


    Рис. 6.16. Фрагмент временной шкалы с автоматическим заполнением.


    Здесь из раскрывающегося списка Version (Версия) нужно выбрать версию flash-проигрывателя, для которого будет создаваться ролик (чтобы точно узнать, какая версия установлена на вашем телефоне, обратитесь к документации), нажмите кнопку OK. Ролик готов. Теперь вы можете просмотреть, что получилось. Для этого запустите flash-анимацию. Ролик будет открыт в проигрывателе (рис. 6.18).


    Рис. 6.17. Параметры экспорта ролика.


    Рис. 6.18. Воспроизведение ролика в проигрывателе.


    Теперь осталось только загрузить ролик в телефон и наслаждаться собственным творчеством.

    Таким образом, потратив немного времени, вы получите полноценный ролик, который сможете загрузить в телефон и показать друзьям и знакомым.

    Ниже представлен общий алгоритм создания flash-анимации для телефона.

    1. Создание нового документа в программе Macromedia Flash.

    2. Установка размера рабочего поля равной или пропорциональной размеру экрана мобильного телефона.

    3. Создание анимационного ролика.

    4. Экспортирование ролика в соответствующем формате.

    5. Загрузка анимации в телефон.

    Написание игр с помощью J2ME

    Платформа Java для мобильных устройств (часто именуемая J2ME от Java 2 Micro Edition) является основной платформой для разработки приложений под мобильные телефоны. Разработчики языка позаботились о том, чтобы приложение функционировало одинаково на всех (или почти на всех) аппаратах, для которых оно разрабатывалось.

    Необходимые инструменты

    Для написания программ желательно пользоваться специальными средствами, предназначенными для разработки программного обеспечения на J2ME.

    Нужно заметить, что все описываемые средства являются бесплатными и доступны для свободного скачивания через Интернет с сайта производителя www.sun.com.

    Ниже перечислен необходимый минимум инструментов.

    J2SDK Standart Edition (Java2 Software Development Kit Standart Edition, стандартный набор средств для разработки приложений на Java2). Пакет инструментов для создания программных продуктов на языке Java. В данный пакет входят компилятор, отладчик и др.

    WTK (Wireless Toolkit, набор инструментов для работы с беспроводными устройствами). В этот пакет входят инструменты для разработки приложений на J2ME. Нужно отметить, что WTK – своеобразная «надстройка» над стандартным набором средств, поэтому перед установкой WTK необходимо установить J2SDK Standart Edition.

    Эмулятор телефона. Когда программа будет написана, вы захотите посмотреть на нее в действии. Именно для этого и предназначены эмуляторы. С их помощью вы сможете протестировать свое приложение, не загружая его в мобильный, что значительно экономит время.

    Среда разработки. Оболочка, в которой вы будете писать программный код. Для серьезных проектов обычно используют специальные оболочки типа NetBeans или Borland Builder, но для наших нужд вполне будет достаточно стандартного текстового редактора Блокнот.

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

    Модель приложения

    Программа, написанная на языке Java, состоит из фрагментов, хранящихся в разных файлах. Эти фрагменты называются классами. Причем если приложение состоит более чем из одного класса, то один из них должен быть главным, а все остальные зависимыми. При запуске приложения будет вызываться код главного класса, и уже затем он будет управлять всеми остальными. Если главный класс завершает выполнение, то код остальных также прекращает выполняться.

    В листинге 6.1 представлен минимальный код программы.


    Листинг 6.1. Минимальный код программы


    Несмотря на то что эта программа ничего не делает, то есть является «пустой», она все же является полноценной с точки зрения языка программирования.

    Мидлет (то есть приложение для мобильного телефона) может находиться в трех состояниях: активном, приостановленном и разрушенном. Активно – в этом состоянии приложение находится во время использования, например, когда играете в игру.

    Приостановлено – приложение временно приостанавливает свою деятельность, но не разрушается. Например, когда во время игры вам поступает входящий звонок.

    Разрушено – приложение завершает свое выполнение, то есть выгружается из памяти. Например, вы закончили играть.

    Как можно видеть на рис. 6.19, при запуске приложения оно сначала переходит в состояние «приостановлено». Затем, если происходит какая-либо ошибка, приложение переходит в состояние «разрушено» и выгружается из памяти. Если же инициализация прошла успешно, то приложение переходит в состояние «активно», то есть начинает свою работу. Нужно заметить, что за время своего выполнения работа может несколько раз приостанавливаться и продолжаться.


    Рис. 6.19. Жизненный цикл приложения.


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

    Итак, жизненный цикл приложения понятен, теперь рассмотрим, какие методы отвечают за переход в каждое состояние.

    • startApp – вызывается, когда приложение переходит в активное состояние.

    • pauseApp – отвечает за переход в приостановленное состояние, проще говоря, за паузу.

    • destroyApp – вызывается, когда приложение должно завершить свое выполнение, то есть разрушиться.

    Немного модифицировав диаграмму, рассмотрим полный жизненный цикл приложения, включая методы, отвечающие за переходы из одного состояния в другое (рис. 6.20).


    Рис. 6.20. Переходы между состояниями.


    Теперь, если мы немного дополним нашу программу и внесем в нее только что рассмотренные методы, код будет выглядеть следующим образом (листинг 6.2).


    Листинг 6.2. Модифицированный код


    Эта программа тоже ничего не выполняет, но имеет некоторые дополнения. Например, при входе в активное состояние, то есть при запуске, в консоль будет выведена строка Вход. При выходе из программы в консоли появится строка Выход. Таким образом, вы сами сможете следить за изменением состояния программы.

    Компиляция и запуск приложения

    Давайте проверим работоспособность нашей программы на практике. Запустите пакет J2ME Wireless Toolkit. Для этого откройте папку WTK22\bin (по умолчанию она расположен на диске C:) и запустите файл ktoolbar.exe. Отроется окно, представленное на рис. 6.21.


    Рис. 6.21. Окно программы J2ME Wireless Toolkit.


    Теперь создадим новый проект. Для этого нажмите кнопку New Project (Новый проект), расположенную в левом верхнем углу окна. Перед вами появится окно, изображенное на рис. 6.22.



    Рис. 6.22. Окно создания нового проекта.

    Поле Project Name (Имя проекта) содержит название вашего проекта. То, что вы введете в это поле, будет отображаться как название программы. Введите в него MyProject.

    Поле MIDlet Class Name (Имя класса MIDlet) содержит название главного класса приложения, с которого будет начинаться выполнение программы. Содержимое поля MIDlet Class Name (Имя класса MIDlet) и название главного класса обязательно должны совпадать. Введите в этом поле MyClass.

    После завершения ввода нажмите кнопку Create Project (Создать проект). Появится окно, содержащее сведения о свойствах проекта (рис. 6.23).


    Рис. 6.23. Свойства проекта.


    В свойствах проекта ничего менять не станем, оставим все как есть. Просто нажмите кнопку OK. Можно считать, что проект создан. Об этом свидетельствует содержимое консоли пакета J2ME Wireless Toolkit.

    Пора вносить программный код. Перейдите в папку WTK22\apps, в ней вы увидите вложенную папку MyProject – это и есть каталог нашего проекта. Внутри MyProject находится папка src, содержащая программный код проекта. На данный момент папка пуста, так как никакого кода мы туда не добавляли.

    Создайте в папке src файл с именем MyMIDlet.java, затем откройте его в текстовом редакторе (щелкните правой кнопкой мыши на файле и в появившемся контекстном меню выполните команду Открыть с помощью > Блокнот). Введите в файл код из листинга 6.3.


    Листинг 6.3. Код программы


    Теперь сохраните содержимое файла, используя сочетание клавиш Ctrl+S, или команду Файл > Сохранить.

    Сейчас вернитесь к J2ME Wireless Toolkit. Нажмите кнопку Build (Компиляция), чтобы скомпилировать проект. Если все прошло нормально, то есть проект не содержит ошибок, то в консоли должна появиться строка Build complete (Компиляция завершена).

    Проверим, как программа работает. Нажмите кнопку Run (Исполнить), расположенную в верхней части окна. На экране появится эмулятор мобильного телефона (рис. 6.24).

    Как видите, в качестве названия программы отображается MyProject, о чем уже упоминалось ранее.

    Чтобы запустить программу, нажмите кнопку Launch (Запуск) на эмуляторе. Поскольку программа не выполняет никаких операций с экраном, то на экране эмулятора вы не увидите изменений, но в консоли будет выведено Вход, что свидетельствует о том, что программа все-таки корректно работает. Поскольку корректного выхода у нас не предусмотрено, то придется воспользоваться старым добрым методом – выключением телефона. Просто закройте окно эмулятора, нажав кнопку с крестиком. Перед выходом в консоль будет выведено Выход, затем окно эмулятора закроется, и в консоль будет выведена служебная информация о программе. В результате J2ME Wireless Toolkit будет выглядеть примерно так, как показано на рис. 6.25.

    Итак, «скелет» приложения можно считать готовым. Однако до сих пор наши творения хоть и работали, но ничего не выводили на экран. Это нужно исправить.

    Для начала немного теории. Дело в том, что само приложение, то есть класс MIDlet, рисовать не умеет. Для отображения графики существует специальный класс Canvas, а также его усовершенствованная версия – класс GameCanvas.


    Рис. 6.24. Окно эмулятора телефона.


    Рис. 6.25. Консоль вывода WTK.


    Само слово «canvas» можно перевести с английского как «холст». Из этого следует, что класс Canvas предназначен для работы с графическими объектами, но не только. Он является базовым при разработке приложений, требующих низкоуровневой работы с экраном (то есть рисования), обработки нажатий клавиш (без этого в играх никуда), работы с джойстиком (если таковой имеется), а также для других полезных возможностей.

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

    • int getHeight – возвращает высоту экрана в пикселах.

    • int getwidth – возвращает ширину экрана в пикселах.

    • void paint(Graphics g) – этот метод должен содержать код, отвечающий за рисование. Graphics – объект класса Graphics, с помощью которого будет производиться рисование.

    • Graphics getGraphics() – получает объект, с помощью которого и будет осуществляться рисование на экране.

    • void flushGraphics() – отображает содержимое графического буфера на дисплей.

    • void keyPressed(int keyCode) – этот метод вызывается, если была нажата какая-либо клавиша. keyCode – содержит код нажатой клавиши.

    • void keyReleased (int keyCode) – метод вызывается, если какая-либо клавиша была отпущена. keyCode – содержит код нажатой клавиши.

    С остальными методами вы познакомитесь в дальнейшем, в процессе написания программ.

    Почти все готово, однако есть одно «но». Как уже упоминалось, класс Canvas является лишь холстом, а ведь для рисования нужен не только холст – очень пригодятся «кисти» и «краски». Инструменты для рисования содержатся в классе Graphics. Ниже представлено несколько его методов.

    • void drawArc(int х, int у, int width, int height, int startAngle, int arcAngle) – рисует дугу эллипса:

    x – координата X левого верхнего угла прямоугольника, в который будет вписан эллипс;

    у – координата Y левого верхнего угла прямоугольника, в который будет вписан эллипс;

    width – ширина эллипса;

    height – высота эллипса;

    startAngle – начальный угол дуги;

    arcAngle – длина дуги в градусах.

    • void drawLine(int x1, int y1, int x2, int y2) – рисует прямую линию:

    xl – координата Х начала линии;

    yl – координата Y начала линии;

    х2 – координата Х конца линии;

    у2 – координата Y конца линии.

    • void drawRect(int х, int у, int width, int height) – рисует прямоугольник:

    x – координата Х левого верхнего угла прямоугольника;

    у – координата Y левого верхнего угла прямоугольника;

    width – ширина прямоугольника;

    height – высота прямоугольника.

    • void drawRoundRect(int х, int у, int width, int height, int arcWidth, int arcHeight) – рисует прямоугольник с закругленными углами:

    х – координата Х левого верхнего угла прямоугольника;

    у – координата Y левого верхнего угла прямоугольника;

    width – ширина прямоугольника;

    height – высота прямоугольника;

    arcWidth – ширина закругленного угла;

    arcHeight – высота закругленного угла.

    • void drawString(String str, int x, int y, int anchor) – рисует строку:

    str – указатель на строку символов;

    х – координата Х левого верхнего угла строки;

    у – координата Y левого верхнего угла строки;

    anchor – тип выравнивания строки.

    • void fillArc(int х, int у, int width, int height, int startAngle, int arcAngle) – рисует залитый сектор эллипса (описание параметров см. для drawArc() ).

    • void fillRect(int х, int у, int width, int height) – рисует залитый прямоугольник (описание параметров см. для drawRect() ).

    • void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) – рисует залитый прямоугольник с закругленными углами (описание соответствующих параметров см. для drawRoundRect() ).

    • void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) – рисует залитый треугольник:

    x1, х2, хЗ – координаты Х первой, второй и третьей вершины треугольника соответственно;

    y1, у2, уЗ – координаты Y первой, второй и третьей вершины треугольника соответственно.

    • int getColor() – получает текущий цвет в формате RGB.

    • void setColor(int red, int green, int blue) – устанавливает текущий цвет в формате RGB:

    red – интенсивность красного цвета (0-255);

    green – интенсивность зеленого цвета (0-255);

    blue – интенсивность синего цвета (0-255).

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

    Создадим код класса GameCanvas. Как уже упоминалось выше, код каждого класса должен находиться в отдельном файле. Так что найдите папку src нашего проекта и создайте там файл GameCanv.java.

    Теперь откройте файл с помощью текстового редактора и введите базовый код класса (листинг 6.4).


    Листинг 6.4. Базовый код класса


    Этот класс пока ничего «не умеет». Для начала нужно создать переменную для хранения объекта Graphics, с помощью которой будет производиться рисование. Затем нужно этот самый объект получить, лучше всего это сделать в конструкторе.

    Теперь немного модифицируем метод paint и добавим в него код заливки экрана определенным цветом.

    В результате код нашего класса примет вид, представленный в листинге 6.5.


    Листинг 6.5. Код заливки экрана определенным цветом


    Итак, «холст» объявлен и обучен нехитрым действиям. Теперь нам нужно отобразить его на экране. Для этого доработаем главный класс нашего приложения. Новый код вы можете видеть в листинге 6.6.


    Листинг 6.6. Отображение «холста» на экране


    Теперь скомпилируйте и запустите приложение. После того как вы нажмете кнопку Launch (Запуск), экран окрасится в серый цвет.

    Вы можете поэкспериментировать со значениями параметров метода setColor. Таким образом вы сможете менять цвет заливки экрана. Только помните, что значение каждого параметра должно находиться в пределах от 0 до 255, иначе вы получите ошибку компиляции.

    Доработаем метод paint класса GameCanv и добавим на экран немного фигур. Новый код метода вы можете видеть в листинге 6.7.


    Листинг 6.7. Добавление фигур


    При запуске программы экран будет выглядеть так, как представлено на рис. 6.26.


    Рис. 6.26. Геометрические фигуры на экране эмулятора.


    «Научим» объект двигаться. У класса GameCanvas существует метод keyPressed(int keyCode). Он срабатывает, когда пользователь нажимает какую-либо клавишу на телефоне. Причем параметр keyCode содержит код нажатой клавиши, так что вы без труда определите, что именно было нажато.

    Для хранения координат объекта (в нашем случае кружка) воспользуемся переменными и будем их менять, когда пользователь нажмет на клавишу джойстика.

    Ниже представлены числовые коды клавиш джойстика (табл. 6.1).


    Таблица 6.1. Коды клавиш


    При рисовании кружка не будем задавать координаты жестко, а укажем, что они содержатся в переменных X и Y. В листинге 6.8 представлен полный код класса GameCanv.


    Листинг 6.8. Полный код класса GameCanv


    Поэкспериментируйте с различными фигурами. Проявите творчество!

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