Ausdrücke erstellen

WFF verwendet eine Ausdruckssprache, um Folgendes zu ermöglichen:

  • Darstellung mit Transform oder Gyro transformieren
  • Bedingtes Verhalten über Condition-Anweisungen
  • Stringformatierung in Template-Elementen

Die Ausdruckssprache ist eine Scriptsprache, die die üblichen Operatoren und eine Reihe von Funktionen enthält, die verwendet werden können.

In Ausdrücken können Datenquellen verwendet werden, die in eckigen Klammern dargestellt werden. So können Sie auf externe Eingaben wie das aktuelle Datum und die Uhrzeit, Gesundheits- und Fitnessmesswerte oder sogar das Wetter reagieren.

Bei der Verwendung von Ausdrücken besteht der Hauptunterschied zwischen Transform oder Template und Condition darin, dass bei Transform und Template der Ausdruck in einem Wert enden muss (z. B. die neue Position des umschließenden Elements), während bei Condition der Ausdruck in einem booleschen Wert enden muss.

Für eine Condition kann beispielsweise Folgendes verwendet werden:

[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7

Das Ergebnis ist ein boolescher Wert, der anhand der Datenquelle DAY_OF_WEEK bestimmt, ob es sich um ein Wochenende handelt oder nicht.

Auch Funktionen werden unterstützt, z. B. ein Ausdruck zum Drehen eines Werts um bis zu 5 Grad in beide Richtungen, basierend auf der x-value des Wear OS-Geräte-Beschleunigungsmessers:

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

Die Funktion clamp() schränkt einen Wert auf zwei Grenzen ein.

Erneute Überprüfung des Ausdrucks

Die Häufigkeit, mit der Ausdrücke neu bewertet werden, hängt von den verwendeten Datenquellen ab. Beispielsweise wird der Ausdruck [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 nur dann neu ausgewertet, wenn ein neuer Tag beginnt. Ein Ausdruck, der die Datenquelle [SECOND] verwendet, wird jedoch jede Sekunde neu ausgewertet.

Die Neubewertung kann je nach Änderung des Ausdrucksergebnisses zu einer Neuberechnung und einem Neu-Rendering der Szene führen. Daher ist es wichtig, immer Datenquellen zu verwenden, die so selten wie möglich neu bewertet werden. So können Sie beispielsweise prüfen, ob es Nachmittag ist:

// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200

// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1

Konfigurationswerte in Ausdrücken

Neben Funktionen und Datenquellen können auch Konfigurationswerte verwendet werden. Wenn beispielsweise in den UserConfigurations eine BooleanConfiguration mit dem Namen showBackgroundInAfternoon definiert wurde, kann diese in einem Ausdruck verwendet werden:

[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1