O WFF usa uma linguagem de expressão para permitir:
- Transformar a aparência usando
TransformouGyro - 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 com colchetes, para permitir que você reaja a entradas externas, como data e 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, 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 inclusão), enquanto Condition exige que a expressão resulte em um booleano.
Quando usado em um elemento Condition, especifique a expressão como um elemento de texto. Encapsule a expressão em um elemento CDATA para evitar a necessidade de usar referências de entidade, como " e &.
<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>
Isso avalia 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 compatíveis. Por exemplo, uma expressão para girar um
valor em até 5 graus em qualquer direção, com base no x-value do acelerômetro do dispositivo
Wear OS:
(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
A função clamp() restringe um valor dentro de dois limites.
Reavaliação de 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 recálculos e renderizações de cena com base na mudança no resultado da expressão. Portanto, é importante usar sempre fontes de dados que reavaliam com a menor frequência possível. Por exemplo, para determinar se é tarde:
<!-- BAD: Re-evaluates every second --> [SECONDS_IN_DAY] > 43200
<!-- Good: Minimizes re-evaluation (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 em UserConfigurations um BooleanConfiguration chamado
showBackgroundInAfternoon foi definido, ele pode ser usado em uma expressão:
<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>