WFF использует язык выражений, позволяющий:
- Трансформация внешнего вида с помощью
Transform
илиGyro
- Условное поведение с помощью операторов
Condition
- Форматирование строк в элементах
Template
Язык выражений — это язык сценариев, содержащий типичные операторы и ряд функций, которые можно использовать.
Выражения могут использовать источники данных , представленные с помощью квадратных скобок, чтобы вы могли реагировать на внешние входные данные, такие как текущая дата и время, показатели здоровья и физической формы или даже погода.
При использовании выражений основное различие между использованием Transform
или Template
и Condition
заключается в том, что Transform
и Template
требуют, чтобы выражение приводило к значению (например, новой позиции охватывающего элемента), тогда как Condition
требует, чтобы выражение приводило к логическому значению .
Например, Condition
может использовать:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
Это вычисляется как логическое значение и определяет, являются ли сегодня выходные дни или нет, используя источник данных DAY_OF_WEEK
.
Также поддерживаются функции , например, выражение для поворота значения на угол до 5 градусов в любом направлении, основанное на x-value
акселерометра устройства Wear OS:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*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 - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
Значения конфигурации в выражениях
В дополнение к функциям и источникам данных могут использоваться значения конфигурации. Например, если в UserConfigurations определена BooleanConfiguration
с именем showBackgroundInAfternoon
, это можно использовать в выражении:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1