Créer des expressions

WFF utilise un langage d'expression pour permettre :

  • Transformer l'apparence à l'aide de Transform ou Gyro
  • Comportement conditionnel via les instructions Condition
  • Mise en forme des chaînes dans les éléments Template

Le langage d'expression est un langage de script qui contient vos opérateurs habituels et une gamme de fonctions utilisables.

Les expressions peuvent utiliser des sources de données (représentées par des crochets) pour vous permettre de réagir à des entrées externes telles que la date et l'heure actuelles, les métriques de santé et de forme physique, ou même la météo.

Lorsque vous utilisez des expressions, la principale différence entre l'utilisation de Transform, Template et Condition est que Transform et Template exigent que l'expression génère une valeur (par exemple, la nouvelle position de l'élément englobant), tandis que Condition exige que l'expression génère un booléen.

Lorsqu'elle est utilisée dans un élément Condition, spécifiez l'expression en tant qu'élément de texte. Encapsulez l'expression dans un élément CDATA pour éviter d'avoir à utiliser des références d'entité, telles que " et &.

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

Cette expression renvoie une valeur booléenne et détermine s'il s'agit d'un week-end ou non, à l'aide de la source de données DAY_OF_WEEK.

Les fonctions sont également acceptées. Par exemple, une expression permettant de faire pivoter une valeur de jusqu'à 5 degrés dans les deux sens, en fonction de la x-value de l'accéléromètre de l'appareil Wear OS :

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

La fonction clamp() contraint une valeur entre deux limites.

Réévaluation des expressions

La fréquence à laquelle les expressions sont réévaluées dépend des sources de données qui y sont utilisées. Par exemple, l'expression [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 n'est réévaluée qu'au début d'une nouvelle journée. Toutefois, une expression qui utilise la source de données [SECOND] est réévaluée toutes les secondes.

Une réévaluation peut entraîner un nouveau calcul et un nouveau rendu de la scène, en fonction de la modification du résultat de l'expression. Il est donc important d'utiliser systématiquement des sources de données qui réévaluent les données le moins souvent possible. Par exemple, pour déterminer s'il s'agit de l'après-midi :

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

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

Valeurs de configuration dans les expressions

En plus des fonctions et des sources de données, vous pouvez utiliser des valeurs de configuration. Par exemple, si un BooleanConfiguration nommé showBackgroundInAfternoon a été défini dans UserConfigurations, il peut être utilisé dans une expression :

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