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

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]]>