Criar expressões

O WFF usa uma linguagem de expressão para permitir:

  • Transformar a aparência usando Transform ou Gyro
  • 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]]>