Навигация по экранам — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
м (Пример проекта)
м (Пример проекта)
Строка 37: Строка 37:
 
* В параметр '''current.screen_man''' сохраняется условно присвоенный номер экрана (если screen_01, то присваиваем 1, если screen_02, то 2-ку и т.д.)
 
* В параметр '''current.screen_man''' сохраняется условно присвоенный номер экрана (если screen_01, то присваиваем 1, если screen_02, то 2-ку и т.д.)
 
<br>
 
<br>
Также есть глобальный экран с типом '''"2"''', это значит, что этот всегда будет открываться при потери фокуса, то есть при сворачивании приложения в трей и открытия его оттуда. На этом экране находятся две кнопки, обе они переходят на последний просмотренный экран, но каждая использует свой способ. Так верхняя кнопка использует параметр '''current.screen_auto''' для перехода (см. машину состояний '''check_auto'''). А нижняя кнопка использует параметр '''current.screen_man''' (см. машину состояний '''check_man'''). Как раз на этом экране есть взаимодействие кнопки и машины. Оба способа перехода верны и правильны, но если стоит задача запоминать большое кол-во просмотренных экранов и переходить на последний просмотренный, то лучше использовать способ прописанный в машине '''check_auto'''. Если экранов немного или нужно выбрать только главные экраны на которые стоит переходить, то лучше использовать способ, прописанный в машине '''check_man'''.
+
Также есть глобальный экран с типом '''"2"''', это значит, что этот экран всегда будет открываться при потери фокуса, то есть при сворачивании приложения в трей и открытия его оттуда. Поэтому, чтобы с этого экрана попасть на последний просмотренный экран на нем находятся две кнопки, обе они выполняют одни и те же функции, но каждая использует свой способ перехода. Так верхняя кнопка использует параметр '''current.screen_auto''' для перехода (см. машину состояний '''check_auto'''). А нижняя кнопка использует параметр '''current.screen_man''' (см. машину состояний '''check_man'''). Как раз на этом экране есть взаимодействие кнопки и машины. Оба способа перехода верны и правильны, но если стоит задача запоминать большое кол-во просмотренных экранов и переходить на последний просмотренный, то лучше использовать способ прописанный в машине '''check_auto'''. Если экранов немного или нужно выбрать только главные экраны на которые стоит переходить, то лучше использовать способ, прописанный в машине '''check_man'''.
 
[[Файл:Переход по экранам.png|center]]
 
[[Файл:Переход по экранам.png|center]]

Версия 16:01, 13 марта 2013

Навигация по экранам является важным элементом при разработке приложения. Благодаря ей происходит смена экранов, сюжетных линий и т.д. В 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