WFF использует язык выражений, чтобы:
- Изменение внешнего вида с помощью
TransformилиGyro. - Условное поведение с помощью операторов
Condition - Форматирование строк в элементах
Template
Язык выражений – это язык сценариев, который содержит стандартные операторы и набор функций.
Выражения могут использовать источники данных, представленные в квадратных скобках, чтобы реагировать на внешние входные данные, такие как текущая дата и время, показатели здоровья и физической формы или даже погода.
При использовании выражений основное различие между Transform, Template и Condition заключается в том, что Transform и Template требуют, чтобы выражение возвращало значение (например, новую позицию элемента, в который вложены другие элементы), а Condition требует, чтобы выражение возвращало логическое значение.
Если вы используете элемент Condition, укажите выражение в виде текстового элемента. Чтобы не использовать ссылки на объекты, например " и &, заключите выражение в элемент CDATA.
<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>
Это логическое значение, которое определяет, является ли день выходным, на основе источника данных DAY_OF_WEEK.
Функции также поддерживаются. Например, можно создать выражение для поворота значения на угол до 5 градусов в любом направлении на основе параметра x-value акселерометра устройства Wear OS:
(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
Функция clamp() ограничивает значение двумя границами.
Повторная оценка выражения
Частота переоценки выражений зависит от источников данных, используемых в них. Например, выражение
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
переоценивается только при наступлении нового дня. Однако выражение, в котором используется источник данных [SECOND], переоценивается каждую секунду.
Повторная оценка может привести к перерасчету сцены и повторной отрисовке на основе изменения результата выражения. Поэтому важно всегда использовать источники данных, которые обновляются как можно реже. Например, чтобы определить, сейчас день или нет, сделайте следующее:
<!-- BAD: Re-evaluates every second --> [SECONDS_IN_DAY] > 43200
<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) --> [AMPM_STATE] == 1
Значения конфигурации в выражениях
Помимо функций и источников данных можно использовать значения конфигурации. Например, если в UserConfigurations определена переменная BooleanConfiguration с именем showBackgroundInAfternoon, ее можно использовать в выражении:
<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>