Навигация по экранам

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

Навигация по экранам является важным элементом при разработке приложения. Благодаря ей происходит смена экранов, сюжетных линий и т.д. В appsalute creator можно выделить несколько основных способов навигации:

  • навигация кнопками
  • навигация машинами
  • навигация кнопками и машинами
  • навигация листанием экранов

Навигация кнопками

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

!!!ЗАМЕЧАНИЕ: В свойствах объекта кнопка также есть поле не предзагружать, которое по умолчанию равно 0. Это означает, что вся графика экрана, на который переходит эта кнопка будет предзагружаться в текущем экране. С одной стороны это хорошо, так как переход на экран займет меньше времени, чем если бы графика не предзагружалась. Но с другой стороны, у приложения может не хватить памяти и оно будет вылетать. Поэтому, РЕКОМЕНДУЕТСЯ поле не предзагружать ставить в значение 1.

Навигация машинами

Машина состояний находит широкое применение и в навигации по экранам. Для навигации по экранам в машине состояний есть следующие свойства:

  • init -> вернуться назад (back) если установлено в 1, то перейдет на предпоследний просмотренный экран или на экран, id которого записан в параметре prevScrID;
  • set -> экран для перехода (scr) в выпадающем списке выбирается экран, на который перейдет приложение.



Навигация кнопками и машинами

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

Навигация листанием экранов

Анимация переходов

Пример проекта

Перед рассмотрением примера рекомендуется загрузить Файлы проекта
На рисунке ниже показана схема переходов между экранами. Проект состоит из:

  • главное меню - 1 экран
  • игровые экраны - 6 экранов
  • служебный экран с опциями - 1 экран
  • more games (глобальный экран) - 1 экран

На главном меню находится таблица в которой можно выбрать экран на который хотим перейти. В таблице находится 6 экранов на выбор. На каждом игровом экране находится по три кнопки (кроме 1-го и последнего экрана, на них 2 кнопки): кнопка перехода на следующий экран (реализована объектом "машина состояний"), кнопка перехода на предыдущий экран (реализована объектом "кнопка"), кнопка перехода в главное меню (реализована объектом "кнопка").
Кроме этого, на каждом экране находится машина состояний save_cur_screen, которая при заходе на экран сохраняет в опции параметр, который определяет этот экран, как последний посещенный. Сохранение идет двумя способами:

  • Считывается параметр curScrID и полученное значение сохраняется в параметр current.screen_auto;
  • В параметр current.screen_man сохраняется условно присвоенный номер экрана (если screen_01, то присваиваем 1, если screen_02, то 2-ку и т.д.)


Также есть глобальный экран с типом "2", это значит, что этот экран всегда будет открываться при потери фокуса, то есть при сворачивании приложения в трей и открытия его оттуда. Поэтому, чтобы с этого экрана попасть на последний просмотренный экран на нем находятся две кнопки, обе они выполняют одни и те же функции, но каждая использует свой способ перехода. Так верхняя кнопка использует параметр current.screen_auto для перехода (см. машину состояний check_auto). А нижняя кнопка использует параметр current.screen_man (см. машину состояний check_man). Как раз на этом экране есть взаимодействие кнопки и машины. Оба способа перехода верны и правильны, но если стоит задача запоминать большое кол-во просмотренных экранов и переходить на последний просмотренный, то лучше использовать способ прописанный в машине check_auto. Если экранов немного или нужно выбрать только главные экраны на которые стоит переходить, то лучше использовать способ, прописанный в машине check_man.

Переход по экранам.png