Tworzenie wyrażeń

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

  • Przekształcanie wyglądu za pomocą funkcji Transform lub Gyro
  • 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