WFF używa języka wyrażeń, aby umożliwić:
- Przekształcanie wyglądu za pomocą
TransformlubGyro - 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 " i &, 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]]>