Работа со сценами — важный аспект разработки любого приложения. Разделение приложения на несколько экранов (сцен) улучшает структуру кода, повышает производительность и упрощает навигацию.
Зачем использовать сцены?
Представьте приложение с несколькими экранами: приветствие, ввод данных, вывод результатов. Объединение всего кода в один файл сделает его громоздким и нечитабельным. Сцены позволяют разделить функциональность на отдельные файлы, что повышает:
- Читаемость и структуру кода.
- Производительность: приложение загружается быстрее, так как каждый экран загружается по отдельности.
- Эффективность: Corona SDK кэширует сцены, обеспечивая мгновенный переход между ними.
- Удобство отладки: проще находить и исправлять ошибки в отдельных файлах.
Глобальные переменные, объявленные до вызова сцены, доступны внутри каждой сцены.
Каждая сцена — отдельный файл. Например, файл main.lua может содержать общие настройки, а другие файлы (cold.lua, rezult.lua, popup.lua) — отдельные экраны.
Создание сцен
Создайте папку scenes в проекте. Внутри неё создайте файл cold.lua. Файл main.lua будет содержать объявление переменных, настройку приложения и вызов первой сцены.
В файле main.lua подключите библиотеку composer:
local composer = require("composer")
И перейдите к нужной сцене:
composer.gotoScene("scenes.cold")
Синтаксис: если сцена находится в подпапке, указывайте путь через точку.
Структура файла сцены (cold.lua)
В файле cold.lua используйте стандартную структуру:
local composer = require("composer")
local scene = composer.newScene()
function scene:create(event)
local group = self.view
-- Здесь создаются все объекты сцены и добавляются в группу
end
function scene:show(event)
local group = self.view
-- Здесь отображаются объекты сцены
-- Добавление всех объектов в общую группу сцены:
local sceneGroup = display.newGroup()
sceneGroup:insert(weightGroup)
sceneGroup:insert(sexGroup)
group:insert(sceneGroup)
end
function scene:hide(event)
-- Здесь скрываются объекты сцены (при необходимости)
end
function scene:destroy(event)
-- Здесь удаляются объекты сцены (при необходимости)
end
scene:addEventListener("create", scene)
scene:addEventListener("show", scene)
scene:addEventListener("hide", scene)
scene:addEventListener("destroy", scene)
return scene
В функции scene:show создаётся и заполняется группа sceneGroup, добавляя в неё все элементы сцены. Весь код, отвечающий за создание элементов интерфейса (слайдеры, поля ввода, кнопки), переносится из main.lua в scene:show.
Добавление полей
Добавим поля для ввода возраста, роста и времени. В main.lua объявите необходимые переменные:
ageMin = 18
ageMax = 98
age = ageMin
heightMin = 1.0
heightMax = 2.0
height = heightMin
timeMin = 1
timeMax = 120
time = timeMin
Код для создания полей (слайдеры, метки, поля ввода) аналогичен ранее использовавшемуся, только с изменёнными названиями переменных и меток. Этот код (примеры слайдеров, меток и полей ввода) следует добавить в функцию scene:show в файле cold.lua. Добавьте все новые группы в общую группу sceneGroup.
В этом уроке мы освоили работу со сценами в Corona SDK и добавили элементы в приложение. Использование сцен улучшает структуру и читаемость кода, упрощая дальнейшую разработку и поддержку.