Навигация по экранам — различия между версиями
Jabchik (обсуждение | вклад) м |
Jabchik (обсуждение | вклад) м (→Пример проекта) |
||
Строка 36: | Строка 36: | ||
* Считывается параметр '''curScrID''' и полученное значение сохраняется в параметр '''current.screen_auto'''; | * Считывается параметр '''curScrID''' и полученное значение сохраняется в параметр '''current.screen_auto'''; | ||
* В параметр '''current.screen_man''' сохраняется условно присвоенный номер экрана (если screen_01, то присваиваем 1, если screen_02, то 2-ку и т.д.) | * В параметр '''current.screen_man''' сохраняется условно присвоенный номер экрана (если screen_01, то присваиваем 1, если screen_02, то 2-ку и т.д.) | ||
+ | <br> | ||
+ | Также есть глобальный экран с типом '''"2"''', это значит, что этот всегда будет открываться при потери фокуса, то есть при сворачивании приложения в трей и открытия его оттуда. На этом экране находятся две кнопки, обе они переходят на последний просмотренный экран, но каждая использует свой способ. Так верхняя кнопка использует параметр '''current.screen_auto''' для перехода (см. машину состояний '''check_auto'''). А нижняя кнопка использует параметр '''current.screen_man''' (см. машину состояний '''check_man'''). Как раз на этом экране есть взаимодействие кнопки и машины. Оба способа перехода верны и правильны, но если стоит задача запоминать большое кол-во просмотренных экранов и переходить на последний просмотренный, то лучше использовать способ прописанный в машине '''check_auto'''. Если экранов немного или нужно выбрать только главные экраны на которые стоит переходить, то лучше использовать способ, прописанный в машине '''check_man'''. | ||
+ | [[Файл:Переход по экранам.png|center]] |
Версия 13:58, 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.