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