Строить выражения

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