Criar expressões

O WFF usa uma linguagem de expressão para:

  • Como 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 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