Cómo compilar expresiones

WFF usa un lenguaje de expresión para habilitar lo siguiente:

  • Transformación de la apariencia con Transform o Gyro
  • Comportamiento condicional a través de sentencias Condition
  • Formato de cadenas en elementos Template

El lenguaje de expresión es un lenguaje de secuencias que contiene tus operadores típicos y un rango de funciones que se pueden usar.

Las expresiones pueden usar fuentes de datos, representadas con corchetes, para permitirte reaccionar a entradas externas, como la fecha y la hora actuales, las métricas de salud y fitness, o incluso el clima.

Cuando se usan expresiones, la principal diferencia entre el uso de Transform o Template y Condition es que Transform y Template requieren que la expresión genere un valor (por ejemplo, la nueva posición del elemento de cierre), mientras que Condition requiere que la expresión genere un valor booleano.

Por ejemplo, un Condition podría usar lo siguiente:

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

Esto se evalúa como un valor booleano y determina si es un fin de semana o no, con la fuente de datos DAY_OF_WEEK.

También se admiten funciones, por ejemplo, una expresión para rotar un valor hasta 5 grados en cualquier dirección, según el x-value del acelerómetro del dispositivo Wear OS:

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

La función clamp() restringe un valor dentro de dos límites.

Reevaluación de la expresión

La frecuencia con la que se vuelven a evaluar las expresiones depende de las fuentes de datos que se usan en ellas. Por ejemplo, la expresión [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 solo se vuelve a evaluar cuando comienza un nuevo día. Sin embargo, una expresión que usa la fuente de datos [SECOND] se vuelve a evaluar cada segundo.

La reevaluación puede generar que se vuelvan a calcular y renderizar las escenas, según el cambio en el resultado de la expresión. Por lo tanto, es importante usar siempre fuentes de datos que se vuelvan a evaluar con la menor frecuencia posible. Por ejemplo, para determinar si es la tarde, haz lo siguiente:

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

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

Valores de configuración en expresiones

Además de las funciones y las fuentes de datos, se pueden usar valores de configuración. Por ejemplo, si en UserConfigurations se definió un BooleanConfiguration llamado showBackgroundInAfternoon, se puede usar en una expresión:

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