Créer des expressions

WFF utilise un langage d'expression pour permettre:

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

Le langage d'expression est un langage de script qui contient vos opérateurs standards et une gamme de fonctions pouvant être utilisées.

Les expressions peuvent utiliser des sources de données (représentées par des crochets) pour vous permettre de réagir aux entrées externes telles que la date et l'heure actuelles, les indicateurs 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 ou Template et celle de Condition est que Transform et Template exigent que l'expression aboutisse à une valeur (par exemple, la nouvelle position de l'élément englobant), tandis que Condition exige que l'expression aboutisse à une valeur booléenne.

Par exemple, un Condition peut utiliser:

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

Cette valeur est évaluée à un booléen 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/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

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

Réévaluation de l'expression

La fréquence à laquelle les expressions sont réévaluées dépend des sources de données utilisées. Par exemple, l'expression [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 n'est réévaluée que lorsqu'un nouveau jour commence. Toutefois, une expression qui utilise la source de données [SECOND] est réévaluée toutes les secondes.

La réévaluation peut entraîner un nouveau calcul et un nouveau rendu de la scène, en fonction du changement du résultat de l'expression. Il est donc important d'utiliser toujours des sources de données qui effectuent des réévaluations aussi rarement que possible. Par exemple, pour déterminer s'il est l'après-midi:

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

// Good - limits re-evaluation frequency (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:

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