Corona SDK: Сцены и поля в мобильном приложении

Работа со сценами — важный аспект разработки любого приложения. Разделение приложения на несколько экранов (сцен) улучшает структуру кода, повышает производительность и упрощает навигацию.

Зачем использовать сцены?

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

  • Читаемость и структуру кода.
  • Производительность: приложение загружается быстрее, так как каждый экран загружается по отдельности.
  • Эффективность: 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 и добавили элементы в приложение. Использование сцен улучшает структуру и читаемость кода, упрощая дальнейшую разработку и поддержку.

Что будем искать? Например,программа