Timer

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

Общие сведения

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

Таймер может управляться такими игровыми объектами как HiddenList, а также другими игровыми объектами которые смогут передавать ему различные состояния.

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

Timer 01.jpg
  • тип - тип объекта
  • имя - имя объекта
  • синхронизация - синхронизация между лейаутами
  • положение
    • x - положение объекта по оси х
    • y - положение объекта по оси y
  • размер
    • w - ширина объекта в пикслях
    • h - высота объекта в пикселях
  • модификаторы
    • alpha - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)
    • blending - Alpha смешивание
    • angle - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.
    • scale x - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.
    • scale y - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.
  • z - параметр порядка рисования объекта. Сначала рисуются объекты с большим z, а под ними с меньшим
  • память - если 1 - не обновляет свои параметры при последующем открытии экрана, 0 - обновляет . Если таймер подвязан к опциям и включена память, то таймер не будет перевычитывать значение из опций после получения состояний init, run
  • cостояние - начальное состояние таймера:
    • beg - начальное состояние (таймер не идет)
    • run - запуск таймера
    • fast - таймер работает с ускорением( кооф. ускорения задаем в "ускорение" )
    • pause - таймер перходит в состояние паузы. (снять с паузы состоянием - run, fast)
    • add - добавление времени к таймеру
    • del - отнимание времен из таймера
    • end - конечное состояние таймера
    • stop - останавливает таймер, если потом он будет запущен снова, то пойдет с нуля
    • save - записывает текущее значение в опции под именем, указанным в ключе (игра, уровень)
  • отладка - отображать в окне состояний текущий объект
  • значение - начальное значение таймера в ms
  • дельта - используется в состояниях add и del, количество времени которое будет добавлено или удалено из таймера (время в секундах)
  • остановка без кликов - если > 0, то таймер остановится, если кликов не было более заданного числа секунд
  • обратный ход - если "0" объект "таймер" работает, как секундомер (время увеличивается), если "1", то работает как таймер (время отнимается)
  • отображать дни - параметр days (количество дней), необходим для настройки отображения таймера. Настраивается во "внешний вид".
  • настройки при автозаполнении - перегружать - экономика меняет настройки отображения HH:MM:SS(обратная совместимость); сохранять - настройки задаются в лейауте.
  • прогресс - прогрессбар, отображающий то же, что и таймер
  • выравнивание - Выравнивание отображаемого времени 0 - центр, 1 - лево, 2 - право
  • графика
    • res - основной графический ресурс для таймера, в качестве графического ресурса подгружается анимация из 10 фреймов, на которых изображены числа от 0 до 9
    • цифры нормальные - поле куда добавляется анимация цифр в нормальном виде (не обязательно заполнять, если таймер будет использоваться в одном режиме)
    • цифры окончания - анимация цифр, которая будут показываться в том случае, когда время таймера будет истекать
    • цифры при добавлении - анимация цифр, которая будет показываться в том случае, когда к таймеру было добавлено время
    • цифры при удалении - анимация цифр, которая будет показываться в том случае, когда от таймера было отнято время
    • двоеточие нормальное - графика двоеточия, которое разделяет секунды, минуты, подгражается обычный графический ресурс двоеточия
    • двоеточие окончания - графика двоеточия, которое показывается в случае, когда у таймера истекает время
    • двоеточие при добавлении - графика двоеточия, будет использовать при прибавлении время к таймеру
    • двоеточие при удалении - графика двоеточия, будет использовать при удалении время от таймера
  • шрифт
    • имя - номер шрифта - целое число, начиная с 0 (порядковый номер шрифта), а если -1 то рисовать каунтер клипами
    • размер - размер шрифта в пикселях
    • цвет 1 - цвет текста
  • внешний вид
    • дни - 0 - прятать, 1 - отображать, 2 - отображать всегда два разряда, 3 - отображать, когда дней больше, чем в days, 4 - отображать только дни, когда дней больше, чем в days, 5 - отображать две макс. единицы времени (если применить 5, сколько бы ни было времени, будут показываться максимальные два разряда, к примеру dd:hh, если 3д 04ч).
    • часы - 0 - прятать, 1 - отображать, 2 - отображать, если время больше одного часа
    • минуты - 0 - прятать, 1 - отображать
    • секунды - 0 - прятать, 1 - отображать, 2 - отображать, если время меньше одного часа
    • dx - сдвинуть все относительно подложки вдоль х
    • dy - сдвинуть все относительно подложки вдоль y
    • dx между цифрами - расстояние между цифрами внутри разряда, между hh или mm
    • dx от ":" - расстояние между разрядами и клипом двоеточия (справа и слева от него)
    • разделитель после дней - символ, который отображается после разряда дней. Если указан, двоеточие после разряда дней не отображается. Перетаскивается из текстового редактора
    • разделитель после часов - символ, который отображается после разряда часов. Если указан, двоеточие после разряда часов не отображается. Перетаскивается из текстового редактора
    • разделитель после минут - символ, который отображается после разряда минут. Если указан, двоеточие после разряда минут не отображается. Перетаскивается из текстового редактора
    • разделитель после секунд - символ, который отображается после разряда секунд. Если указан, двоеточие после разряда секунд не отображается. Перетаскивается из текстового редактора
  • часы - Число разрядов для отображения часов
  • ускорение - коэффициент ускорения, когда таймер находится в состоянии fast
  • сохранять в профиль - если "0" - то не сохраняет значение в профиль, а значит значение будет глобальным
  • сохранять при потере фокуса - Если ==1, то таймер будет сохранять себя при потере фокуса
  • игра - ключ (параметр), совместно с параметром уровень образует переменную, с помощью которой можно управлять таймерому
  • уровень - совместно с параметром игра образует переменную, с помощью которой можно управлять таймером (Строит заметить, что при переходе объекта в состояние init - он автоматически считывает значение, записанное по адресу игра.уровень в Options. При этом таймер не имеет состояния read, как Counter)
  • Время истекло: изменить состояние объекта - если достигнет нуля, то есть используется, как таймер, он изменит состояние какого-то объекта
  • Время истекло: изменить параметр (свойство) объекта - если достигнет нуля, то есть используется, как таймер, он изменит параметр какого-то объекта

