Creare espressioni

WFF utilizza un linguaggio di espressione per abilitare:

  • Trasformare l'aspetto utilizzando Transform o Gyro
  • Comportamento condizionale tramite istruzioni Condition
  • Formattazione di 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 le origini dati, rappresentate mediante parentesi quadre, per farti reagire a input esterni come la data e l'ora correnti, le metriche di salute e fitness o persino il meteo.

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

Ad esempio, un Condition potrebbe utilizzare:

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

Il risultato è un valore booleano e determina se si tratta di 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 al valore x-value dell'accelerometro del dispositivo Wear OS:

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

La funzione clamp() limita 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 nuovo rendering della scena, in base alla variazione del risultato dell'espressione. Pertanto, è importante utilizzare sempre le origini dati che si rivalutano il meno frequentemente possibile. Ad esempio, per determinare se è pomeriggio:

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

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

Valori di configurazione nelle espressioni

Oltre alle funzioni e alle 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:

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