Creare espressioni

WFF utilizza un linguaggio di espressione per consentire:

  • Trasformare l'aspetto utilizzando Transform o Gyro
  • Comportamento condizionale tramite istruzioni Condition
  • Formattazione delle stringhe negli elementi Template

Il linguaggio delle espressioni è un linguaggio di scripting che contiene gli operatori tipici e una serie di funzioni che possono essere utilizzate.

Le espressioni possono utilizzare origini dati, rappresentate utilizzando parentesi quadre, per reagire a input esterni come data e ora correnti, metriche di salute e fitness o persino il meteo.

Quando utilizzi le espressioni, la differenza principale tra l'utilizzo di Transform, Template e Condition è che Transform e Template richiedono che l'espressione restituisca un valore (ad esempio, la nuova posizione dell'elemento contenitore), mentre Condition richiede che l'espressione restituisca un valore booleano.

Se utilizzato in un elemento Condition, specifica l'espressione come elemento di testo. Racchiudi l'espressione in un elemento CDATA per evitare di utilizzare riferimenti a entità, come " e &.

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

Questo valore viene valutato come booleano e determina se è un fine settimana o meno, utilizzando l'origine dati DAY_OF_WEEK.

Sono supportate anche le funzioni, ad esempio un'espressione per ruotare un valore fino a 5 gradi in entrambe le direzioni, in base all'x-value dell'accelerometro 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 funzione clamp() vincola un valore entro due limiti.

Rivalutazione dell'espressione

La frequenza con cui le espressioni vengono rivalutate dipende dalle origini dati utilizzate. Ad esempio, l'espressione [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 viene rivalutata solo all'inizio di un nuovo giorno. Tuttavia, un'espressione che utilizza l'origine dati [SECOND] viene rivalutata ogni secondo.

La rivalutazione può comportare il ricalcolo e il rendering delle scene in base alla modifica del risultato dell'espressione. Pertanto, è importante utilizzare sempre origini dati che vengono rivalutate il meno frequentemente possibile. Ad esempio, per determinare se è pomeriggio:

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

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

Valori di configurazione nelle espressioni

Oltre a funzioni e origini dati, è possibile utilizzare i valori di configurazione. Ad esempio, se in UserConfigurations è stato definito un BooleanConfiguration denominato showBackgroundInAfternoon, questo può essere utilizzato in un'espressione:

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