Добавляемые параметры

+.png Время на исходе: изменить состояние объекта - по истечению времени перевести объект в новое состояние:

  • значение - значение, при котором сработает обработчик;
  • объект - по истечению времени перевести объект в состояние из следующего поля;
  • состояние - новое состояние для объекта из предыдущего поля.

+.png Время истекло: изменить состояние объекта - по истечению времени перевести объект в новое состояние. Если достигнет нуля, то есть используется, как таймер, он изменит состояние какого-то объекта:

  • объект - по истечению времени перевести объект в состояние из следующего поля;
  • состояние - новое состояние для объекта из предыдущего поля.

+.png Время истекло: изменить параметр (свойство) объекта - по истечению времени перевести объект в новое состояние. Если достигнет нуля, то есть используется, как таймер, он изменит параметр какого-то объекта:

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

Основные состояние

Следует помнить следующие основные состояния: run, beg, pause, save, stop, fast,add,del. Эти состояния используется чаще всего.
Состояния таймеру мы можем передавать с помощью любого игрового объекта который может менять состояние другому объекту.

  • run - состояние которое передаем таймеру для его запуска(если таймер был на паузе то снимет с нее) ( таймер подвязанный к опциям схватит время из опций, если не стоит память)
  • start - состояние которое передаем таймеру для его запуска(если таймер был на паузе то сбросит его и запустит заново)
  • pause,stop - состояние которое передаем таймеру для его остановки
  • save - если заполнены поля "игра и уровень" то таймер запишет свое значение в Options
  • fast - состояние ускоренного хода таймера, ускорение определяется параметром ускорение в настройках таймера, или можно передавать параметром(fast) с помощью другого объекта.
  • add - состояние добавления времени к таймеру, добавляемое время определяется параметром дельта в настройках таймера, или можно передать параметром(delta) с помощью другого объекта.
  • del - состояние вычитания времени из таймера, вычитаемое время определяется параметром дельта в настройках таймера, или можно передать параметром(delta) с помощью другого объекта.
  • value - состояние при котором таймер в своё поле "value" запишет текущее значение в мсек. (Если вызвать до инита объекта, может записать "левое число").

Примеры применений

Благодаря разнообразию состояний таймера есть возможность гибкой их настройки под различные проекты.
Например, можно считать время проведенное на уровне, время между двумя ходами, время затраченное на один ход, также если есть время, то можно высчитать и скорость и расстояние при наличии необходимых данных. Можно привязать игровое время в Flurry и отправлять количество минут проведенных в той или другой локации и т.д.
Предположим, есть необходимость запустить таймер, для этого, с помощью какого-то объекта необходимо задать таймеру состояние run.
Предварительно нужно настроить его в зависимости от того, в каком режиме нужно использовать его.
Если нам необходимо поставить игру на паузу и нужно, чтобы таймер тоже стал на паузу, то нужно указать таймеру состояние pause.
Чтобы продолжить игру нужно опять же указать ему состояние run.
Если указать таймеру состояние beg или init, то таймер сбросится в свое первоначальное значение.
Чтобы оперировать значением таймера, необходимо сохранить его значение. Для этого ему нужно указать ключи: игра, уровень. А в нужный момент, когда нужно, чтобы таймер сохранил свое значение необходимо последовательно ему задать два состояния: сперва нужно поставить на паузу с помощью состояния pause, а потом указать состояние save. В этом случае, таймер сохранит свое текущее значение в параметр, который образует ключ игра/уровень.
Если указать таймеру состояние fast, то он должен начать идти быстрее с коэффициентом ускорения указанным в соответствующем поле. (это бывает необходимо в тех случаях, когда игрок делает подряд необдуманные ходы и нужно показать ему, что нельзя наугад делать ходы, наказать игрока)
Состояниями add либо del можно поощрять игрока за хорошую игру прибавлением времени к таймеру, или наказывать - вычитанием при беспорядочных кликах и т.д.

Timer11.jpg

Результат вьювера:

Timer21.jpg

Проект с таймером и демонстрацией его состояний можно посмотреть: s:\!MOBILE\!!!EditorGames\Wiki_sample\