Statesmanager — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Состояния)
(Альтернативное описание состояний, взятое прямиком из кода)
Строка 31: Строка 31:
 
============================
 
============================
 
==Альтернативное описание состояний, взятое прямиком из кода==
 
==Альтернативное описание состояний, взятое прямиком из кода==
   "idle",                                    //!< состояние простоя
+
   "idle",                                    //!< Состояние простоя
   "add_first",                              //!< добавить событие в начало очереди
+
   "add_first",                              //!< Добавить событие в начало очереди
   "add_last",                                //!< добавить событие в конец очереди
+
   "add_last",                                //!< Добавить событие в конец очереди
   "add_first_uni",                          //!< добавить событие в начало очереди
+
   "add_first_uni",                          //!< Добавить событие в начало очереди
   "add_last_uni",                            //!< добавить событие в конец очереди
+
   "add_last_uni",                            //!< Добавить событие в конец очереди
   "next",                                    //!< активировать первое событие в очереди
+
   "next",                                    //!< Активировать первое событие в очереди
   "back",                                    //!< активировать back для текущего события в очереди
+
   "back",                                    //!< Активировать back для текущего события в очереди
   "clear",                                  //!< очистить обе очереди
+
   "clear",                                  //!< Очистить обе очереди
   "add_popup",                              //!< начать ветку попапов от текущего элемента очереди. Срабатывает               сразу, до зачиски всех попапов next не делает ничего, back сначала закрывает попапы
+
   "add_popup",                              //!< Начать ветку попапов от текущего элемента очереди. Срабатывает
 +
                                              //!< сразу, до зачиски всех попапов next не делает ничего, back сначала  
 +
                                              //!< закрывает попапы
 
   "delete",                                  //!< Удалить из очереди элемент с id из param;
 
   "delete",                                  //!< Удалить из очереди элемент с id из param;
 
   "log"                                      //!< Вывести содержимое всех трех очередей в лог
 
   "log"                                      //!< Вывести содержимое всех трех очередей в лог

Версия 06:17, 3 октября 2014

Объект предназначен для постановки объектов в очередь выполнения единообразными командами. Можно применять для управления отображением всплывающих окон.

Параметры

  • объект открытия (obj) - объект который будет переведён в заданное состояние, если данный объект будет первым в очереди на открытие и передадим менеджеру окон состояние next;
  • состояние открытия (st) - перевести выбранный объект в заданное состояние;
  • объект back (obj_b) - объект который будет переведён в заданное состояние, если данный объект будет первым в очереди на закрытие и передадим менеджеру окон состояние back;
  • состояние back (st_b) - перевести выбранный объект в заданное состояние.

Дополнительные параметры

+.png изменить состояние объекта - очередь back пуста:

объект ( obj ) - Перевести объект в состояние из следующего поля;
состояние ( st ) - Новое состояние для объекта из предыдущего поля.

+.png изменить состояние объекта - очередь next пуста:

объект ( obj ) - Перевести объект в состояние из следующего поля;
состояние ( st ) - Новое состояние для объекта из предыдущего поля.


Параметры которые мы можем считать из statesmanager

  • n_back - количество событий в очереди на закрытие (не учитывая события добавленные как попапы);
  • n_next - количество событий в очереди на открытие (не учитывая события добавленные как попапы).


Состояния

  • add_first - добавить событие в начало очереди на открытие;
  • add_last - добавить событие в конец очереди на открытие;
  • add_popup - добавить в очередь попапов событие, и сразу его открыть (добавляется в очередь беков на закрытие в начало). Примечание попапы добавляются в свою очередь на закрытие и открытие, параметры объекта statesmanagera (n_back и n_next) не повышаются при добавления попапа.
  • next - активировать первое событие в очереди на открытие;
  • back - активировать back для текущего события в очереди на закрытие;
  • clear - очищает стек очереди, очищает обе очереди (на открытие и на закрытие, включая попапы).
================

Альтернативное описание состояний, взятое прямиком из кода

  "idle",                                    //!< Состояние простоя
  "add_first",                               //!< Добавить событие в начало очереди
  "add_last",                                //!< Добавить событие в конец очереди
  "add_first_uni",                           //!< Добавить событие в начало очереди
  "add_last_uni",                            //!< Добавить событие в конец очереди
  "next",                                    //!< Активировать первое событие в очереди
  "back",                                    //!< Активировать back для текущего события в очереди
  "clear",                                   //!< Очистить обе очереди
  "add_popup",                               //!< Начать ветку попапов от текущего элемента очереди. Срабатывает
                                             //!< сразу, до зачиски всех попапов next не делает ничего, back сначала 
                                             //!< закрывает попапы
  "delete",                                  //!< Удалить из очереди элемент с id из param;
  "log"                                      //!< Вывести содержимое всех трех очередей в лог

Схема работы

1) Добавить объекты по одному в очередь

2) вызывать состояния next или back - объекты у которых вызваны состояния убираются из очереди очередь разбирается с конца

Пример реализации

Очередь из окон

Задача: У нас открывается окно 1, после его закрытия открывается окно 2,окно 3 и т.д. (после закрытия одного окна открывается другое).

Пример: Закончили уровень, и после закрытия окна с результатами, мы должны показать два окошка с новыми задачами.


Реализация:

  • 1) Открываем окно с результатами:
Из машины окна, вызываем состояние next машине обработчику менеджера окон (9win_root). Предварительно записываем состояния для закрытия и открытия данного окна(машины; состояния close и open соответственно):
Statesmanager W next.png
В машине обработчике менеджера окон (9win_root), в состоянии next мы задаём менеджеру окон и передаём состояние add_first, а затем next. То есть мы добавляем первым в очередь на открытие наше окно с результатами и эго открываем:
Statesmanager Next.png


  • 2) Добавляем в очередь окно с задачей:
Из машины окна, вызываем состояние add машине обработчику менеджера окон (9win_root). Предварительно записываем состояния для закрытия и открытия данного окна(машины; состояния close и open соответственно):
Statesmanager W add.png
В машине обработчике менеджера окон (9win_root), в состоянии add мы задаём менеджеру окон и передаём состояние add_last( то есть мы добавляем окно в конец очереди на открытие).
Statesmanager.Add.png


  • 3) Аналогично добавляем другие задачи.


  • 4) Для закрытия окна с результатами уровня, мы передаём менеджеру окон состояние back (закрываем окно, первое в списке на закрытие), а затем состояние next (открываем первое окно в очереди на открытие, в нашем случае - первую добавленную задачу) .