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