В этом руководстве вы узнаете, как создать приложение «Компас» с использованием аппаратного обеспечения смартфона. Читай дальше!
Шаг 1: Обзор приложения
Используя готовую графику, мы будем кодировать приложение Compass, используя Lua и API Corona SDK.
Это похоже на официальное приложение компаса от Apple, распространяемое с iOS.
Шаг 2: Целевое устройство
Первое, что нам нужно сделать, это выбрать платформу, в которой мы хотим запустить наше приложение, таким образом, мы сможем выбрать размер для изображений, которые мы будем использовать.
Платформа iOS имеет следующие характеристики:
- iPad: 1024×768 пикселей, 132 т / д
- iPhone / iPod Touch: 320×480 пикселей, 163 т / д
- iPhone 4: 960×640 пикселей, 326 точек на дюйм
Поскольку Android является открытой платформой, существует множество различных устройств и разрешений. Вот некоторые из наиболее распространенных характеристик экрана:
- Google Nexus One: 480×800 пикселей, 254 точек на дюйм
- Motorola Droid X: 854×480 пикселей, 228 пикселей на дюйм
- HTC Evo: 480×800 пикселей, 217 пикселей на дюйм
В этом уроке мы сосредоточимся на платформе iOS с графическим дизайном, специально разработанной для распространения на iPhone / iPod touch. Тем не менее, приведенный здесь код должен также применяться для разработки Android с Corona SDK.
Шаг 3: Интерфейс
Будет использован простой и дружественный интерфейс. Созданный интерфейс включает в себя фон и форму указателя компаса.
Графические ресурсы интерфейса, необходимые для этого урока, можно найти в прилагаемой загрузке.
Шаг 4: Экспорт графики
В зависимости от выбранного устройства вам может понадобиться экспортировать графику в рекомендованном PPI и размерах. Вы можете сделать это в вашем любимом графическом редакторе.
Я использовал функцию « Настроить размер …» в приложении «Просмотр» в Mac OS X. Не забудьте дать изображениям описательное имя и сохранить их в папке проекта.
Шаг 5: настройка приложения
Внешний файл config.lua будет использоваться для того, чтобы приложение работало на всех устройствах в полноэкранном режиме. Этот файл показывает исходный размер экрана и метод, используемый для масштабирования этого содержимого в случае, если приложение запускается с другим разрешением экрана.
1
2
3
4
5
6
7
8
9
|
application =
{
content =
{
width = 320,
height = 480,
scale = «letterbox»
},
}
|
Шаг 6: Main.lua
Давайте напишем заявку!
Откройте предпочитаемый редактор Lua (любой текстовый редактор будет работать, но не все поддерживают подсветку синтаксиса Lua) и подготовьтесь к написанию своего замечательного приложения. Не забудьте сохранить файл как main.lua в папке вашего проекта.
Шаг 7: Структура кода
Мы будем структурировать наш код, как если бы это был класс. Если вы знаете ActionScript или Java, вы должны найти общую структуру знакомой.
01
02
03
04
05
06
07
08
09
10
11
|
Necessary Classes
Variables and Constants
Declare Functions
contructor (Main function)
class methods (other functions)
call Main function
|
Шаг 8: Скрыть строку состояния
1
|
display.setStatusBar(display.HiddenStatusBar)
|
Этот код скрывает строку состояния. Строка состояния — это строка в верхней части экрана устройства, которая показывает время, сигнал и другие индикаторы.
Шаг 9: Фон
Это изображение будет использоваться в качестве фона для интерфейса приложения. Следующая строка кода будет хранить интерфейс.
1
2
3
4
5
|
— Graphics
— [Background]
local bg = display.newImage(‘bg.png’)
|
Шаг 10: Указатель
Это будет использоваться для указания текущего направления на заднем плане.
1
2
3
|
— [Pointer]
local pointer = display.newImage(‘pointer.png’)
|
Шаг 11: Текст заголовка
Следующая переменная используется для отображения курса в градусах, а также текущего направления.
1
2
3
|
— Heading Text
local heading = display.newText(‘0’, display.contentCenterX, 60, native.systemFont, 21)
|
Шаг 12: объявить функции
Объявите все функции как локальные в начале.
1
2
3
4
|
— Functions
local Main = {}
local update = {}
|
Шаг 13: Конструктор
Далее мы создадим функцию, которая инициализирует всю игровую логику:
01
02
03
04
05
06
07
08
09
10
|
function Main()
pointer:setReferencePoint(display.CenterReferencePoint)
pointer.x = display.contentCenterX
pointer.y = display.contentCenterY
heading:setTextColor(255)
heading:setReferencePoint(display.CenterReferencePoint)
Runtime:addEventListener(‘heading’, update)
end
|
Шаг 14: Поворот указателя
Мы используем magnetic
свойство события заголовка, чтобы установить вращение указателя
1
2
3
4
|
function update(e)
— Pointer Rotation
pointer.rotation = math.floor(e.magnetic)
|
Шаг 15: Текст заголовка и направление
Эти строки кода определяют текущее вращение указателя. Это поможет нам определить текущее направление при работе с компасом.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
— Heading Text & Direction
if(pointer.rotation >= 0 and pointer.rotation < 23) then
heading.text = math.floor(e.magnetic) .. ‘ N’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 23 and pointer.rotation < 68) then
heading.text = math.floor(e.magnetic) .. ‘ NE’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 68 and pointer.rotation < 113) then
heading.text = math.floor(e.magnetic) .. ‘ E’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 113 and pointer.rotation < 158) then
heading.text = math.floor(e.magnetic) .. ‘ SE’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 158 and pointer.rotation < 203) then
heading.text = math.floor(e.magnetic) .. ‘ S’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 203 and pointer.rotation < 248) then
heading.text = math.floor(e.magnetic) .. ‘ SW’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 248 and pointer.rotation < 293) then
heading.text = math.floor(e.magnetic) .. ‘ W’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
elseif(pointer.rotation >= 293 and pointer.rotation < 360) then
heading.text = math.floor(e.magnetic) .. ‘ NW’
heading:setReferencePoint(display.CenterReferencePoint)
heading.x = display.contentCenterX
end
end
|
Шаг 16: вызов основной функции
Чтобы изначально запустить игру, нужно вызвать функцию Main . С помощью приведенного выше кода мы сделаем именно это здесь:
1
|
Main()
|
Шаг 17: Экран загрузки
Файл Default.png — это изображение, которое будет отображаться сразу после запуска приложения, пока iOS загружает основные данные для отображения главного экрана. Добавьте это изображение в исходную папку вашего проекта, чтобы оно автоматически добавлялось компилятором Corona.
Шаг 18: Иконка
Используя графику, которую вы создали ранее, теперь вы можете создать красивый и красивый значок. Размер значка для iPhone, не относящегося к сетчатке, составляет 57x57px, но версия Retina составляет 114x114px, а для магазина iTunes потребуется версия 512x512px. Я предлагаю сначала создать версию 512x512px, а затем уменьшить ее для других размеров.
Это не должно иметь закругленные углы или прозрачные блики. iTunes и iPhone обеспечат это для вас.
Шаг 19: Тестирование в симуляторе
Пришло время сделать финальный тест. Откройте Corona Simulator, перейдите в папку вашего проекта и нажмите «Открыть». Если все работает, как ожидалось, вы готовы к последнему шагу!
Шаг 20: Построить
В Corona Simulator перейдите в File> Build и выберите ваше целевое устройство. Заполните необходимые данные и нажмите кнопку « Создать» . Подождите несколько секунд, и ваше приложение будет готово для тестирования устройства и / или отправки для распространения!
Вывод
Поэкспериментируйте с конечным результатом и попробуйте создать собственную версию приложения!
Я надеюсь, что вам понравился этот урок, и вы нашли его полезным. Спасибо за чтение!