O WFF usa uma linguagem de expressão para:
- Como transformar a aparência usando
Transform
ouGyro
- Comportamento condicional com instruções
Condition
- Formatação de string em elementos
Template
A linguagem de expressão é uma linguagem de script que contém seus operadores típicos e uma variedade de funções que podem ser usadas.
As expressões podem usar fontes de dados, representadas por colchetes, para reagir a entradas externas, como a data e a hora atuais, métricas de saúde e condicionamento físico ou até mesmo o clima.
Ao usar expressões, a principal diferença entre o uso de Transform
ou Template
e
Condition
é que Transform
e Template
exigem que a expressão resulte
em um valor (por exemplo, a nova posição do elemento de contenção), enquanto
Condition
exige que a expressão resulte em um booleano.
Por exemplo, um Condition
pode usar:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
Isso é avaliado como um booleano e determina se é um fim de semana ou não,
usando a fonte de dados DAY_OF_WEEK
.
Funções também são aceitas. Por exemplo, uma expressão para girar um
valor de até 5 graus em qualquer direção, com base no x-value
do acelerômetro do
dispositivo Wear OS:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
A função clamp()
restringe um valor dentro de dois limites.
Reavaliação da expressão
A frequência com que as expressões são reavaliadas depende das fontes de dados usadas nelas. Por exemplo, a expressão [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==
7
] só é reavaliada quando um novo dia começa. No entanto, uma expressão
que usa a fonte de dados [SECOND]
é reavaliada a cada segundo.
A reavaliação pode resultar em recalculos e renderizações da cena com base na mudança no resultado da expressão. Portanto, é importante sempre usar fontes de dados que reavaliem com a menor frequência possível. Por exemplo, para determinar se é tarde:
// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200
// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
Valores de configuração em expressões
Além de funções e fontes de dados, é possível usar valores de configuração. Por
exemplo, se uma BooleanConfiguration
chamada
showBackgroundInAfternoon
for definida em UserConfigurations, ela poderá ser usada em uma expressão:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1