WFF 使用表达式语言来实现以下功能:
- 使用
Transform或Gyro转换外观 - 通过
Condition语句实现条件行为 Template元素中的字符串格式设置
表达式语言是一种脚本语言,其中包含常用的运算符和一系列可使用的函数。
表达式可以使用数据源(用方括号表示),以便您对外部输入做出反应,例如当前日期和时间、健康和健身指标,甚至天气。
使用表达式时,Transform、Template 和 Condition 的主要区别在于,Transform 和 Template 要求表达式的结果为值(例如,封装元素的新位置),而 Condition 要求表达式的结果为布尔值。
在 Condition 元素中使用时,请将表达式指定为文本元素。将表达式封装在 CDATA 元素中,以避免需要使用实体引用(例如 " 和 &)。
<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>
此表达式会评估为布尔值,并使用 DAY_OF_WEEK 数据源确定是否为周末。
系统还支持函数,例如,以下表达式基于 Wear OS 设备加速度计的 x-value,用于在任一方向上将某个值旋转最多 5 度:
(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5.0/90.0)*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: Minimizes re-evaluation (1 = PM, 0 = AM) --> [AMPM_STATE] == 1
表达式中的配置值
除了函数和数据源之外,还可以使用配置值。例如,如果在 UserConfigurations 中定义了名为 showBackgroundInAfternoon 的 BooleanConfiguration,则可以在表达式中使用该 BooleanConfiguration:
<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>