式を構築する

WFF は、式言語を使用して次のことを可能にします。

  • Transform または Gyro を使用して外観を変換する
  • Condition ステートメントによる条件付き動作
  • Template 要素の文字列の書式設定

式言語は、一般的な演算子と使用可能なさまざまな関数を含むスクリプト言語です。

式では、角かっこで表されるデータソースを使用して、現在の日時、健康とフィットネスの指標、天気などの外部入力に対応できます。

式を使用する場合、TransformTemplateCondition の主な違いは、TransformTemplate では式の結果が(囲み要素の新しい位置など)になる必要があるのに対し、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() 関数は、値を 2 つの境界内に制限します。

式の再評価

式が再評価される頻度は、式で使用されるデータソースによって異なります。たとえば、[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 式は新しい日が始まったときにのみ再評価されます。ただし、[SECOND] データソースを使用する式は 1 秒ごとに再評価されます。

再評価により、式の結果の変更に基づいて、シーンの再計算と再レンダリングが行われることがあります。そのため、できるだけ再評価の頻度が低いデータソースを常に使用することが重要です。たとえば、午後かどうかを判断するには:

<!-- BAD: Re-evaluates every second -->
[SECONDS_IN_DAY] > 43200

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

式内の構成値

関数とデータソースに加えて、構成値を使用できます。たとえば、UserConfigurationsshowBackgroundInAfternoon という名前の BooleanConfiguration が定義されている場合、式で使用できます。

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>