WFF używa języka wyrażeń, aby umożliwić:
- Przekształcanie wyglądu za pomocą funkcji
Transform
lubGyro
- Zachowanie warunkowe za pomocą instrukcji
Condition
- Formatowanie ciągu w elementach
Template
Język wyrażeń to język skryptowy zawierający typowe operatory i zakres funkcji, których można używać.
Wyrażenia mogą używać źródeł danych (oznaczonych nawiasami kwadratowymi), aby reagować na zewnętrzne dane wejściowe, takie jak bieżąca data i godzina, dane dotyczące zdrowia i kondycji fizycznej, a nawet pogoda.
W przypadku wyrażeń główna różnica między Transform
lub Template
a Condition
polega na tym, że Transform
i Template
wymagają, aby wyrażenie zwracało wartość (np. nową pozycję elementu otaczającego), podczas gdy Condition
wymaga, aby wyrażenie zwracało wartość logiczną.
Na przykład Condition
może używać:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
Ta wartość jest interpretowana jako wartość logiczna i określa, czy jest to weekend, korzystając ze źródła danych DAY_OF_WEEK
.
Obsługiwane są też funkcje – na przykład wyrażenie do obracania wartości o maksymalnie 5 stopni w dowolnym kierunku na podstawie x-value
akcelerometru urządzenia z Wear OS:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
Funkcja clamp()
ogranicza wartość do dwóch wartości granicznych.
Ponowna ocena wyrażenia
Częstotliwość ponownej oceny wyrażeń zależy od źródeł danych, których używają. Na przykład wyrażenie [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==
7
] jest ponownie oceniane tylko na początku nowego dnia. Jednak wyrażenie, które korzysta ze źródła danych [SECOND]
, jest ponownie oceniane co sekundę.
Ponowne sprawdzenie może spowodować ponowne obliczenie i renderowanie sceny na podstawie zmiany wyniku wyrażenia. Dlatego ważne jest, aby zawsze używać źródeł danych, które aktualizują się jak najrzadziej. Aby na przykład określić, czy jest popołudnie:
// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200
// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
Wartości konfiguracji w wyrażeniach
Oprócz funkcji i źródeł danych możesz używać wartości konfiguracji. Jeśli na przykład w ustawieniu UserConfigurations zdefiniowano element BooleanConfiguration
o nazwie showBackgroundInAfternoon
, można go użyć w wyrażeniu:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1