WFF 使用表达式语言来实现以下功能:
- 使用
Transform
或Gyro
转换外观 - 通过
Condition
语句实现的条件行为 Template
元素中的字符串格式设置
表达式语言是一种脚本语言,其中包含常见的运算符和一系列可用的函数。
表达式可以使用数据源(使用方括号表示),以便您对外部输入(例如当前日期和时间、健康和健身指标,甚至天气)做出响应。
使用表达式时,Transform
或 Template
与 Condition
用法之间的主要区别在于,Transform
和 Template
要求表达式产生值(例如,封闭元素的新位置),而 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 中定义了名为 showBackgroundInAfternoon
的 BooleanConfiguration
,则可以在表达式中使用它:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1