Ausdrücke erstellen

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

  • Erscheinungsbild mit Transform oder Gyro transformieren
  • Bedingtes Verhalten durch 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 durch eckige Klammern dargestellt werden. So können Sie auf externe Eingaben wie das aktuelle Datum und die aktuelle Uhrzeit, Gesundheits- und Fitnessmesswerte oder sogar das Wetter reagieren.

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

Wenn Sie den Ausdruck in einem Condition-Element verwenden, geben Sie ihn als Textelement an. Schließen Sie den Ausdruck in ein CDATA-Element ein, damit Sie keine Entitätsreferenzen wie " und & verwenden müssen.

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

Dieser Ausdruck wird zu einem booleschen Wert ausgewertet und bestimmt anhand der Datenquelle DAY_OF_WEEK, ob es sich um ein Wochenende handelt.

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

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

Die Funktion clamp() beschränkt einen Wert auf einen Bereich zwischen zwei Grenzen.

Ausdruck neu auswerten

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

Eine Neuberechnung kann dazu führen, dass Szenen neu berechnet und gerendert werden, je nachdem, wie sich das Ergebnis des Ausdrucks ändert. Daher ist es wichtig, immer Datenquellen zu verwenden, die so selten wie möglich neu ausgewertet werden. So können Sie beispielsweise feststellen, ob es Nachmittag ist:

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

<!-- Good: Minimizes re-evaluation (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:

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