WFF usa un lenguaje de expresión para habilitar lo siguiente:
- Transformación de la apariencia con
TransformoGyro - Comportamiento condicional a través de instrucciones
Condition - Formato de cadenas en elementos
Template
El lenguaje de expresiones es un lenguaje de secuencias que contiene los operadores típicos y una variedad 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 hora actuales, las métricas de salud y estado físico, o incluso el clima.
Cuando se usan expresiones, la principal diferencia entre el uso de Transform, Template y Condition es que Transform y Template requieren que la expresión genere un valor (por ejemplo, la nueva posición del elemento envolvente), mientras que Condition requiere que la expresión genere un valor booleano.
Cuando se usa en un elemento Condition, especifica la expresión como un elemento de texto. Encierra la expresión en un elemento CDATA para evitar la necesidad de usar referencias a entidades, como " y &.
<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>
Esta fórmula se evalúa como un valor booleano y determina si es fin de semana o no, con la fuente de datos DAY_OF_WEEK.
También se admiten las 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.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
La función clamp() limita 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 nuevos cálculos y renderizaciones de la escena, 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:
<!-- BAD: Re-evaluates every second --> [SECONDS_IN_DAY] > 43200
<!-- Good: Minimizes re-evaluation (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:
<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>