构建表达式

WFF 使用表达式语言来启用

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

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

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

使用表达式时,TransformTemplate 的用法与 Condition 的用法主要区别在于,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