build 表达式

WFF 使用表达式语言来实现以下功能:

  • 使用 TransformGyro 转换外观
  • 通过 Condition 语句实现的条件行为
  • Template 元素中的字符串格式设置

表达式语言是一种脚本语言,其中包含常见的运算符和一系列可用的函数。

表达式可以使用数据源(使用方括号表示),以便您对外部输入(例如当前日期和时间、健康和健身指标,甚至天气)做出响应。

使用表达式时,TransformTemplateCondition 用法之间的主要区别在于,TransformTemplate 要求表达式产生(例如,封闭元素的新位置),而 Condition 要求表达式产生布尔值

例如,Condition 可能会使用:

[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7

此表达式会求值为布尔值,并使用 DAY_OF_WEEK 数据源确定是周末还是非周末。

还支持函数,例如,以下表达式基于 Wear OS 设备加速度计的 x-value,用于在任一方向上将某个值旋转最多 5 度:

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

clamp() 函数可将值限制在两个边界内。

重新评估表达式

表达式的重新评估频率取决于其中使用的各个数据源。例如,[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 表达式仅在新的一天开始时重新求值。不过,使用 [SECOND] 数据源的表达式每秒重新评估一次。

根据表达式结果的变化,重新评估可能会导致场景重新计算和重新渲染。因此,请务必始终使用尽可能不经常重新评估的数据源。例如,如需确定当前是下午,请使用以下命令:

// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200

// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1

表达式中的配置值

除了函数和数据源之外,您还可以使用配置值。例如,如果在 UserConfigurations 中定义了名为 showBackgroundInAfternoonBooleanConfiguration,则可以在表达式中使用它:

[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1