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,則可以在運算式中使用:
<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>