Tworzenie wyrażeń

WFF używa języka wyrażeń, aby umożliwić:

  • Przekształcanie wyglądu za pomocą Transform lub Gyro
  • Zachowanie warunkowe za pomocą instrukcji Condition
  • Formatowanie ciągów w elementach Template

Język wyrażeń to język skryptowy, który zawiera typowe operatory i szereg funkcji, których można używać.

Wyrażenia mogą korzystać ze źródeł danych – reprezentowanych za pomocą nawiasów kwadratowych – aby reagować na dane wejściowe z zewnątrz, takie jak bieżąca data i godzina, wskaźniki zdrowia i aktywności fizycznej, a nawet pogoda.

Gdy używasz wyrażeń, główna różnica między użyciem Transform, Template i Condition polega na tym, że Transform i Template wymagają, aby wyrażenie zwracało wartość (np. nową pozycję elementu zawierającego), a Condition wymaga, aby wyrażenie zwracało wartość logiczną.

Jeśli używasz go w elemencie Condition, podaj wyrażenie jako element tekstowy. Aby uniknąć konieczności używania odwołań do jednostek, takich jak "&, umieść wyrażenie w elemencie CDATA.

<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>

Wartość logiczna określająca, czy jest weekend, na podstawie źródła danych DAY_OF_WEEK.

Obsługiwane są też funkcje, np. wyrażenie do obracania wartości o maksymalnie 5 stopni w dowolnym kierunku na podstawie x-value akcelerometru urządzenia z Wear OS:

(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

Funkcja clamp() ogranicza wartość do dwóch granic.

Ponowna ocena wyrażenia

Częstotliwość ponownej oceny wyrażeń zależy od użytych w nich źródeł danych. Na przykład wyrażenie [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 jest ponownie obliczane tylko wtedy, gdy zaczyna się nowy dzień. Wyrażenie, które korzysta ze źródła danych [SECOND], jest jednak ponownie obliczane co sekundę.

Ponowna ocena może spowodować ponowne obliczenie sceny i ponowne renderowanie na podstawie zmiany wyniku wyrażenia. Dlatego ważne jest, aby zawsze używać źródeł danych, które są ponownie oceniane jak najrzadziej. Na przykład, aby sprawdzić, czy jest popołudnie:

<!-- BAD: Re-evaluates every second -->
[SECONDS_IN_DAY] > 43200

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

Wartości konfiguracji w wyrażeniach

Oprócz funkcji i źródeł danych można używać wartości konfiguracji. Jeśli na przykład w sekcji UserConfigurations zdefiniowano BooleanConfiguration o nazwie showBackgroundInAfternoon, można go użyć w wyrażeniu:

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>