WFF utilizza un linguaggio di espressione per abilitare:
- Trasformare l'aspetto utilizzando
Transform
oGyro
- 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