ГОЛОВНЕ МЕНЮ MRNOM – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

&nbsp

Екран головного меню досить простий Він відображає логотип, команди головного меню, а також представляє налаштування звуку у вигляді кнопки-перемикача Він реагує на натискання команд меню або кнопки регулювання звуку Щоб реалізувати це поведінка, нам необхідно знати дві речі: де на екрані відображаються зображення і які області торкань, які призведуть або до зміни екрану, або до зміни звукових налаштувань Малюнок 62 показує, як і де ми відображаємо різні зображення на екрані З цього ми зможемо точно визначити зони торкань

Рис 62 Головне меню координати показують, як і де ми визуализируем різні зображення, і виділяють зони торкання Х-координати логотипу і команди головного меню обчислені таким чином, що їх центри лежать на осі х

Тепер реалізуємо клас Screen (лістинг 65)

Лістинг 65 MainMenuScreenJava, головне меню package combadlogiсandroidgamesmrnom

Знову успадковуємо від Screen і реалізуємо відповідний конструктор для нього

Далі йде метод updateO, в якому виконуємо перевірку подій торкання Спочатку отримуємо TouchEvent і KeyEvent з екземпляра класу Input, наданого нам Game Зверніть увагу, що ми не використовуємо KeyEvent, але в кожному разі запитуємо їх для того, щоб очистити внутрішній буфер (так, це не дуже зручно, але що робити) Далі проходимо в циклі через всі TouchEvent, поки не знайдемо те подія, яка має тип TouchEvent T0UCHUP Ми могли б також шукати події TouchEventT0UCH D0WN, але в більшості користувальницьких інтерфейсів подія відпускання використовується для визначення того, що певний елемент користувацького інтерфейсу був натиснутий

Як тільки ми знайшли підходяще подія, перевіряємо, чи відноситься воно до звуку або до команд меню Щоб підчистити код, я написав метод inBounds, який приймає подія торкання, х-і у-координати, а також висоту і шири ну Цей метод визначає, чи відбулося торкання усередині прямокутника екрану із заданими параметрами і повертає true або false

Якщо натиснута кнопка-перемикач для роботи зі звуком, просто інвертуємо булево значення Settings soundEnabled Якщо натиснута яка-небудь з команд головного меню, переходимо до відповідного екрану, створюючи його і запускаючи його за допомогою Game setScreen Наш метод може відразу ж повернути управління, якщо Mai nMenuScreen більше нічого робити Ми також програємо звуки натискання, якщо натиснута кнопка-перемикач звуку або команда головного меню, а звук включений

Зверніть увагу, що всі події торкання будуть повідомлятися у відповідності з нашим кінцевим дозволом – 320 х 480 пікселів Так виходить завдяки магії масштабування:

Метод inBounds працює так само, як і методи, розглянуті раніше: приймає TouchEvent і прямокутник і повідомляє вам, чи знаходяться координати події торкання усередині прямокутника

Метод present здасться, напевно, самим довгоочікуваним, але, боюся, він не такий вже вражаючий Наш невеликий фреймворк ігри дійсно спрощує відображення головного меню Ми просто отрісовиваємих фон на (0, 0), фактично стираючи наш фреймбуфер, так що ніякого виклику Graphics cl ЄАГ не потрібно Далі малюємо логотип і команди головного меню згідно координатам на рис 62 Метод закінчується малюванням кнопки звуку залежно від поточних налаштувань Як бачите, ми використовуємо той же Pixmap, але просто малюємо відповідну частину його (кнопка перемикання звуку, див рис 61) Це було нескладно

Останній елемент, який нам потрібно обговорити, – метод pause Оскільки ми змінюємо одну з налаштувань на цьому екрані, необхідно упевнитися, що вона збережеться в зовнішньому сховищі Це зовсім нескладно зробити за допомогою класу Settings

Методи resume і dispose на цьому екрані нічого не роблять

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*