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]]>