Globaltimer

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

Globaltimer - таймер, работающий в режиме "реального времени". После запуска работает даже если приложение не запущено. По окончанию времени переводит указанный объект в указанное состояние.

Основные параметры

Glob tm 1.PNG
  • id-объекта(id) - уникальный номер объекта
  • тип (type) - Выбранный тип объекта определяет его функциональное назначение и его свойства
  • имя(name) - Имя графического объекта в дереве проекта. Может быть произвольным. По умолчанию соответствует имени файла из базы ресурсов.
  • синхронизация (sync)- Применяется для синхронизации между лейаутами, если указан параметр нет то объект будет активен только на текущем лейауте

Таймер

  • задержка (time)- Время в секундах, через которое сработает таймер.
  • объект (obj)- Объект, которому будем менять состояние.
  • состояние (st)- Состояние для объекта из предыдущего поля.
  • параметр (paramName)- параметр слушателя, который будем менять по окончанию времени таймера.
  • значение параметра (paramValue)- значение параметра из предыдущего поля. Параметр и его значение пока нельзя добавить через поля в свойствах, их нужно задавать машиной.
  • таймер (objt)- Объект типа timer, в котором глобальный таймер будет рисовать текущее значение ( время ); Задавать только из машины - при передаче таймеру состояния - зачищается поле;
  • cнимать с паузы (cont) - этот параметр не перезатирается при установке таймера:
да - если глобальный таймер стоял на паузе и вышли в трей, запускаем таймер;
нет - если глобальный таймер стоял на паузе и вышли в трей, таймер остаётся на паузе.

Состояния

  • add - Запускает таймер с заданными параметрами.
  • clear_all - очищает очередь таймеров.
  • clear - очищает конкретный таймер.
  • pause - ставим на паузу конкретный таймер.
  • resume - снимаем с паузы конкретный таймер.


Примечание: перед тем как передать объекту состояния "clear", "pause" или "resume", следует передать параметры "obj" и "st". По этим параметрам и определяется таймер, который нужно удалить из очереди. При этом (!) если в очереди будут таймеры с одинаковыми параметрами "obj" и "st", то ВСЕ (!) они будут удалены. При этом порядок добавления в очередь не важен.

Возможности и примеры использования

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

Пример использования: На главном экране игры появляется некий персонаж, который предлагает игроку приобрести бонус (дополнительное время игры, дополнительные подсказки и т.д). Предложение действительно только определенный промежуток времени. Даже если приложение было закрыто или отсутствует соединение - время предложения должно уменьшаться, а по его истечению - персонаж и предложение пропадают.

Glob tm 2.PNG

После инициализации таймера в опции записывается ряд параметров, которые могут понадобиться для создания интерфейса:

  • доступ к ним можно получить по адресу globaltimer(id объекта таймера).i(порядковый номер таймера в очереди).
  • .tm - время до окончания таймера
  • .obj - id слушателя окончания
  • .st - состояние, в которое переведет слушателя таймер

Пример: globaltimer1604.i0.tm - используя такой ключ можно визуализировать время, через которое произойдет событие с помощью объекта Timer

Обращаться к настройкам таймера можно из машины состояний. См. пример справа. После добавления нескольких таймеров у одного объекта globaltimer - они выстраиваются в очередь (iN, где N - порядковый номер таймера, начиная с 0). При этом увеличивается параметр globaltimer(id).num. По окончанию действия всех таймеров - num=0.

Особенности работы

  • Следует отметить, что запись в опции указанных выше параметров проходит не "мгновенно". Оценить время инициализации таймера можно открыв options.xml и сравнив параметры r_lastlaunch и время указанное в поле time в опциях объекта. Таким образом проверка параметров в init'ном состоянии машины может привести к трудно вычисляемой ошибке, т.к объект еще не записал обновленные значения.
  • После передачи параметров объекту следует обязательно его про'init'ить. Или через машину состояний или в таймере, указав в поле st - init.

Выводим время конкретного таймера в локальном таймере

Для того чтобы глобальный таймер заполнял локальный таймер, мы во время установки таймера должны заполнить поле objt (наш локальный таймер) (Как показано на скриншоте, состояние start). Так же, мы можем остановить глобальный таймер - состояние pause, а потом снять с паузы - сост. resume.

Gltimer resume pause.jpg